roam-code 13.6.1__tar.gz → 13.7.0__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 (2421) hide show
  1. roam_code-13.7.0/PKG-INFO +1166 -0
  2. roam_code-13.7.0/README.md +1099 -0
  3. roam_code-13.7.0/pyproject.toml +206 -0
  4. roam_code-13.7.0/src/roam/_glob_match.py +88 -0
  5. roam_code-13.7.0/src/roam/agent_opt.py +1268 -0
  6. roam_code-13.7.0/src/roam/agents_md/__init__.py +55 -0
  7. roam_code-13.7.0/src/roam/agents_md/generator.py +1408 -0
  8. roam_code-13.7.0/src/roam/analysis/effects.py +793 -0
  9. roam_code-13.7.0/src/roam/analysis/taint.py +731 -0
  10. roam_code-13.7.0/src/roam/api.py +239 -0
  11. roam_code-13.7.0/src/roam/ask/recipes.py +848 -0
  12. roam_code-13.7.0/src/roam/ask/runner.py +222 -0
  13. roam_code-13.7.0/src/roam/ask/workflow.py +37 -0
  14. roam_code-13.7.0/src/roam/atomic_io.py +222 -0
  15. roam_code-13.7.0/src/roam/attest/cga.py +746 -0
  16. roam_code-13.7.0/src/roam/attest/emit_vsa.py +459 -0
  17. roam_code-13.7.0/src/roam/attest/vsa.py +472 -0
  18. roam_code-13.7.0/src/roam/bridges/base.py +100 -0
  19. roam_code-13.7.0/src/roam/bridges/bridge_config.py +228 -0
  20. roam_code-13.7.0/src/roam/bridges/bridge_django.py +786 -0
  21. roam_code-13.7.0/src/roam/bridges/bridge_protobuf.py +347 -0
  22. roam_code-13.7.0/src/roam/bridges/bridge_rest_api.py +260 -0
  23. roam_code-13.7.0/src/roam/bridges/bridge_template.py +248 -0
  24. roam_code-13.7.0/src/roam/bridges/registry.py +90 -0
  25. roam_code-13.7.0/src/roam/capability.py +280 -0
  26. roam_code-13.7.0/src/roam/catalog/_shared.py +238 -0
  27. roam_code-13.7.0/src/roam/catalog/clones_rename_invariant.py +506 -0
  28. roam_code-13.7.0/src/roam/catalog/detectors.py +5258 -0
  29. roam_code-13.7.0/src/roam/catalog/js_idioms.py +384 -0
  30. roam_code-13.7.0/src/roam/catalog/python_idioms.py +1886 -0
  31. roam_code-13.7.0/src/roam/catalog/smells.py +3669 -0
  32. roam_code-13.7.0/src/roam/catalog/type_switch.py +529 -0
  33. roam_code-13.7.0/src/roam/catalog/versions.py +60 -0
  34. roam_code-13.7.0/src/roam/cli.py +1821 -0
  35. roam_code-13.7.0/src/roam/command_advice.py +632 -0
  36. roam_code-13.7.0/src/roam/commands/_yaml_loader.py +702 -0
  37. roam_code-13.7.0/src/roam/commands/actor_helpers.py +225 -0
  38. roam_code-13.7.0/src/roam/commands/batch_search_core.py +92 -0
  39. roam_code-13.7.0/src/roam/commands/boundary_helpers.py +34 -0
  40. roam_code-13.7.0/src/roam/commands/cmd_adrs.py +584 -0
  41. roam_code-13.7.0/src/roam/commands/cmd_adversarial.py +1289 -0
  42. roam_code-13.7.0/src/roam/commands/cmd_affected.py +476 -0
  43. roam_code-13.7.0/src/roam/commands/cmd_affected_tests.py +585 -0
  44. roam_code-13.7.0/src/roam/commands/cmd_agent_export.py +1019 -0
  45. roam_code-13.7.0/src/roam/commands/cmd_agents_md.py +239 -0
  46. roam_code-13.7.0/src/roam/commands/cmd_ai_ratio.py +864 -0
  47. roam_code-13.7.0/src/roam/commands/cmd_alerts.py +1538 -0
  48. roam_code-13.7.0/src/roam/commands/cmd_api_changes.py +891 -0
  49. roam_code-13.7.0/src/roam/commands/cmd_api_drift.py +1051 -0
  50. roam_code-13.7.0/src/roam/commands/cmd_article_12_check.py +446 -0
  51. roam_code-13.7.0/src/roam/commands/cmd_ask.py +367 -0
  52. roam_code-13.7.0/src/roam/commands/cmd_attest.py +1635 -0
  53. roam_code-13.7.0/src/roam/commands/cmd_audit_trail_conformance.py +969 -0
  54. roam_code-13.7.0/src/roam/commands/cmd_audit_trail_export.py +863 -0
  55. roam_code-13.7.0/src/roam/commands/cmd_audit_trail_verify.py +1026 -0
  56. roam_code-13.7.0/src/roam/commands/cmd_auth_gaps.py +1983 -0
  57. roam_code-13.7.0/src/roam/commands/cmd_batch_search.py +179 -0
  58. roam_code-13.7.0/src/roam/commands/cmd_boundary.py +704 -0
  59. roam_code-13.7.0/src/roam/commands/cmd_brief.py +861 -0
  60. roam_code-13.7.0/src/roam/commands/cmd_budget.py +575 -0
  61. roam_code-13.7.0/src/roam/commands/cmd_bus_factor.py +1444 -0
  62. roam_code-13.7.0/src/roam/commands/cmd_causal_graph.py +316 -0
  63. roam_code-13.7.0/src/roam/commands/cmd_cga.py +994 -0
  64. roam_code-13.7.0/src/roam/commands/cmd_changelog.py +198 -0
  65. roam_code-13.7.0/src/roam/commands/cmd_check_rules.py +1093 -0
  66. roam_code-13.7.0/src/roam/commands/cmd_ci_setup.py +898 -0
  67. roam_code-13.7.0/src/roam/commands/cmd_clones.py +955 -0
  68. roam_code-13.7.0/src/roam/commands/cmd_closure.py +599 -0
  69. roam_code-13.7.0/src/roam/commands/cmd_clusters.py +598 -0
  70. roam_code-13.7.0/src/roam/commands/cmd_compatibility.py +565 -0
  71. roam_code-13.7.0/src/roam/commands/cmd_compile.py +691 -0
  72. roam_code-13.7.0/src/roam/commands/cmd_compiler_health.py +718 -0
  73. roam_code-13.7.0/src/roam/commands/cmd_complexity.py +1077 -0
  74. roam_code-13.7.0/src/roam/commands/cmd_config.py +785 -0
  75. roam_code-13.7.0/src/roam/commands/cmd_context.py +1773 -0
  76. roam_code-13.7.0/src/roam/commands/cmd_conventions.py +1314 -0
  77. roam_code-13.7.0/src/roam/commands/cmd_coupling.py +654 -0
  78. roam_code-13.7.0/src/roam/commands/cmd_critique.py +1345 -0
  79. roam_code-13.7.0/src/roam/commands/cmd_cut.py +561 -0
  80. roam_code-13.7.0/src/roam/commands/cmd_cycles.py +135 -0
  81. roam_code-13.7.0/src/roam/commands/cmd_dark_matter.py +936 -0
  82. roam_code-13.7.0/src/roam/commands/cmd_dashboard.py +814 -0
  83. roam_code-13.7.0/src/roam/commands/cmd_db_check.py +215 -0
  84. roam_code-13.7.0/src/roam/commands/cmd_dead.py +3208 -0
  85. roam_code-13.7.0/src/roam/commands/cmd_debt.py +1001 -0
  86. roam_code-13.7.0/src/roam/commands/cmd_deps.py +555 -0
  87. roam_code-13.7.0/src/roam/commands/cmd_dev_profile.py +606 -0
  88. roam_code-13.7.0/src/roam/commands/cmd_diagnose.py +1209 -0
  89. roam_code-13.7.0/src/roam/commands/cmd_doctor.py +2455 -0
  90. roam_code-13.7.0/src/roam/commands/cmd_dogfood.py +345 -0
  91. roam_code-13.7.0/src/roam/commands/cmd_drift.py +469 -0
  92. roam_code-13.7.0/src/roam/commands/cmd_duplicates.py +1421 -0
  93. roam_code-13.7.0/src/roam/commands/cmd_effects.py +405 -0
  94. roam_code-13.7.0/src/roam/commands/cmd_entry_points.py +413 -0
  95. roam_code-13.7.0/src/roam/commands/cmd_eval_retrieve.py +366 -0
  96. roam_code-13.7.0/src/roam/commands/cmd_exit_codes.py +81 -0
  97. roam_code-13.7.0/src/roam/commands/cmd_explain_command.py +331 -0
  98. roam_code-13.7.0/src/roam/commands/cmd_fan.py +1328 -0
  99. roam_code-13.7.0/src/roam/commands/cmd_fitness.py +1266 -0
  100. roam_code-13.7.0/src/roam/commands/cmd_flag_dead.py +686 -0
  101. roam_code-13.7.0/src/roam/commands/cmd_fleet.py +494 -0
  102. roam_code-13.7.0/src/roam/commands/cmd_fn_coupling.py +646 -0
  103. roam_code-13.7.0/src/roam/commands/cmd_forecast.py +589 -0
  104. roam_code-13.7.0/src/roam/commands/cmd_guard.py +629 -0
  105. roam_code-13.7.0/src/roam/commands/cmd_guard_pr.py +442 -0
  106. roam_code-13.7.0/src/roam/commands/cmd_health.py +2649 -0
  107. roam_code-13.7.0/src/roam/commands/cmd_hooks.py +1162 -0
  108. roam_code-13.7.0/src/roam/commands/cmd_hotspots.py +1460 -0
  109. roam_code-13.7.0/src/roam/commands/cmd_idempotency.py +210 -0
  110. roam_code-13.7.0/src/roam/commands/cmd_impact.py +1332 -0
  111. roam_code-13.7.0/src/roam/commands/cmd_index.py +176 -0
  112. roam_code-13.7.0/src/roam/commands/cmd_index_bundle.py +487 -0
  113. roam_code-13.7.0/src/roam/commands/cmd_index_stats.py +141 -0
  114. roam_code-13.7.0/src/roam/commands/cmd_ingest_trace.py +256 -0
  115. roam_code-13.7.0/src/roam/commands/cmd_intent.py +556 -0
  116. roam_code-13.7.0/src/roam/commands/cmd_invariants.py +682 -0
  117. roam_code-13.7.0/src/roam/commands/cmd_laws.py +904 -0
  118. roam_code-13.7.0/src/roam/commands/cmd_lease.py +720 -0
  119. roam_code-13.7.0/src/roam/commands/cmd_lsp.py +1136 -0
  120. roam_code-13.7.0/src/roam/commands/cmd_magic_numbers.py +746 -0
  121. roam_code-13.7.0/src/roam/commands/cmd_map.py +327 -0
  122. roam_code-13.7.0/src/roam/commands/cmd_math.py +917 -0
  123. roam_code-13.7.0/src/roam/commands/cmd_mcp.py +171 -0
  124. roam_code-13.7.0/src/roam/commands/cmd_mcp_setup.py +361 -0
  125. roam_code-13.7.0/src/roam/commands/cmd_mcp_status.py +192 -0
  126. roam_code-13.7.0/src/roam/commands/cmd_metrics.py +896 -0
  127. roam_code-13.7.0/src/roam/commands/cmd_missing_index.py +2135 -0
  128. roam_code-13.7.0/src/roam/commands/cmd_mode.py +419 -0
  129. roam_code-13.7.0/src/roam/commands/cmd_mutate.py +539 -0
  130. roam_code-13.7.0/src/roam/commands/cmd_n1.py +2454 -0
  131. roam_code-13.7.0/src/roam/commands/cmd_next.py +761 -0
  132. roam_code-13.7.0/src/roam/commands/cmd_oracle.py +756 -0
  133. roam_code-13.7.0/src/roam/commands/cmd_orchestrate.py +441 -0
  134. roam_code-13.7.0/src/roam/commands/cmd_orphan_imports.py +1281 -0
  135. roam_code-13.7.0/src/roam/commands/cmd_owner.py +425 -0
  136. roam_code-13.7.0/src/roam/commands/cmd_partition.py +1174 -0
  137. roam_code-13.7.0/src/roam/commands/cmd_path_coverage.py +654 -0
  138. roam_code-13.7.0/src/roam/commands/cmd_patterns.py +806 -0
  139. roam_code-13.7.0/src/roam/commands/cmd_permit.py +793 -0
  140. roam_code-13.7.0/src/roam/commands/cmd_plan.py +831 -0
  141. roam_code-13.7.0/src/roam/commands/cmd_plan_refactor.py +520 -0
  142. roam_code-13.7.0/src/roam/commands/cmd_pr_analyze.py +2662 -0
  143. roam_code-13.7.0/src/roam/commands/cmd_pr_bundle.py +3676 -0
  144. roam_code-13.7.0/src/roam/commands/cmd_pr_diff.py +333 -0
  145. roam_code-13.7.0/src/roam/commands/cmd_pr_replay.py +4831 -0
  146. roam_code-13.7.0/src/roam/commands/cmd_pr_risk.py +2089 -0
  147. roam_code-13.7.0/src/roam/commands/cmd_preflight.py +1655 -0
  148. roam_code-13.7.0/src/roam/commands/cmd_py_modern.py +296 -0
  149. roam_code-13.7.0/src/roam/commands/cmd_py_types.py +473 -0
  150. roam_code-13.7.0/src/roam/commands/cmd_recipes.py +68 -0
  151. roam_code-13.7.0/src/roam/commands/cmd_recommend.py +247 -0
  152. roam_code-13.7.0/src/roam/commands/cmd_refs_text.py +615 -0
  153. roam_code-13.7.0/src/roam/commands/cmd_repair_siblings.py +757 -0
  154. roam_code-13.7.0/src/roam/commands/cmd_replay.py +485 -0
  155. roam_code-13.7.0/src/roam/commands/cmd_reset.py +186 -0
  156. roam_code-13.7.0/src/roam/commands/cmd_retrieve.py +809 -0
  157. roam_code-13.7.0/src/roam/commands/cmd_risk.py +661 -0
  158. roam_code-13.7.0/src/roam/commands/cmd_rules_validate.py +506 -0
  159. roam_code-13.7.0/src/roam/commands/cmd_runs.py +1516 -0
  160. roam_code-13.7.0/src/roam/commands/cmd_sbom.py +1013 -0
  161. roam_code-13.7.0/src/roam/commands/cmd_search.py +1176 -0
  162. roam_code-13.7.0/src/roam/commands/cmd_search_semantic.py +373 -0
  163. roam_code-13.7.0/src/roam/commands/cmd_secrets.py +751 -0
  164. roam_code-13.7.0/src/roam/commands/cmd_sibling_patch.py +367 -0
  165. roam_code-13.7.0/src/roam/commands/cmd_side_effects.py +237 -0
  166. roam_code-13.7.0/src/roam/commands/cmd_simulate.py +724 -0
  167. roam_code-13.7.0/src/roam/commands/cmd_simulate_departure.py +586 -0
  168. roam_code-13.7.0/src/roam/commands/cmd_sketch.py +241 -0
  169. roam_code-13.7.0/src/roam/commands/cmd_smells.py +1351 -0
  170. roam_code-13.7.0/src/roam/commands/cmd_stale_refs.py +3818 -0
  171. roam_code-13.7.0/src/roam/commands/cmd_stats.py +149 -0
  172. roam_code-13.7.0/src/roam/commands/cmd_suggest_reviewers.py +446 -0
  173. roam_code-13.7.0/src/roam/commands/cmd_surface.py +316 -0
  174. roam_code-13.7.0/src/roam/commands/cmd_syntax_check.py +324 -0
  175. roam_code-13.7.0/src/roam/commands/cmd_taint.py +1174 -0
  176. roam_code-13.7.0/src/roam/commands/cmd_telemetry.py +95 -0
  177. roam_code-13.7.0/src/roam/commands/cmd_test_gaps.py +633 -0
  178. roam_code-13.7.0/src/roam/commands/cmd_test_hermeticity.py +607 -0
  179. roam_code-13.7.0/src/roam/commands/cmd_test_impact.py +234 -0
  180. roam_code-13.7.0/src/roam/commands/cmd_timeline.py +162 -0
  181. roam_code-13.7.0/src/roam/commands/cmd_tour.py +653 -0
  182. roam_code-13.7.0/src/roam/commands/cmd_trends.py +1813 -0
  183. roam_code-13.7.0/src/roam/commands/cmd_triage.py +365 -0
  184. roam_code-13.7.0/src/roam/commands/cmd_tx_boundaries.py +294 -0
  185. roam_code-13.7.0/src/roam/commands/cmd_understand.py +1542 -0
  186. roam_code-13.7.0/src/roam/commands/cmd_uses.py +684 -0
  187. roam_code-13.7.0/src/roam/commands/cmd_verify.py +5179 -0
  188. roam_code-13.7.0/src/roam/commands/cmd_verify_imports.py +1427 -0
  189. roam_code-13.7.0/src/roam/commands/cmd_vibe_check.py +2406 -0
  190. roam_code-13.7.0/src/roam/commands/cmd_visualize.py +531 -0
  191. roam_code-13.7.0/src/roam/commands/cmd_vuln_map.py +170 -0
  192. roam_code-13.7.0/src/roam/commands/cmd_vuln_reach.py +844 -0
  193. roam_code-13.7.0/src/roam/commands/cmd_vulns.py +1460 -0
  194. roam_code-13.7.0/src/roam/commands/cmd_watch.py +866 -0
  195. roam_code-13.7.0/src/roam/commands/cmd_why.py +408 -0
  196. roam_code-13.7.0/src/roam/commands/cmd_why_fail.py +194 -0
  197. roam_code-13.7.0/src/roam/commands/cmd_workflow.py +249 -0
  198. roam_code-13.7.0/src/roam/commands/cmd_ws.py +1039 -0
  199. roam_code-13.7.0/src/roam/commands/codeowners_helpers.py +109 -0
  200. roam_code-13.7.0/src/roam/commands/context_helpers.py +1540 -0
  201. roam_code-13.7.0/src/roam/commands/conventions_helper.py +462 -0
  202. roam_code-13.7.0/src/roam/commands/conventions_primitives.py +530 -0
  203. roam_code-13.7.0/src/roam/commands/finding_suppress.py +487 -0
  204. roam_code-13.7.0/src/roam/commands/git_helpers.py +123 -0
  205. roam_code-13.7.0/src/roam/commands/grep_helpers.py +582 -0
  206. roam_code-13.7.0/src/roam/commands/metrics_history.py +366 -0
  207. roam_code-13.7.0/src/roam/commands/pr_analyze/audit_trail.py +153 -0
  208. roam_code-13.7.0/src/roam/commands/pr_analyze/cache.py +191 -0
  209. roam_code-13.7.0/src/roam/commands/pr_analyze/rules.py +255 -0
  210. roam_code-13.7.0/src/roam/commands/resolve.py +812 -0
  211. roam_code-13.7.0/src/roam/commands/stale_index.py +123 -0
  212. roam_code-13.7.0/src/roam/commands/stale_refs_hints.py +414 -0
  213. roam_code-13.7.0/src/roam/commands/suppression.py +553 -0
  214. roam_code-13.7.0/src/roam/competitor_site_data.py +2167 -0
  215. roam_code-13.7.0/src/roam/constitution/loader.py +1396 -0
  216. roam_code-13.7.0/src/roam/coverage_reports.py +491 -0
  217. roam_code-13.7.0/src/roam/critique/aggregator.py +140 -0
  218. roam_code-13.7.0/src/roam/critique/checks.py +621 -0
  219. roam_code-13.7.0/src/roam/db/connection.py +980 -0
  220. roam_code-13.7.0/src/roam/db/findings.py +495 -0
  221. roam_code-13.7.0/src/roam/eval/harness.py +256 -0
  222. roam_code-13.7.0/src/roam/evidence/approval.py +159 -0
  223. roam_code-13.7.0/src/roam/evidence/change_evidence.py +1710 -0
  224. roam_code-13.7.0/src/roam/evidence/collector.py +4147 -0
  225. roam_code-13.7.0/src/roam/evidence/completeness_compat.py +218 -0
  226. roam_code-13.7.0/src/roam/evidence/config_hashes_producer.py +147 -0
  227. roam_code-13.7.0/src/roam/evidence/consumer_fixtures/__init__.py +112 -0
  228. roam_code-13.7.0/src/roam/evidence/consumer_fixtures/consumer_assured.json +1 -0
  229. roam_code-13.7.0/src/roam/evidence/consumer_fixtures/consumer_minimal.json +1 -0
  230. roam_code-13.7.0/src/roam/evidence/consumer_fixtures/consumer_stale.json +1 -0
  231. roam_code-13.7.0/src/roam/evidence/mcp_receipt.py +211 -0
  232. roam_code-13.7.0/src/roam/evidence/policy.py +289 -0
  233. roam_code-13.7.0/src/roam/fleet/adapters.py +109 -0
  234. roam_code-13.7.0/src/roam/fleet/manifest.py +119 -0
  235. roam_code-13.7.0/src/roam/git_utils.py +96 -0
  236. roam_code-13.7.0/src/roam/github_check.py +171 -0
  237. roam_code-13.7.0/src/roam/graph/anomaly.py +546 -0
  238. roam_code-13.7.0/src/roam/graph/clone_detect.py +1301 -0
  239. roam_code-13.7.0/src/roam/graph/clusters.py +471 -0
  240. roam_code-13.7.0/src/roam/graph/cycles.py +360 -0
  241. roam_code-13.7.0/src/roam/graph/dark_matter.py +631 -0
  242. roam_code-13.7.0/src/roam/graph/diff.py +479 -0
  243. roam_code-13.7.0/src/roam/graph/fingerprint.py +296 -0
  244. roam_code-13.7.0/src/roam/graph/pagerank.py +386 -0
  245. roam_code-13.7.0/src/roam/graph/partition.py +464 -0
  246. roam_code-13.7.0/src/roam/graph/propagation.py +210 -0
  247. roam_code-13.7.0/src/roam/graph/simulate.py +354 -0
  248. roam_code-13.7.0/src/roam/graph/spectral.py +322 -0
  249. roam_code-13.7.0/src/roam/graph/versioning.py +552 -0
  250. roam_code-13.7.0/src/roam/guard_enums.py +146 -0
  251. roam_code-13.7.0/src/roam/guard_rules.py +249 -0
  252. roam_code-13.7.0/src/roam/index/complexity.py +1457 -0
  253. roam_code-13.7.0/src/roam/index/django_post.py +477 -0
  254. roam_code-13.7.0/src/roam/index/git_stats.py +846 -0
  255. roam_code-13.7.0/src/roam/index/incremental.py +75 -0
  256. roam_code-13.7.0/src/roam/index/indexer.py +2436 -0
  257. roam_code-13.7.0/src/roam/index/laravel_post.py +840 -0
  258. roam_code-13.7.0/src/roam/index/manifest.py +622 -0
  259. roam_code-13.7.0/src/roam/index/parser.py +459 -0
  260. roam_code-13.7.0/src/roam/index/pytest_fixtures.py +314 -0
  261. roam_code-13.7.0/src/roam/index/relations.py +1502 -0
  262. roam_code-13.7.0/src/roam/index/symbols.py +224 -0
  263. roam_code-13.7.0/src/roam/knowledge/__init__.py +17 -0
  264. roam_code-13.7.0/src/roam/knowledge/knowledge_claim.py +461 -0
  265. roam_code-13.7.0/src/roam/languages/apex_lang.py +220 -0
  266. roam_code-13.7.0/src/roam/languages/aura_lang.py +168 -0
  267. roam_code-13.7.0/src/roam/languages/base.py +242 -0
  268. roam_code-13.7.0/src/roam/languages/c_lang.py +445 -0
  269. roam_code-13.7.0/src/roam/languages/csharp_lang.py +1233 -0
  270. roam_code-13.7.0/src/roam/languages/extractor_schema.py +257 -0
  271. roam_code-13.7.0/src/roam/languages/foxpro_lang.py +1600 -0
  272. roam_code-13.7.0/src/roam/languages/hcl_lang.py +439 -0
  273. roam_code-13.7.0/src/roam/languages/javascript_lang.py +961 -0
  274. roam_code-13.7.0/src/roam/languages/php_lang.py +710 -0
  275. roam_code-13.7.0/src/roam/languages/python_lang.py +909 -0
  276. roam_code-13.7.0/src/roam/languages/query_engine.py +572 -0
  277. roam_code-13.7.0/src/roam/languages/registry.py +425 -0
  278. roam_code-13.7.0/src/roam/languages/ruby_lang.py +441 -0
  279. roam_code-13.7.0/src/roam/languages/scala_lang.py +628 -0
  280. roam_code-13.7.0/src/roam/languages/visualforce_lang.py +99 -0
  281. roam_code-13.7.0/src/roam/languages/yaml_lang.py +596 -0
  282. roam_code-13.7.0/src/roam/laws/checker.py +719 -0
  283. roam_code-13.7.0/src/roam/laws/miner.py +677 -0
  284. roam_code-13.7.0/src/roam/laws/serializer.py +373 -0
  285. roam_code-13.7.0/src/roam/leases/store.py +855 -0
  286. roam_code-13.7.0/src/roam/mcp-server-card.json +167 -0
  287. roam_code-13.7.0/src/roam/mcp_extras/completions.py +355 -0
  288. roam_code-13.7.0/src/roam/mcp_extras/concurrency.py +310 -0
  289. roam_code-13.7.0/src/roam/mcp_extras/preflight.py +199 -0
  290. roam_code-13.7.0/src/roam/mcp_extras/progress.py +235 -0
  291. roam_code-13.7.0/src/roam/mcp_extras/sampling.py +218 -0
  292. roam_code-13.7.0/src/roam/mcp_extras/session.py +316 -0
  293. roam_code-13.7.0/src/roam/mcp_extras/watcher.py +314 -0
  294. roam_code-13.7.0/src/roam/mcp_server.py +18838 -0
  295. roam_code-13.7.0/src/roam/memory/store.py +328 -0
  296. roam_code-13.7.0/src/roam/modes/policy.py +517 -0
  297. roam_code-13.7.0/src/roam/observability.py +61 -0
  298. roam_code-13.7.0/src/roam/observability_opt.py +392 -0
  299. roam_code-13.7.0/src/roam/output/confidence.py +376 -0
  300. roam_code-13.7.0/src/roam/output/formatter.py +1984 -0
  301. roam_code-13.7.0/src/roam/output/sarif.py +6465 -0
  302. roam_code-13.7.0/src/roam/permits/__init__.py +64 -0
  303. roam_code-13.7.0/src/roam/permits/store.py +712 -0
  304. roam_code-13.7.0/src/roam/plan/__init__.py +51 -0
  305. roam_code-13.7.0/src/roam/plan/calibration.py +330 -0
  306. roam_code-13.7.0/src/roam/plan/compiler.py +13770 -0
  307. roam_code-13.7.0/src/roam/plan/envelope_introspect.py +115 -0
  308. roam_code-13.7.0/src/roam/plan/import_audit.py +92 -0
  309. roam_code-13.7.0/src/roam/plan/plan_cache.py +269 -0
  310. roam_code-13.7.0/src/roam/plugins/__init__.py +345 -0
  311. roam_code-13.7.0/src/roam/plugins/registry.py +509 -0
  312. roam_code-13.7.0/src/roam/policy/graph_clauses.py +635 -0
  313. roam_code-13.7.0/src/roam/policy/suppression_v2.py +568 -0
  314. roam_code-13.7.0/src/roam/proof_bundle.py +393 -0
  315. roam_code-13.7.0/src/roam/quality/ai_rot.py +308 -0
  316. roam_code-13.7.0/src/roam/quality/cycles.py +199 -0
  317. roam_code-13.7.0/src/roam/quality/god_components.py +249 -0
  318. roam_code-13.7.0/src/roam/quality/public_symbols.py +55 -0
  319. roam_code-13.7.0/src/roam/refactor/codegen.py +146 -0
  320. roam_code-13.7.0/src/roam/refactor/transforms.py +928 -0
  321. roam_code-13.7.0/src/roam/resilience.py +481 -0
  322. roam_code-13.7.0/src/roam/retrieve/__init__.py +10 -0
  323. roam_code-13.7.0/src/roam/retrieve/learned_ranker.py +293 -0
  324. roam_code-13.7.0/src/roam/retrieve/pipeline.py +669 -0
  325. roam_code-13.7.0/src/roam/retrieve/rerank.py +979 -0
  326. roam_code-13.7.0/src/roam/retrieve/seeds.py +650 -0
  327. roam_code-13.7.0/src/roam/retrieve/semantic.py +303 -0
  328. roam_code-13.7.0/src/roam/rules/builtin.py +651 -0
  329. roam_code-13.7.0/src/roam/rules/dataflow.py +580 -0
  330. roam_code-13.7.0/src/roam/rules/engine.py +1893 -0
  331. roam_code-13.7.0/src/roam/runs/helpers.py +270 -0
  332. roam_code-13.7.0/src/roam/runs/ledger.py +737 -0
  333. roam_code-13.7.0/src/roam/runs/signing.py +601 -0
  334. roam_code-13.7.0/src/roam/runtime/daemon.py +187 -0
  335. roam_code-13.7.0/src/roam/runtime/graph_backend.py +146 -0
  336. roam_code-13.7.0/src/roam/runtime/hotspots.py +280 -0
  337. roam_code-13.7.0/src/roam/runtime/lockmgr.py +162 -0
  338. roam_code-13.7.0/src/roam/runtime/trace_ingest.py +848 -0
  339. roam_code-13.7.0/src/roam/search/index_embeddings.py +1051 -0
  340. roam_code-13.7.0/src/roam/search/onnx_embeddings.py +253 -0
  341. roam_code-13.7.0/src/roam/search/tfidf.py +326 -0
  342. roam_code-13.7.0/src/roam/security/aibom_extension.py +284 -0
  343. roam_code-13.7.0/src/roam/security/redact.py +362 -0
  344. roam_code-13.7.0/src/roam/security/sbom_reachability.py +911 -0
  345. roam_code-13.7.0/src/roam/security/taint_classifier.py +240 -0
  346. roam_code-13.7.0/src/roam/security/taint_engine.py +757 -0
  347. roam_code-13.7.0/src/roam/security/taint_rules_lint.py +95 -0
  348. roam_code-13.7.0/src/roam/security/vuln_reach.py +255 -0
  349. roam_code-13.7.0/src/roam/security/vuln_store.py +398 -0
  350. roam_code-13.7.0/src/roam/sibling_patch/__init__.py +24 -0
  351. roam_code-13.7.0/src/roam/sibling_patch/repair_scorer.py +376 -0
  352. roam_code-13.7.0/src/roam/sibling_patch/replay_gate.py +312 -0
  353. roam_code-13.7.0/src/roam/surface_counts.py +517 -0
  354. roam_code-13.7.0/src/roam/telemetry.py +140 -0
  355. roam_code-13.7.0/src/roam/templates/ci/agent-review.yml +117 -0
  356. roam_code-13.7.0/src/roam/templates/ci/roam-sarif-with-codeql.yml +55 -0
  357. roam_code-13.7.0/src/roam/testing/ci_xdist.py +74 -0
  358. roam_code-13.7.0/src/roam/verdict.py +304 -0
  359. roam_code-13.7.0/src/roam/workspace/aggregator.py +431 -0
  360. roam_code-13.7.0/src/roam/workspace/api_scanner.py +828 -0
  361. roam_code-13.7.0/src/roam/workspace/config.py +103 -0
  362. roam_code-13.7.0/src/roam/workspace/db.py +146 -0
  363. roam_code-13.7.0/src/roam/world_model/causal_graph.py +942 -0
  364. roam_code-13.7.0/src/roam/world_model/idempotency.py +331 -0
  365. roam_code-13.7.0/src/roam/world_model/side_effects.py +740 -0
  366. roam_code-13.7.0/src/roam/world_model/tx_boundaries.py +854 -0
  367. roam_code-13.7.0/src/roam_code.egg-info/PKG-INFO +1166 -0
  368. roam_code-13.7.0/src/roam_code.egg-info/SOURCES.txt +1924 -0
  369. roam_code-13.7.0/src/roam_code.egg-info/requires.txt +43 -0
  370. roam_code-13.7.0/tests/test_adrs_helpers.py +294 -0
  371. roam_code-13.7.0/tests/test_agents_md.py +276 -0
  372. roam_code-13.7.0/tests/test_algo_scoped_and_wired.py +159 -0
  373. roam_code-13.7.0/tests/test_api_drift.py +152 -0
  374. roam_code-13.7.0/tests/test_ask.py +488 -0
  375. roam_code-13.7.0/tests/test_atomic_writes.py +278 -0
  376. roam_code-13.7.0/tests/test_attest_vsa.py +1137 -0
  377. roam_code-13.7.0/tests/test_audit_symlink_containment.py +93 -0
  378. roam_code-13.7.0/tests/test_batch_mcp.py +879 -0
  379. roam_code-13.7.0/tests/test_batch_search_core.py +259 -0
  380. roam_code-13.7.0/tests/test_calibration_route_fallback.py +183 -0
  381. roam_code-13.7.0/tests/test_calibration_warning_once.py +143 -0
  382. roam_code-13.7.0/tests/test_catalog_shared.py +379 -0
  383. roam_code-13.7.0/tests/test_ci_auto_xdist.py +88 -0
  384. roam_code-13.7.0/tests/test_ci_setup.py +416 -0
  385. roam_code-13.7.0/tests/test_classifier_diagnostics_lockstep.py +184 -0
  386. roam_code-13.7.0/tests/test_cli_responses_write.py +391 -0
  387. roam_code-13.7.0/tests/test_cmd_affected_helpers.py +261 -0
  388. roam_code-13.7.0/tests/test_cmd_agent_context.py +353 -0
  389. roam_code-13.7.0/tests/test_cmd_compatibility.py +289 -0
  390. roam_code-13.7.0/tests/test_cmd_compile.py +310 -0
  391. roam_code-13.7.0/tests/test_cmd_compiler_health.py +449 -0
  392. roam_code-13.7.0/tests/test_cmd_db_check.py +74 -0
  393. roam_code-13.7.0/tests/test_cmd_fitness_warnings_out.py +213 -0
  394. roam_code-13.7.0/tests/test_cmd_idempotency_exception_guard.py +37 -0
  395. roam_code-13.7.0/tests/test_cmd_mcp_fast_startup.py +344 -0
  396. roam_code-13.7.0/tests/test_cmd_permit_persist_redteam.py +992 -0
  397. roam_code-13.7.0/tests/test_cmd_stats.py +36 -0
  398. roam_code-13.7.0/tests/test_cmd_telemetry.py +25 -0
  399. roam_code-13.7.0/tests/test_cmd_test_hermeticity.py +330 -0
  400. roam_code-13.7.0/tests/test_cmd_timeline.py +26 -0
  401. roam_code-13.7.0/tests/test_cmd_understand_tour_graph_errors.py +41 -0
  402. roam_code-13.7.0/tests/test_cmd_why_fail_exception_scope.py +29 -0
  403. roam_code-13.7.0/tests/test_command_advice.py +287 -0
  404. roam_code-13.7.0/tests/test_command_utils.py +99 -0
  405. roam_code-13.7.0/tests/test_compile_bare_filename_resolve.py +84 -0
  406. roam_code-13.7.0/tests/test_compile_bug_site_slice.py +98 -0
  407. roam_code-13.7.0/tests/test_compile_config_forbidden_paths.py +87 -0
  408. roam_code-13.7.0/tests/test_compile_describe_module.py +114 -0
  409. roam_code-13.7.0/tests/test_compile_env_vars_probe.py +52 -0
  410. roam_code-13.7.0/tests/test_compile_file_history.py +151 -0
  411. roam_code-13.7.0/tests/test_compile_freeform_size_cap.py +64 -0
  412. roam_code-13.7.0/tests/test_compile_grep_option_injection.py +64 -0
  413. roam_code-13.7.0/tests/test_compile_grep_private_root.py +143 -0
  414. roam_code-13.7.0/tests/test_compile_import_audit_no_exec.py +248 -0
  415. roam_code-13.7.0/tests/test_compile_l10_batch_dedupe.py +82 -0
  416. roam_code-13.7.0/tests/test_compile_owner_pathspec.py +85 -0
  417. roam_code-13.7.0/tests/test_compile_path_extraction.py +283 -0
  418. roam_code-13.7.0/tests/test_compile_safe_argv.py +154 -0
  419. roam_code-13.7.0/tests/test_compile_search_semantic_dashdash.py +57 -0
  420. roam_code-13.7.0/tests/test_compile_structural_subtype_order.py +87 -0
  421. roam_code-13.7.0/tests/test_compile_symbol_rank_source_first.py +140 -0
  422. roam_code-13.7.0/tests/test_compile_synth_target_extraction.py +138 -0
  423. roam_code-13.7.0/tests/test_compile_top_n_vs_structural_precedence.py +137 -0
  424. roam_code-13.7.0/tests/test_compile_trace_leading_dash.py +42 -0
  425. roam_code-13.7.0/tests/test_compile_w101_w106_probes.py +412 -0
  426. roam_code-13.7.0/tests/test_compile_w147_w150.py +95 -0
  427. roam_code-13.7.0/tests/test_compile_w151_w154.py +117 -0
  428. roam_code-13.7.0/tests/test_compile_w155_w158.py +162 -0
  429. roam_code-13.7.0/tests/test_compile_w160_w161.py +141 -0
  430. roam_code-13.7.0/tests/test_compile_w28_compare.py +163 -0
  431. roam_code-13.7.0/tests/test_compile_w35_user_probes.py +299 -0
  432. roam_code-13.7.0/tests/test_compile_w36_more_probes.py +442 -0
  433. roam_code-13.7.0/tests/test_compile_w39_tier1.py +249 -0
  434. roam_code-13.7.0/tests/test_compile_w43_w45_polish.py +428 -0
  435. roam_code-13.7.0/tests/test_compile_w468_persist_secret_skip.py +105 -0
  436. roam_code-13.7.0/tests/test_compile_w57_canonicalize_and_symcache.py +289 -0
  437. roam_code-13.7.0/tests/test_compile_w70_cache_safety.py +685 -0
  438. roam_code-13.7.0/tests/test_confidence_triples.py +1045 -0
  439. roam_code-13.7.0/tests/test_constitution.py +568 -0
  440. roam_code-13.7.0/tests/test_coverage_gaps_cmd.py +396 -0
  441. roam_code-13.7.0/tests/test_coverage_ingestion.py +165 -0
  442. roam_code-13.7.0/tests/test_critique.py +900 -0
  443. roam_code-13.7.0/tests/test_dataflow_dead.py +552 -0
  444. roam_code-13.7.0/tests/test_detail_flag_regressions.py +159 -0
  445. roam_code-13.7.0/tests/test_detector_registry.py +210 -0
  446. roam_code-13.7.0/tests/test_dev_profile_exception_handling.py +19 -0
  447. roam_code-13.7.0/tests/test_effects_propagation.py +384 -0
  448. roam_code-13.7.0/tests/test_eight_questions_audit.py +561 -0
  449. roam_code-13.7.0/tests/test_eval_retrieve.py +549 -0
  450. roam_code-13.7.0/tests/test_evidence_consumer_fixtures.py +215 -0
  451. roam_code-13.7.0/tests/test_evidence_pr_replay.py +2163 -0
  452. roam_code-13.7.0/tests/test_evidence_schema_migration.py +584 -0
  453. roam_code-13.7.0/tests/test_evidence_v0.py +1461 -0
  454. roam_code-13.7.0/tests/test_fallback_contracts.py +484 -0
  455. roam_code-13.7.0/tests/test_file_roles.py +481 -0
  456. roam_code-13.7.0/tests/test_findings_fan.py +696 -0
  457. roam_code-13.7.0/tests/test_fingerprint.py +367 -0
  458. roam_code-13.7.0/tests/test_flag_dead.py +157 -0
  459. roam_code-13.7.0/tests/test_framework_detection.py +291 -0
  460. roam_code-13.7.0/tests/test_framework_pack_language_gating.py +109 -0
  461. roam_code-13.7.0/tests/test_freeform_history_literal_pathspec.py +68 -0
  462. roam_code-13.7.0/tests/test_git_cochange_literal_pathspec.py +106 -0
  463. roam_code-13.7.0/tests/test_git_stats_skip.py +255 -0
  464. roam_code-13.7.0/tests/test_git_utils.py +196 -0
  465. roam_code-13.7.0/tests/test_glob_match.py +202 -0
  466. roam_code-13.7.0/tests/test_graph_versioning.py +373 -0
  467. roam_code-13.7.0/tests/test_guard_pr_and_github_check.py +540 -0
  468. roam_code-13.7.0/tests/test_health_baseline.py +361 -0
  469. roam_code-13.7.0/tests/test_health_betweenness_percentiles.py +113 -0
  470. roam_code-13.7.0/tests/test_index_bundle.py +293 -0
  471. roam_code-13.7.0/tests/test_index_parser.py +40 -0
  472. roam_code-13.7.0/tests/test_js_idioms.py +335 -0
  473. roam_code-13.7.0/tests/test_laravel_dead_idioms.py +1251 -0
  474. roam_code-13.7.0/tests/test_laws_mining.py +761 -0
  475. roam_code-13.7.0/tests/test_loud_fallback_no_new_silent_except.py +133 -0
  476. roam_code-13.7.0/tests/test_main_module_entrypoint.py +118 -0
  477. roam_code-13.7.0/tests/test_math.py +2177 -0
  478. roam_code-13.7.0/tests/test_mcp_cold_start_guard.py +412 -0
  479. roam_code-13.7.0/tests/test_mcp_decision_receipt.py +227 -0
  480. roam_code-13.7.0/tests/test_mcp_extras.py +468 -0
  481. roam_code-13.7.0/tests/test_mcp_retrieve_leading_dash.py +56 -0
  482. roam_code-13.7.0/tests/test_mcp_server.py +1795 -0
  483. roam_code-13.7.0/tests/test_mcp_server_card_hash.py +86 -0
  484. roam_code-13.7.0/tests/test_mcp_setup_write.py +239 -0
  485. roam_code-13.7.0/tests/test_mcp_tool_telemetry.py +168 -0
  486. roam_code-13.7.0/tests/test_observability_opt_harvester_reuse.py +8 -0
  487. roam_code-13.7.0/tests/test_optional_imports_guarded.py +389 -0
  488. roam_code-13.7.0/tests/test_oracle.py +406 -0
  489. roam_code-13.7.0/tests/test_owner_batched_in.py +124 -0
  490. roam_code-13.7.0/tests/test_parallel_probe_dispatch.py +278 -0
  491. roam_code-13.7.0/tests/test_path_coverage.py +389 -0
  492. roam_code-13.7.0/tests/test_plugin_discovery.py +153 -0
  493. roam_code-13.7.0/tests/test_plugin_substrate.py +645 -0
  494. roam_code-13.7.0/tests/test_policy_graph_clauses.py +488 -0
  495. roam_code-13.7.0/tests/test_pr_replay.py +761 -0
  496. roam_code-13.7.0/tests/test_preflight_fitness_sibling_names.py +156 -0
  497. roam_code-13.7.0/tests/test_probe_persist_batch.py +258 -0
  498. roam_code-13.7.0/tests/test_procedure_registry_lint.py +161 -0
  499. roam_code-13.7.0/tests/test_repair_siblings_lens.py +183 -0
  500. roam_code-13.7.0/tests/test_response_volume_handles.py +261 -0
  501. roam_code-13.7.0/tests/test_retrieve.py +1009 -0
  502. roam_code-13.7.0/tests/test_rule_profiles.py +338 -0
  503. roam_code-13.7.0/tests/test_runs_end_with_bundle.py +208 -0
  504. roam_code-13.7.0/tests/test_runtime.py +601 -0
  505. roam_code-13.7.0/tests/test_sbom.py +250 -0
  506. roam_code-13.7.0/tests/test_search_explain.py +619 -0
  507. roam_code-13.7.0/tests/test_semantic_onnx.py +203 -0
  508. roam_code-13.7.0/tests/test_semantic_search.py +509 -0
  509. roam_code-13.7.0/tests/test_sibling_patch_network.py +255 -0
  510. roam_code-13.7.0/tests/test_signature_utils.py +180 -0
  511. roam_code-13.7.0/tests/test_simulate.py +492 -0
  512. roam_code-13.7.0/tests/test_sna_metrics.py +106 -0
  513. roam_code-13.7.0/tests/test_spectral.py +676 -0
  514. roam_code-13.7.0/tests/test_sql_like_escape_discipline.py +281 -0
  515. roam_code-13.7.0/tests/test_stale_db_dir_error.py +233 -0
  516. roam_code-13.7.0/tests/test_stale_refs.py +4062 -0
  517. roam_code-13.7.0/tests/test_suppression_v2.py +464 -0
  518. roam_code-13.7.0/tests/test_synergy_agents_md_mode.py +131 -0
  519. roam_code-13.7.0/tests/test_syntax_check.py +501 -0
  520. roam_code-13.7.0/tests/test_taint_classifier.py +302 -0
  521. roam_code-13.7.0/tests/test_test_gaps.py +569 -0
  522. roam_code-13.7.0/tests/test_top_n_vs_structural_arbiter.py +110 -0
  523. roam_code-13.7.0/tests/test_trends.py +570 -0
  524. roam_code-13.7.0/tests/test_trends_cohort.py +199 -0
  525. roam_code-13.7.0/tests/test_v1216_passes.py +217 -0
  526. roam_code-13.7.0/tests/test_v12_2.py +407 -0
  527. roam_code-13.7.0/tests/test_verify_claims.py +195 -0
  528. roam_code-13.7.0/tests/test_verify_command_examples.py +115 -0
  529. roam_code-13.7.0/tests/test_verify_command_mirrors.py +30 -0
  530. roam_code-13.7.0/tests/test_verify_dup_precision.py +197 -0
  531. roam_code-13.7.0/tests/test_verify_imports.py +807 -0
  532. roam_code-13.7.0/tests/test_verify_mode.py +162 -0
  533. roam_code-13.7.0/tests/test_verify_planted_recall.py +182 -0
  534. roam_code-13.7.0/tests/test_verify_reindexes_stale_targets.py +130 -0
  535. roam_code-13.7.0/tests/test_vibe_check_framework_hooks.py +309 -0
  536. roam_code-13.7.0/tests/test_w1266_completeness_compat.py +290 -0
  537. roam_code-13.7.0/tests/test_w201_prefetched_injection_boundary.py +190 -0
  538. roam_code-13.7.0/tests/test_w593_permits_silent_fails.py +280 -0
  539. roam_code-13.7.0/tests/test_w595_read_permit_warnings_out.py +298 -0
  540. roam_code-13.7.0/tests/test_w599_trace_ingest_warnings_out.py +667 -0
  541. roam_code-13.7.0/tests/test_w605_index_embeddings_warnings_out.py +992 -0
  542. roam_code-13.7.0/tests/test_w607_br_cmd_search_warnings_out_envelope.py +761 -0
  543. roam_code-13.7.0/tests/test_w607_cp_cmd_hotspots_warnings_out_envelope.py +931 -0
  544. roam_code-13.7.0/tests/test_w607_cq_cmd_bus_factor_warnings_out_envelope.py +1120 -0
  545. roam_code-13.7.0/tests/test_w607_cy_cmd_fan_warnings_out_envelope.py +898 -0
  546. roam_code-13.7.0/tests/test_w607_db_cmd_deps_warnings_out_envelope.py +1047 -0
  547. roam_code-13.7.0/tests/test_w607_dg_cmd_describe_warnings_out_envelope.py +875 -0
  548. roam_code-13.7.0/tests/test_w607_e_cmd_search_warnings_out_envelope.py +656 -0
  549. roam_code-13.7.0/tests/test_w607_eg_cmd_mutate_warnings_out_envelope.py +879 -0
  550. roam_code-13.7.0/tests/test_w607_eh_cmd_bus_factor_warnings_out_envelope.py +1038 -0
  551. roam_code-13.7.0/tests/test_w607_en_cmd_hotspots_warnings_out_envelope.py +1174 -0
  552. roam_code-13.7.0/tests/test_w738_suppression_wire_format.py +187 -0
  553. roam_code-13.7.0/tests/test_w761_critique_severity_vocab.py +535 -0
  554. roam_code-13.7.0/tests/test_w805_bb_cmd_clusters_empty_corpus.py +514 -0
  555. roam_code-13.7.0/tests/test_w805_bcluster_debt_alerts_empty_corpus.py +146 -0
  556. roam_code-13.7.0/tests/test_w805_cccc_cmd_clones_below_threshold_collapse.py +691 -0
  557. roam_code-13.7.0/tests/test_w805_eeeee_cmd_verify_shared_helper_silent_safe.py +392 -0
  558. roam_code-13.7.0/tests/test_w805_empty_state_pattern_2.py +190 -0
  559. roam_code-13.7.0/tests/test_w805_pp_cmd_dashboard_empty_corpus.py +407 -0
  560. roam_code-13.7.0/tests/test_w805_t_cmd_uses_empty_corpus.py +388 -0
  561. roam_code-13.7.0/tests/test_w933_typeddict_boundary_audit.py +337 -0
  562. roam_code-13.7.0/tests/test_watch.py +636 -0
  563. roam_code-13.7.0/tests/test_why.py +290 -0
  564. roam_code-13.7.0/tests/test_world_model_classifier_fidelity.py +213 -0
  565. roam_code-13.6.1/PKG-INFO +0 -1166
  566. roam_code-13.6.1/README.md +0 -1100
  567. roam_code-13.6.1/pyproject.toml +0 -195
  568. roam_code-13.6.1/src/roam/_glob_match.py +0 -64
  569. roam_code-13.6.1/src/roam/agent_opt.py +0 -1127
  570. roam_code-13.6.1/src/roam/agents_md/__init__.py +0 -53
  571. roam_code-13.6.1/src/roam/agents_md/generator.py +0 -1161
  572. roam_code-13.6.1/src/roam/analysis/effects.py +0 -773
  573. roam_code-13.6.1/src/roam/analysis/taint.py +0 -729
  574. roam_code-13.6.1/src/roam/api.py +0 -238
  575. roam_code-13.6.1/src/roam/ask/recipes.py +0 -848
  576. roam_code-13.6.1/src/roam/ask/runner.py +0 -161
  577. roam_code-13.6.1/src/roam/ask/workflow.py +0 -40
  578. roam_code-13.6.1/src/roam/atomic_io.py +0 -201
  579. roam_code-13.6.1/src/roam/attest/cga.py +0 -678
  580. roam_code-13.6.1/src/roam/attest/emit_vsa.py +0 -402
  581. roam_code-13.6.1/src/roam/attest/vsa.py +0 -465
  582. roam_code-13.6.1/src/roam/bridges/base.py +0 -58
  583. roam_code-13.6.1/src/roam/bridges/bridge_config.py +0 -218
  584. roam_code-13.6.1/src/roam/bridges/bridge_django.py +0 -675
  585. roam_code-13.6.1/src/roam/bridges/bridge_protobuf.py +0 -346
  586. roam_code-13.6.1/src/roam/bridges/bridge_rest_api.py +0 -250
  587. roam_code-13.6.1/src/roam/bridges/bridge_template.py +0 -247
  588. roam_code-13.6.1/src/roam/bridges/registry.py +0 -79
  589. roam_code-13.6.1/src/roam/capability.py +0 -277
  590. roam_code-13.6.1/src/roam/catalog/_shared.py +0 -238
  591. roam_code-13.6.1/src/roam/catalog/clones_rename_invariant.py +0 -423
  592. roam_code-13.6.1/src/roam/catalog/detectors.py +0 -5114
  593. roam_code-13.6.1/src/roam/catalog/js_idioms.py +0 -389
  594. roam_code-13.6.1/src/roam/catalog/python_idioms.py +0 -2070
  595. roam_code-13.6.1/src/roam/catalog/smells.py +0 -3445
  596. roam_code-13.6.1/src/roam/catalog/type_switch.py +0 -529
  597. roam_code-13.6.1/src/roam/catalog/versions.py +0 -73
  598. roam_code-13.6.1/src/roam/cli.py +0 -1650
  599. roam_code-13.6.1/src/roam/commands/_yaml_loader.py +0 -701
  600. roam_code-13.6.1/src/roam/commands/actor_helpers.py +0 -225
  601. roam_code-13.6.1/src/roam/commands/cmd_adrs.py +0 -579
  602. roam_code-13.6.1/src/roam/commands/cmd_adversarial.py +0 -1174
  603. roam_code-13.6.1/src/roam/commands/cmd_affected.py +0 -457
  604. roam_code-13.6.1/src/roam/commands/cmd_affected_tests.py +0 -566
  605. roam_code-13.6.1/src/roam/commands/cmd_agent_export.py +0 -1019
  606. roam_code-13.6.1/src/roam/commands/cmd_agents_md.py +0 -237
  607. roam_code-13.6.1/src/roam/commands/cmd_ai_ratio.py +0 -768
  608. roam_code-13.6.1/src/roam/commands/cmd_alerts.py +0 -1508
  609. roam_code-13.6.1/src/roam/commands/cmd_api_changes.py +0 -876
  610. roam_code-13.6.1/src/roam/commands/cmd_api_drift.py +0 -918
  611. roam_code-13.6.1/src/roam/commands/cmd_article_12_check.py +0 -444
  612. roam_code-13.6.1/src/roam/commands/cmd_ask.py +0 -318
  613. roam_code-13.6.1/src/roam/commands/cmd_attest.py +0 -1534
  614. roam_code-13.6.1/src/roam/commands/cmd_audit_trail_conformance.py +0 -969
  615. roam_code-13.6.1/src/roam/commands/cmd_audit_trail_export.py +0 -863
  616. roam_code-13.6.1/src/roam/commands/cmd_audit_trail_verify.py +0 -1018
  617. roam_code-13.6.1/src/roam/commands/cmd_auth_gaps.py +0 -1999
  618. roam_code-13.6.1/src/roam/commands/cmd_batch_search.py +0 -232
  619. roam_code-13.6.1/src/roam/commands/cmd_boundary.py +0 -704
  620. roam_code-13.6.1/src/roam/commands/cmd_brief.py +0 -861
  621. roam_code-13.6.1/src/roam/commands/cmd_budget.py +0 -553
  622. roam_code-13.6.1/src/roam/commands/cmd_bus_factor.py +0 -1453
  623. roam_code-13.6.1/src/roam/commands/cmd_causal_graph.py +0 -316
  624. roam_code-13.6.1/src/roam/commands/cmd_cga.py +0 -994
  625. roam_code-13.6.1/src/roam/commands/cmd_changelog.py +0 -198
  626. roam_code-13.6.1/src/roam/commands/cmd_check_rules.py +0 -1092
  627. roam_code-13.6.1/src/roam/commands/cmd_ci_setup.py +0 -898
  628. roam_code-13.6.1/src/roam/commands/cmd_clones.py +0 -922
  629. roam_code-13.6.1/src/roam/commands/cmd_closure.py +0 -596
  630. roam_code-13.6.1/src/roam/commands/cmd_clusters.py +0 -554
  631. roam_code-13.6.1/src/roam/commands/cmd_compatibility.py +0 -565
  632. roam_code-13.6.1/src/roam/commands/cmd_compile.py +0 -457
  633. roam_code-13.6.1/src/roam/commands/cmd_compiler_health.py +0 -718
  634. roam_code-13.6.1/src/roam/commands/cmd_complexity.py +0 -1074
  635. roam_code-13.6.1/src/roam/commands/cmd_config.py +0 -785
  636. roam_code-13.6.1/src/roam/commands/cmd_context.py +0 -1769
  637. roam_code-13.6.1/src/roam/commands/cmd_conventions.py +0 -1673
  638. roam_code-13.6.1/src/roam/commands/cmd_coupling.py +0 -653
  639. roam_code-13.6.1/src/roam/commands/cmd_critique.py +0 -1345
  640. roam_code-13.6.1/src/roam/commands/cmd_cut.py +0 -525
  641. roam_code-13.6.1/src/roam/commands/cmd_cycles.py +0 -109
  642. roam_code-13.6.1/src/roam/commands/cmd_dark_matter.py +0 -906
  643. roam_code-13.6.1/src/roam/commands/cmd_dashboard.py +0 -799
  644. roam_code-13.6.1/src/roam/commands/cmd_db_check.py +0 -207
  645. roam_code-13.6.1/src/roam/commands/cmd_dead.py +0 -3108
  646. roam_code-13.6.1/src/roam/commands/cmd_debt.py +0 -973
  647. roam_code-13.6.1/src/roam/commands/cmd_deps.py +0 -527
  648. roam_code-13.6.1/src/roam/commands/cmd_dev_profile.py +0 -608
  649. roam_code-13.6.1/src/roam/commands/cmd_diagnose.py +0 -1207
  650. roam_code-13.6.1/src/roam/commands/cmd_doctor.py +0 -2398
  651. roam_code-13.6.1/src/roam/commands/cmd_dogfood.py +0 -345
  652. roam_code-13.6.1/src/roam/commands/cmd_drift.py +0 -492
  653. roam_code-13.6.1/src/roam/commands/cmd_duplicates.py +0 -1458
  654. roam_code-13.6.1/src/roam/commands/cmd_effects.py +0 -401
  655. roam_code-13.6.1/src/roam/commands/cmd_entry_points.py +0 -406
  656. roam_code-13.6.1/src/roam/commands/cmd_eval_retrieve.py +0 -362
  657. roam_code-13.6.1/src/roam/commands/cmd_exit_codes.py +0 -86
  658. roam_code-13.6.1/src/roam/commands/cmd_explain_command.py +0 -331
  659. roam_code-13.6.1/src/roam/commands/cmd_fan.py +0 -1394
  660. roam_code-13.6.1/src/roam/commands/cmd_fitness.py +0 -1265
  661. roam_code-13.6.1/src/roam/commands/cmd_flag_dead.py +0 -685
  662. roam_code-13.6.1/src/roam/commands/cmd_fleet.py +0 -494
  663. roam_code-13.6.1/src/roam/commands/cmd_fn_coupling.py +0 -501
  664. roam_code-13.6.1/src/roam/commands/cmd_forecast.py +0 -588
  665. roam_code-13.6.1/src/roam/commands/cmd_guard.py +0 -511
  666. roam_code-13.6.1/src/roam/commands/cmd_guard_pr.py +0 -442
  667. roam_code-13.6.1/src/roam/commands/cmd_health.py +0 -2590
  668. roam_code-13.6.1/src/roam/commands/cmd_hooks.py +0 -810
  669. roam_code-13.6.1/src/roam/commands/cmd_hotspots.py +0 -1465
  670. roam_code-13.6.1/src/roam/commands/cmd_idempotency.py +0 -210
  671. roam_code-13.6.1/src/roam/commands/cmd_impact.py +0 -1332
  672. roam_code-13.6.1/src/roam/commands/cmd_index.py +0 -173
  673. roam_code-13.6.1/src/roam/commands/cmd_index_bundle.py +0 -486
  674. roam_code-13.6.1/src/roam/commands/cmd_index_stats.py +0 -138
  675. roam_code-13.6.1/src/roam/commands/cmd_ingest_trace.py +0 -256
  676. roam_code-13.6.1/src/roam/commands/cmd_intent.py +0 -548
  677. roam_code-13.6.1/src/roam/commands/cmd_invariants.py +0 -676
  678. roam_code-13.6.1/src/roam/commands/cmd_laws.py +0 -870
  679. roam_code-13.6.1/src/roam/commands/cmd_lease.py +0 -720
  680. roam_code-13.6.1/src/roam/commands/cmd_lsp.py +0 -1136
  681. roam_code-13.6.1/src/roam/commands/cmd_magic_numbers.py +0 -743
  682. roam_code-13.6.1/src/roam/commands/cmd_map.py +0 -327
  683. roam_code-13.6.1/src/roam/commands/cmd_math.py +0 -904
  684. roam_code-13.6.1/src/roam/commands/cmd_mcp.py +0 -172
  685. roam_code-13.6.1/src/roam/commands/cmd_mcp_setup.py +0 -359
  686. roam_code-13.6.1/src/roam/commands/cmd_mcp_status.py +0 -192
  687. roam_code-13.6.1/src/roam/commands/cmd_metrics.py +0 -783
  688. roam_code-13.6.1/src/roam/commands/cmd_missing_index.py +0 -2033
  689. roam_code-13.6.1/src/roam/commands/cmd_mode.py +0 -419
  690. roam_code-13.6.1/src/roam/commands/cmd_mutate.py +0 -574
  691. roam_code-13.6.1/src/roam/commands/cmd_n1.py +0 -2415
  692. roam_code-13.6.1/src/roam/commands/cmd_next.py +0 -731
  693. roam_code-13.6.1/src/roam/commands/cmd_oracle.py +0 -756
  694. roam_code-13.6.1/src/roam/commands/cmd_orchestrate.py +0 -438
  695. roam_code-13.6.1/src/roam/commands/cmd_orphan_imports.py +0 -1279
  696. roam_code-13.6.1/src/roam/commands/cmd_owner.py +0 -387
  697. roam_code-13.6.1/src/roam/commands/cmd_partition.py +0 -1121
  698. roam_code-13.6.1/src/roam/commands/cmd_path_coverage.py +0 -653
  699. roam_code-13.6.1/src/roam/commands/cmd_patterns.py +0 -794
  700. roam_code-13.6.1/src/roam/commands/cmd_permit.py +0 -790
  701. roam_code-13.6.1/src/roam/commands/cmd_plan.py +0 -803
  702. roam_code-13.6.1/src/roam/commands/cmd_plan_refactor.py +0 -518
  703. roam_code-13.6.1/src/roam/commands/cmd_pr_analyze.py +0 -2656
  704. roam_code-13.6.1/src/roam/commands/cmd_pr_bundle.py +0 -3620
  705. roam_code-13.6.1/src/roam/commands/cmd_pr_diff.py +0 -333
  706. roam_code-13.6.1/src/roam/commands/cmd_pr_replay.py +0 -4351
  707. roam_code-13.6.1/src/roam/commands/cmd_pr_risk.py +0 -2037
  708. roam_code-13.6.1/src/roam/commands/cmd_preflight.py +0 -1653
  709. roam_code-13.6.1/src/roam/commands/cmd_py_modern.py +0 -227
  710. roam_code-13.6.1/src/roam/commands/cmd_py_types.py +0 -315
  711. roam_code-13.6.1/src/roam/commands/cmd_recipes.py +0 -74
  712. roam_code-13.6.1/src/roam/commands/cmd_recommend.py +0 -245
  713. roam_code-13.6.1/src/roam/commands/cmd_refs_text.py +0 -609
  714. roam_code-13.6.1/src/roam/commands/cmd_replay.py +0 -475
  715. roam_code-13.6.1/src/roam/commands/cmd_reset.py +0 -183
  716. roam_code-13.6.1/src/roam/commands/cmd_retrieve.py +0 -802
  717. roam_code-13.6.1/src/roam/commands/cmd_risk.py +0 -665
  718. roam_code-13.6.1/src/roam/commands/cmd_rules_validate.py +0 -501
  719. roam_code-13.6.1/src/roam/commands/cmd_runs.py +0 -1561
  720. roam_code-13.6.1/src/roam/commands/cmd_sbom.py +0 -998
  721. roam_code-13.6.1/src/roam/commands/cmd_search.py +0 -1016
  722. roam_code-13.6.1/src/roam/commands/cmd_search_semantic.py +0 -374
  723. roam_code-13.6.1/src/roam/commands/cmd_secrets.py +0 -750
  724. roam_code-13.6.1/src/roam/commands/cmd_side_effects.py +0 -237
  725. roam_code-13.6.1/src/roam/commands/cmd_simulate.py +0 -640
  726. roam_code-13.6.1/src/roam/commands/cmd_simulate_departure.py +0 -596
  727. roam_code-13.6.1/src/roam/commands/cmd_sketch.py +0 -210
  728. roam_code-13.6.1/src/roam/commands/cmd_smells.py +0 -1351
  729. roam_code-13.6.1/src/roam/commands/cmd_stale_refs.py +0 -3814
  730. roam_code-13.6.1/src/roam/commands/cmd_stats.py +0 -135
  731. roam_code-13.6.1/src/roam/commands/cmd_suggest_reviewers.py +0 -448
  732. roam_code-13.6.1/src/roam/commands/cmd_surface.py +0 -300
  733. roam_code-13.6.1/src/roam/commands/cmd_syntax_check.py +0 -327
  734. roam_code-13.6.1/src/roam/commands/cmd_taint.py +0 -1154
  735. roam_code-13.6.1/src/roam/commands/cmd_telemetry.py +0 -95
  736. roam_code-13.6.1/src/roam/commands/cmd_test_gaps.py +0 -633
  737. roam_code-13.6.1/src/roam/commands/cmd_test_hermeticity.py +0 -584
  738. roam_code-13.6.1/src/roam/commands/cmd_test_impact.py +0 -234
  739. roam_code-13.6.1/src/roam/commands/cmd_timeline.py +0 -162
  740. roam_code-13.6.1/src/roam/commands/cmd_tour.py +0 -584
  741. roam_code-13.6.1/src/roam/commands/cmd_trends.py +0 -1814
  742. roam_code-13.6.1/src/roam/commands/cmd_triage.py +0 -377
  743. roam_code-13.6.1/src/roam/commands/cmd_tx_boundaries.py +0 -294
  744. roam_code-13.6.1/src/roam/commands/cmd_understand.py +0 -1524
  745. roam_code-13.6.1/src/roam/commands/cmd_uses.py +0 -655
  746. roam_code-13.6.1/src/roam/commands/cmd_verify.py +0 -2955
  747. roam_code-13.6.1/src/roam/commands/cmd_verify_imports.py +0 -1108
  748. roam_code-13.6.1/src/roam/commands/cmd_vibe_check.py +0 -2389
  749. roam_code-13.6.1/src/roam/commands/cmd_visualize.py +0 -470
  750. roam_code-13.6.1/src/roam/commands/cmd_vuln_map.py +0 -170
  751. roam_code-13.6.1/src/roam/commands/cmd_vuln_reach.py +0 -844
  752. roam_code-13.6.1/src/roam/commands/cmd_vulns.py +0 -1435
  753. roam_code-13.6.1/src/roam/commands/cmd_watch.py +0 -818
  754. roam_code-13.6.1/src/roam/commands/cmd_why.py +0 -408
  755. roam_code-13.6.1/src/roam/commands/cmd_why_fail.py +0 -201
  756. roam_code-13.6.1/src/roam/commands/cmd_workflow.py +0 -281
  757. roam_code-13.6.1/src/roam/commands/cmd_ws.py +0 -1045
  758. roam_code-13.6.1/src/roam/commands/codeowners_helpers.py +0 -109
  759. roam_code-13.6.1/src/roam/commands/context_helpers.py +0 -1248
  760. roam_code-13.6.1/src/roam/commands/conventions_helper.py +0 -481
  761. roam_code-13.6.1/src/roam/commands/finding_suppress.py +0 -470
  762. roam_code-13.6.1/src/roam/commands/git_helpers.py +0 -124
  763. roam_code-13.6.1/src/roam/commands/grep_helpers.py +0 -567
  764. roam_code-13.6.1/src/roam/commands/metrics_history.py +0 -337
  765. roam_code-13.6.1/src/roam/commands/pr_analyze/audit_trail.py +0 -90
  766. roam_code-13.6.1/src/roam/commands/pr_analyze/cache.py +0 -126
  767. roam_code-13.6.1/src/roam/commands/pr_analyze/rules.py +0 -181
  768. roam_code-13.6.1/src/roam/commands/resolve.py +0 -827
  769. roam_code-13.6.1/src/roam/commands/stale_index.py +0 -146
  770. roam_code-13.6.1/src/roam/commands/stale_refs_hints.py +0 -417
  771. roam_code-13.6.1/src/roam/commands/suppression.py +0 -533
  772. roam_code-13.6.1/src/roam/competitor_site_data.py +0 -2167
  773. roam_code-13.6.1/src/roam/constitution/loader.py +0 -1096
  774. roam_code-13.6.1/src/roam/coverage_reports.py +0 -462
  775. roam_code-13.6.1/src/roam/critique/aggregator.py +0 -140
  776. roam_code-13.6.1/src/roam/critique/checks.py +0 -595
  777. roam_code-13.6.1/src/roam/db/connection.py +0 -870
  778. roam_code-13.6.1/src/roam/db/findings.py +0 -421
  779. roam_code-13.6.1/src/roam/eval/harness.py +0 -242
  780. roam_code-13.6.1/src/roam/evidence/approval.py +0 -154
  781. roam_code-13.6.1/src/roam/evidence/change_evidence.py +0 -1657
  782. roam_code-13.6.1/src/roam/evidence/collector.py +0 -4040
  783. roam_code-13.6.1/src/roam/evidence/completeness_compat.py +0 -203
  784. roam_code-13.6.1/src/roam/evidence/config_hashes_producer.py +0 -147
  785. roam_code-13.6.1/src/roam/evidence/mcp_receipt.py +0 -210
  786. roam_code-13.6.1/src/roam/evidence/policy.py +0 -284
  787. roam_code-13.6.1/src/roam/fleet/adapters.py +0 -107
  788. roam_code-13.6.1/src/roam/fleet/manifest.py +0 -151
  789. roam_code-13.6.1/src/roam/git_utils.py +0 -63
  790. roam_code-13.6.1/src/roam/github_check.py +0 -159
  791. roam_code-13.6.1/src/roam/graph/anomaly.py +0 -493
  792. roam_code-13.6.1/src/roam/graph/clone_detect.py +0 -1164
  793. roam_code-13.6.1/src/roam/graph/clusters.py +0 -352
  794. roam_code-13.6.1/src/roam/graph/cycles.py +0 -329
  795. roam_code-13.6.1/src/roam/graph/dark_matter.py +0 -559
  796. roam_code-13.6.1/src/roam/graph/diff.py +0 -463
  797. roam_code-13.6.1/src/roam/graph/fingerprint.py +0 -366
  798. roam_code-13.6.1/src/roam/graph/pagerank.py +0 -358
  799. roam_code-13.6.1/src/roam/graph/partition.py +0 -447
  800. roam_code-13.6.1/src/roam/graph/propagation.py +0 -208
  801. roam_code-13.6.1/src/roam/graph/simulate.py +0 -336
  802. roam_code-13.6.1/src/roam/graph/spectral.py +0 -276
  803. roam_code-13.6.1/src/roam/graph/versioning.py +0 -444
  804. roam_code-13.6.1/src/roam/guard_enums.py +0 -159
  805. roam_code-13.6.1/src/roam/guard_rules.py +0 -235
  806. roam_code-13.6.1/src/roam/index/complexity.py +0 -1394
  807. roam_code-13.6.1/src/roam/index/django_post.py +0 -447
  808. roam_code-13.6.1/src/roam/index/git_stats.py +0 -817
  809. roam_code-13.6.1/src/roam/index/incremental.py +0 -75
  810. roam_code-13.6.1/src/roam/index/indexer.py +0 -2281
  811. roam_code-13.6.1/src/roam/index/laravel_post.py +0 -840
  812. roam_code-13.6.1/src/roam/index/manifest.py +0 -608
  813. roam_code-13.6.1/src/roam/index/parser.py +0 -457
  814. roam_code-13.6.1/src/roam/index/pytest_fixtures.py +0 -281
  815. roam_code-13.6.1/src/roam/index/relations.py +0 -1174
  816. roam_code-13.6.1/src/roam/index/symbols.py +0 -99
  817. roam_code-13.6.1/src/roam/languages/apex_lang.py +0 -241
  818. roam_code-13.6.1/src/roam/languages/aura_lang.py +0 -228
  819. roam_code-13.6.1/src/roam/languages/base.py +0 -123
  820. roam_code-13.6.1/src/roam/languages/c_lang.py +0 -458
  821. roam_code-13.6.1/src/roam/languages/csharp_lang.py +0 -1215
  822. roam_code-13.6.1/src/roam/languages/extractor_schema.py +0 -261
  823. roam_code-13.6.1/src/roam/languages/foxpro_lang.py +0 -1558
  824. roam_code-13.6.1/src/roam/languages/hcl_lang.py +0 -399
  825. roam_code-13.6.1/src/roam/languages/javascript_lang.py +0 -904
  826. roam_code-13.6.1/src/roam/languages/php_lang.py +0 -696
  827. roam_code-13.6.1/src/roam/languages/python_lang.py +0 -889
  828. roam_code-13.6.1/src/roam/languages/query_engine.py +0 -594
  829. roam_code-13.6.1/src/roam/languages/registry.py +0 -422
  830. roam_code-13.6.1/src/roam/languages/ruby_lang.py +0 -429
  831. roam_code-13.6.1/src/roam/languages/scala_lang.py +0 -620
  832. roam_code-13.6.1/src/roam/languages/visualforce_lang.py +0 -151
  833. roam_code-13.6.1/src/roam/languages/yaml_lang.py +0 -565
  834. roam_code-13.6.1/src/roam/laws/checker.py +0 -622
  835. roam_code-13.6.1/src/roam/laws/miner.py +0 -629
  836. roam_code-13.6.1/src/roam/laws/serializer.py +0 -282
  837. roam_code-13.6.1/src/roam/leases/store.py +0 -610
  838. roam_code-13.6.1/src/roam/mcp-server-card.json +0 -167
  839. roam_code-13.6.1/src/roam/mcp_extras/completions.py +0 -297
  840. roam_code-13.6.1/src/roam/mcp_extras/concurrency.py +0 -292
  841. roam_code-13.6.1/src/roam/mcp_extras/preflight.py +0 -198
  842. roam_code-13.6.1/src/roam/mcp_extras/progress.py +0 -212
  843. roam_code-13.6.1/src/roam/mcp_extras/sampling.py +0 -202
  844. roam_code-13.6.1/src/roam/mcp_extras/session.py +0 -316
  845. roam_code-13.6.1/src/roam/mcp_extras/watcher.py +0 -321
  846. roam_code-13.6.1/src/roam/mcp_server.py +0 -18681
  847. roam_code-13.6.1/src/roam/memory/store.py +0 -308
  848. roam_code-13.6.1/src/roam/modes/policy.py +0 -522
  849. roam_code-13.6.1/src/roam/observability.py +0 -58
  850. roam_code-13.6.1/src/roam/observability_opt.py +0 -452
  851. roam_code-13.6.1/src/roam/output/confidence.py +0 -367
  852. roam_code-13.6.1/src/roam/output/formatter.py +0 -1764
  853. roam_code-13.6.1/src/roam/output/sarif.py +0 -6447
  854. roam_code-13.6.1/src/roam/permits/__init__.py +0 -62
  855. roam_code-13.6.1/src/roam/permits/store.py +0 -574
  856. roam_code-13.6.1/src/roam/plan/__init__.py +0 -24
  857. roam_code-13.6.1/src/roam/plan/calibration.py +0 -176
  858. roam_code-13.6.1/src/roam/plan/compiler.py +0 -10397
  859. roam_code-13.6.1/src/roam/plan/envelope_introspect.py +0 -68
  860. roam_code-13.6.1/src/roam/plugins/__init__.py +0 -308
  861. roam_code-13.6.1/src/roam/plugins/registry.py +0 -493
  862. roam_code-13.6.1/src/roam/policy/graph_clauses.py +0 -580
  863. roam_code-13.6.1/src/roam/policy/suppression_v2.py +0 -544
  864. roam_code-13.6.1/src/roam/proof_bundle.py +0 -389
  865. roam_code-13.6.1/src/roam/quality/ai_rot.py +0 -241
  866. roam_code-13.6.1/src/roam/quality/cycles.py +0 -182
  867. roam_code-13.6.1/src/roam/quality/god_components.py +0 -232
  868. roam_code-13.6.1/src/roam/quality/public_symbols.py +0 -170
  869. roam_code-13.6.1/src/roam/refactor/codegen.py +0 -137
  870. roam_code-13.6.1/src/roam/refactor/transforms.py +0 -780
  871. roam_code-13.6.1/src/roam/resilience.py +0 -481
  872. roam_code-13.6.1/src/roam/retrieve/__init__.py +0 -9
  873. roam_code-13.6.1/src/roam/retrieve/learned_ranker.py +0 -265
  874. roam_code-13.6.1/src/roam/retrieve/pipeline.py +0 -551
  875. roam_code-13.6.1/src/roam/retrieve/rerank.py +0 -822
  876. roam_code-13.6.1/src/roam/retrieve/seeds.py +0 -566
  877. roam_code-13.6.1/src/roam/retrieve/semantic.py +0 -264
  878. roam_code-13.6.1/src/roam/rules/builtin.py +0 -624
  879. roam_code-13.6.1/src/roam/rules/dataflow.py +0 -506
  880. roam_code-13.6.1/src/roam/rules/engine.py +0 -1624
  881. roam_code-13.6.1/src/roam/runs/helpers.py +0 -259
  882. roam_code-13.6.1/src/roam/runs/ledger.py +0 -685
  883. roam_code-13.6.1/src/roam/runs/signing.py +0 -565
  884. roam_code-13.6.1/src/roam/runtime/daemon.py +0 -180
  885. roam_code-13.6.1/src/roam/runtime/graph_backend.py +0 -151
  886. roam_code-13.6.1/src/roam/runtime/hotspots.py +0 -263
  887. roam_code-13.6.1/src/roam/runtime/lockmgr.py +0 -135
  888. roam_code-13.6.1/src/roam/runtime/trace_ingest.py +0 -745
  889. roam_code-13.6.1/src/roam/search/index_embeddings.py +0 -975
  890. roam_code-13.6.1/src/roam/search/onnx_embeddings.py +0 -235
  891. roam_code-13.6.1/src/roam/search/tfidf.py +0 -321
  892. roam_code-13.6.1/src/roam/security/aibom_extension.py +0 -276
  893. roam_code-13.6.1/src/roam/security/redact.py +0 -362
  894. roam_code-13.6.1/src/roam/security/sbom_reachability.py +0 -796
  895. roam_code-13.6.1/src/roam/security/taint_classifier.py +0 -224
  896. roam_code-13.6.1/src/roam/security/taint_engine.py +0 -633
  897. roam_code-13.6.1/src/roam/security/taint_rules_lint.py +0 -91
  898. roam_code-13.6.1/src/roam/security/vuln_reach.py +0 -251
  899. roam_code-13.6.1/src/roam/security/vuln_store.py +0 -394
  900. roam_code-13.6.1/src/roam/surface_counts.py +0 -493
  901. roam_code-13.6.1/src/roam/telemetry.py +0 -140
  902. roam_code-13.6.1/src/roam/templates/ci/agent-review.yml +0 -103
  903. roam_code-13.6.1/src/roam/templates/ci/roam-sarif-with-codeql.yml +0 -76
  904. roam_code-13.6.1/src/roam/testing/ci_xdist.py +0 -67
  905. roam_code-13.6.1/src/roam/verdict.py +0 -282
  906. roam_code-13.6.1/src/roam/workspace/aggregator.py +0 -426
  907. roam_code-13.6.1/src/roam/workspace/api_scanner.py +0 -714
  908. roam_code-13.6.1/src/roam/workspace/config.py +0 -95
  909. roam_code-13.6.1/src/roam/workspace/db.py +0 -136
  910. roam_code-13.6.1/src/roam/world_model/causal_graph.py +0 -883
  911. roam_code-13.6.1/src/roam/world_model/idempotency.py +0 -337
  912. roam_code-13.6.1/src/roam/world_model/side_effects.py +0 -732
  913. roam_code-13.6.1/src/roam/world_model/tx_boundaries.py +0 -838
  914. roam_code-13.6.1/src/roam_code.egg-info/PKG-INFO +0 -1166
  915. roam_code-13.6.1/src/roam_code.egg-info/SOURCES.txt +0 -1855
  916. roam_code-13.6.1/src/roam_code.egg-info/requires.txt +0 -42
  917. roam_code-13.6.1/tests/test_agents_md.py +0 -248
  918. roam_code-13.6.1/tests/test_algo_scoped_and_wired.py +0 -157
  919. roam_code-13.6.1/tests/test_api_drift.py +0 -88
  920. roam_code-13.6.1/tests/test_ask.py +0 -383
  921. roam_code-13.6.1/tests/test_atomic_writes.py +0 -266
  922. roam_code-13.6.1/tests/test_attest_vsa.py +0 -1117
  923. roam_code-13.6.1/tests/test_batch_mcp.py +0 -920
  924. roam_code-13.6.1/tests/test_catalog_shared.py +0 -379
  925. roam_code-13.6.1/tests/test_ci_auto_xdist.py +0 -88
  926. roam_code-13.6.1/tests/test_ci_setup.py +0 -402
  927. roam_code-13.6.1/tests/test_cli_responses_write.py +0 -369
  928. roam_code-13.6.1/tests/test_cmd_compatibility.py +0 -270
  929. roam_code-13.6.1/tests/test_cmd_compile.py +0 -142
  930. roam_code-13.6.1/tests/test_cmd_compiler_health.py +0 -429
  931. roam_code-13.6.1/tests/test_cmd_fitness_warnings_out.py +0 -184
  932. roam_code-13.6.1/tests/test_cmd_mcp_fast_startup.py +0 -324
  933. roam_code-13.6.1/tests/test_cmd_permit_persist_redteam.py +0 -972
  934. roam_code-13.6.1/tests/test_cmd_test_hermeticity.py +0 -305
  935. roam_code-13.6.1/tests/test_compile_bare_filename_resolve.py +0 -59
  936. roam_code-13.6.1/tests/test_compile_bug_site_slice.py +0 -62
  937. roam_code-13.6.1/tests/test_compile_describe_module.py +0 -76
  938. roam_code-13.6.1/tests/test_compile_file_history.py +0 -118
  939. roam_code-13.6.1/tests/test_compile_path_extraction.py +0 -52
  940. roam_code-13.6.1/tests/test_compile_symbol_rank_source_first.py +0 -91
  941. roam_code-13.6.1/tests/test_compile_synth_target_extraction.py +0 -69
  942. roam_code-13.6.1/tests/test_compile_w101_w106_probes.py +0 -190
  943. roam_code-13.6.1/tests/test_compile_w147_w150.py +0 -92
  944. roam_code-13.6.1/tests/test_compile_w151_w154.py +0 -98
  945. roam_code-13.6.1/tests/test_compile_w155_w158.py +0 -115
  946. roam_code-13.6.1/tests/test_compile_w160_w161.py +0 -98
  947. roam_code-13.6.1/tests/test_compile_w28_compare.py +0 -121
  948. roam_code-13.6.1/tests/test_compile_w35_user_probes.py +0 -212
  949. roam_code-13.6.1/tests/test_compile_w36_more_probes.py +0 -295
  950. roam_code-13.6.1/tests/test_compile_w39_tier1.py +0 -175
  951. roam_code-13.6.1/tests/test_compile_w43_w45_polish.py +0 -292
  952. roam_code-13.6.1/tests/test_compile_w57_canonicalize_and_symcache.py +0 -210
  953. roam_code-13.6.1/tests/test_compile_w70_cache_safety.py +0 -424
  954. roam_code-13.6.1/tests/test_confidence_triples.py +0 -1036
  955. roam_code-13.6.1/tests/test_constitution.py +0 -525
  956. roam_code-13.6.1/tests/test_coverage_gaps_cmd.py +0 -399
  957. roam_code-13.6.1/tests/test_coverage_ingestion.py +0 -123
  958. roam_code-13.6.1/tests/test_critique.py +0 -899
  959. roam_code-13.6.1/tests/test_dataflow_dead.py +0 -527
  960. roam_code-13.6.1/tests/test_detector_registry.py +0 -211
  961. roam_code-13.6.1/tests/test_effects_propagation.py +0 -323
  962. roam_code-13.6.1/tests/test_eight_questions_audit.py +0 -538
  963. roam_code-13.6.1/tests/test_eval_retrieve.py +0 -547
  964. roam_code-13.6.1/tests/test_evidence_pr_replay.py +0 -2151
  965. roam_code-13.6.1/tests/test_evidence_schema_migration.py +0 -580
  966. roam_code-13.6.1/tests/test_evidence_v0.py +0 -1437
  967. roam_code-13.6.1/tests/test_except_pass_narrow.py +0 -51
  968. roam_code-13.6.1/tests/test_fallback_contracts.py +0 -230
  969. roam_code-13.6.1/tests/test_file_roles.py +0 -464
  970. roam_code-13.6.1/tests/test_findings_fan.py +0 -587
  971. roam_code-13.6.1/tests/test_fingerprint.py +0 -350
  972. roam_code-13.6.1/tests/test_flag_dead.py +0 -125
  973. roam_code-13.6.1/tests/test_framework_detection.py +0 -291
  974. roam_code-13.6.1/tests/test_framework_pack_language_gating.py +0 -109
  975. roam_code-13.6.1/tests/test_git_stats_skip.py +0 -228
  976. roam_code-13.6.1/tests/test_git_utils.py +0 -164
  977. roam_code-13.6.1/tests/test_graph_versioning.py +0 -315
  978. roam_code-13.6.1/tests/test_guard_pr_and_github_check.py +0 -438
  979. roam_code-13.6.1/tests/test_health_baseline.py +0 -260
  980. roam_code-13.6.1/tests/test_index_bundle.py +0 -275
  981. roam_code-13.6.1/tests/test_js_idioms.py +0 -315
  982. roam_code-13.6.1/tests/test_laravel_dead_idioms.py +0 -1226
  983. roam_code-13.6.1/tests/test_laws_mining.py +0 -691
  984. roam_code-13.6.1/tests/test_loud_fallback_no_new_silent_except.py +0 -130
  985. roam_code-13.6.1/tests/test_math.py +0 -2176
  986. roam_code-13.6.1/tests/test_mcp_cold_start_guard.py +0 -382
  987. roam_code-13.6.1/tests/test_mcp_decision_receipt.py +0 -218
  988. roam_code-13.6.1/tests/test_mcp_extras.py +0 -378
  989. roam_code-13.6.1/tests/test_mcp_server.py +0 -1718
  990. roam_code-13.6.1/tests/test_mcp_server_card_hash.py +0 -86
  991. roam_code-13.6.1/tests/test_mcp_setup_write.py +0 -201
  992. roam_code-13.6.1/tests/test_mcp_tool_telemetry.py +0 -132
  993. roam_code-13.6.1/tests/test_optional_imports_guarded.py +0 -351
  994. roam_code-13.6.1/tests/test_oracle.py +0 -385
  995. roam_code-13.6.1/tests/test_parallel_probe_dispatch.py +0 -196
  996. roam_code-13.6.1/tests/test_path_coverage.py +0 -361
  997. roam_code-13.6.1/tests/test_plugin_discovery.py +0 -131
  998. roam_code-13.6.1/tests/test_plugin_substrate.py +0 -629
  999. roam_code-13.6.1/tests/test_policy_graph_clauses.py +0 -464
  1000. roam_code-13.6.1/tests/test_pr_replay.py +0 -628
  1001. roam_code-13.6.1/tests/test_preflight_fitness_sibling_names.py +0 -140
  1002. roam_code-13.6.1/tests/test_procedure_registry_lint.py +0 -124
  1003. roam_code-13.6.1/tests/test_response_volume_handles.py +0 -264
  1004. roam_code-13.6.1/tests/test_retrieve.py +0 -974
  1005. roam_code-13.6.1/tests/test_rule_profiles.py +0 -338
  1006. roam_code-13.6.1/tests/test_runs_end_with_bundle.py +0 -174
  1007. roam_code-13.6.1/tests/test_runtime.py +0 -589
  1008. roam_code-13.6.1/tests/test_sbom.py +0 -224
  1009. roam_code-13.6.1/tests/test_search_explain.py +0 -598
  1010. roam_code-13.6.1/tests/test_semantic_onnx.py +0 -198
  1011. roam_code-13.6.1/tests/test_semantic_search.py +0 -508
  1012. roam_code-13.6.1/tests/test_simulate.py +0 -483
  1013. roam_code-13.6.1/tests/test_sna_metrics.py +0 -72
  1014. roam_code-13.6.1/tests/test_spectral.py +0 -639
  1015. roam_code-13.6.1/tests/test_sql_like_escape_discipline.py +0 -250
  1016. roam_code-13.6.1/tests/test_stale_db_dir_error.py +0 -202
  1017. roam_code-13.6.1/tests/test_stale_refs.py +0 -3976
  1018. roam_code-13.6.1/tests/test_suppression_v2.py +0 -429
  1019. roam_code-13.6.1/tests/test_synergy_agents_md_mode.py +0 -131
  1020. roam_code-13.6.1/tests/test_syntax_check.py +0 -450
  1021. roam_code-13.6.1/tests/test_taint_classifier.py +0 -272
  1022. roam_code-13.6.1/tests/test_test_gaps.py +0 -569
  1023. roam_code-13.6.1/tests/test_trends.py +0 -538
  1024. roam_code-13.6.1/tests/test_trends_cohort.py +0 -158
  1025. roam_code-13.6.1/tests/test_v1216_passes.py +0 -184
  1026. roam_code-13.6.1/tests/test_v12_2.py +0 -357
  1027. roam_code-13.6.1/tests/test_verify_dup_precision.py +0 -100
  1028. roam_code-13.6.1/tests/test_verify_imports.py +0 -683
  1029. roam_code-13.6.1/tests/test_verify_mode.py +0 -111
  1030. roam_code-13.6.1/tests/test_verify_planted_recall.py +0 -159
  1031. roam_code-13.6.1/tests/test_verify_reindexes_stale_targets.py +0 -130
  1032. roam_code-13.6.1/tests/test_vibe_check_framework_hooks.py +0 -310
  1033. roam_code-13.6.1/tests/test_w1266_completeness_compat.py +0 -273
  1034. roam_code-13.6.1/tests/test_w593_permits_silent_fails.py +0 -277
  1035. roam_code-13.6.1/tests/test_w595_read_permit_warnings_out.py +0 -295
  1036. roam_code-13.6.1/tests/test_w599_trace_ingest_warnings_out.py +0 -667
  1037. roam_code-13.6.1/tests/test_w605_index_embeddings_warnings_out.py +0 -993
  1038. roam_code-13.6.1/tests/test_w607_br_cmd_search_warnings_out_envelope.py +0 -758
  1039. roam_code-13.6.1/tests/test_w607_cp_cmd_hotspots_warnings_out_envelope.py +0 -926
  1040. roam_code-13.6.1/tests/test_w607_cq_cmd_bus_factor_warnings_out_envelope.py +0 -1110
  1041. roam_code-13.6.1/tests/test_w607_cy_cmd_fan_warnings_out_envelope.py +0 -880
  1042. roam_code-13.6.1/tests/test_w607_db_cmd_deps_warnings_out_envelope.py +0 -1036
  1043. roam_code-13.6.1/tests/test_w607_dg_cmd_describe_warnings_out_envelope.py +0 -866
  1044. roam_code-13.6.1/tests/test_w607_e_cmd_search_warnings_out_envelope.py +0 -637
  1045. roam_code-13.6.1/tests/test_w607_eg_cmd_mutate_warnings_out_envelope.py +0 -879
  1046. roam_code-13.6.1/tests/test_w607_eh_cmd_bus_factor_warnings_out_envelope.py +0 -1032
  1047. roam_code-13.6.1/tests/test_w607_en_cmd_hotspots_warnings_out_envelope.py +0 -1168
  1048. roam_code-13.6.1/tests/test_w738_suppression_wire_format.py +0 -181
  1049. roam_code-13.6.1/tests/test_w761_critique_severity_vocab.py +0 -535
  1050. roam_code-13.6.1/tests/test_w805_bb_cmd_clusters_empty_corpus.py +0 -578
  1051. roam_code-13.6.1/tests/test_w805_cccc_cmd_clones_below_threshold_collapse.py +0 -699
  1052. roam_code-13.6.1/tests/test_w805_eeeee_cmd_verify_shared_helper_silent_safe.py +0 -419
  1053. roam_code-13.6.1/tests/test_w805_empty_state_pattern_2.py +0 -179
  1054. roam_code-13.6.1/tests/test_w805_pp_cmd_dashboard_empty_corpus.py +0 -447
  1055. roam_code-13.6.1/tests/test_w805_t_cmd_uses_empty_corpus.py +0 -429
  1056. roam_code-13.6.1/tests/test_w933_typeddict_boundary_audit.py +0 -333
  1057. roam_code-13.6.1/tests/test_watch.py +0 -591
  1058. roam_code-13.6.1/tests/test_why.py +0 -271
  1059. roam_code-13.6.1/tests/test_world_model_classifier_fidelity.py +0 -178
  1060. {roam_code-13.6.1 → roam_code-13.7.0}/LICENSE +0 -0
  1061. {roam_code-13.6.1 → roam_code-13.7.0}/setup.cfg +0 -0
  1062. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/__init__.py +0 -0
  1063. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/__main__.py +0 -0
  1064. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/_signature_utils.py +0 -0
  1065. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/analysis/__init__.py +0 -0
  1066. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/ask/__init__.py +0 -0
  1067. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/ask/classifier.py +0 -0
  1068. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/attest/__init__.py +0 -0
  1069. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/bridges/__init__.py +0 -0
  1070. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/bridges/bridge_salesforce.py +0 -0
  1071. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/catalog/__init__.py +0 -0
  1072. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/catalog/clones_cross_layer.py +0 -0
  1073. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/catalog/fixes.py +0 -0
  1074. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/catalog/parallel_hierarchy.py +0 -0
  1075. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/catalog/registry.py +0 -0
  1076. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/catalog/tasks.py +0 -0
  1077. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/command_graph.py +0 -0
  1078. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/__init__.py +0 -0
  1079. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/_command_utils.py +0 -0
  1080. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/audit_trail_helpers.py +0 -0
  1081. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/changed_files.py +0 -0
  1082. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_agent_context.py +0 -0
  1083. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_agent_opt.py +0 -0
  1084. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_agent_plan.py +0 -0
  1085. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_agent_score.py +0 -0
  1086. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_ai_readiness.py +0 -0
  1087. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_annotate.py +0 -0
  1088. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_api.py +0 -0
  1089. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_architecture_drift.py +0 -0
  1090. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_at.py +0 -0
  1091. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_audit.py +0 -0
  1092. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_bench.py +0 -0
  1093. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_bisect.py +0 -0
  1094. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_breaking.py +0 -0
  1095. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_capabilities.py +0 -0
  1096. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_capsule.py +0 -0
  1097. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_clean.py +0 -0
  1098. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_codeowners.py +0 -0
  1099. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_commands.py +0 -0
  1100. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_compare.py +0 -0
  1101. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_compile_cache.py +0 -0
  1102. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_compile_stats.py +0 -0
  1103. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_compiler_corpus.py +0 -0
  1104. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_complete.py +0 -0
  1105. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_congestion.py +0 -0
  1106. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_constitution.py +0 -0
  1107. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_coverage_gaps.py +0 -0
  1108. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_delete_check.py +0 -0
  1109. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_describe.py +0 -0
  1110. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_dict_consistency.py +0 -0
  1111. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_diff.py +0 -0
  1112. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_disambiguate.py +0 -0
  1113. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_dispatch_trace.py +0 -0
  1114. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_doc_staleness.py +0 -0
  1115. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_docs_coverage.py +0 -0
  1116. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_docs_index.py +0 -0
  1117. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_dogfood_aggregate.py +0 -0
  1118. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_endpoints.py +0 -0
  1119. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_envelope_diff.py +0 -0
  1120. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_evidence_diff.py +0 -0
  1121. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_evidence_doctor.py +0 -0
  1122. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_evidence_oscal.py +0 -0
  1123. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_file.py +0 -0
  1124. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_findings.py +0 -0
  1125. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_fingerprint.py +0 -0
  1126. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_graph_diff.py +0 -0
  1127. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_graph_export.py +0 -0
  1128. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_graph_stats.py +0 -0
  1129. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_grep.py +0 -0
  1130. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_guard_clean.py +0 -0
  1131. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_guard_diff.py +0 -0
  1132. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_guard_doctor.py +0 -0
  1133. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_guard_history.py +0 -0
  1134. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_guard_init.py +0 -0
  1135. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_guard_rules.py +0 -0
  1136. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_help_search.py +0 -0
  1137. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_history_grep.py +0 -0
  1138. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_hover.py +0 -0
  1139. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_init.py +0 -0
  1140. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_intent_check.py +0 -0
  1141. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_layers.py +0 -0
  1142. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_llm_smells.py +0 -0
  1143. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_memory.py +0 -0
  1144. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_metrics_push.py +0 -0
  1145. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_migration_plan.py +0 -0
  1146. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_migration_safety.py +0 -0
  1147. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_minimap.py +0 -0
  1148. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_module.py +0 -0
  1149. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_observability_opt.py +0 -0
  1150. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_orphan_routes.py +0 -0
  1151. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_over_fetch.py +0 -0
  1152. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_plugins.py +0 -0
  1153. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_postmortem.py +0 -0
  1154. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_pr_comment_render.py +0 -0
  1155. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_pr_prep.py +0 -0
  1156. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_pre_commit.py +0 -0
  1157. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_proof_bundle.py +0 -0
  1158. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_pytest_fixtures.py +0 -0
  1159. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_relate.py +0 -0
  1160. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_report.py +0 -0
  1161. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_rules.py +0 -0
  1162. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_safe_delete.py +0 -0
  1163. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_safe_zones.py +0 -0
  1164. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_schema.py +0 -0
  1165. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_semantic_diff.py +0 -0
  1166. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_skill_generate.py +0 -0
  1167. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_spectral.py +0 -0
  1168. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_split.py +0 -0
  1169. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_suggest_refactoring.py +0 -0
  1170. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_supply_chain.py +0 -0
  1171. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_suppress.py +0 -0
  1172. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_symbol.py +0 -0
  1173. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_test_pyramid.py +0 -0
  1174. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_test_scaffold.py +0 -0
  1175. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_testmap.py +0 -0
  1176. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_trace.py +0 -0
  1177. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_verdict.py +0 -0
  1178. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_verification_contract.py +0 -0
  1179. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_version.py +0 -0
  1180. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_weather.py +0 -0
  1181. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_why_slow.py +0 -0
  1182. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/cmd_xlang.py +0 -0
  1183. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/gate_presets.py +0 -0
  1184. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/graph_helpers.py +0 -0
  1185. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/next_steps.py +0 -0
  1186. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/pr_analyze/__init__.py +0 -0
  1187. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/smells_suppress.py +0 -0
  1188. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/commands/stale_refs_anchors.py +0 -0
  1189. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/config.py +0 -0
  1190. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/constitution/__init__.py +0 -0
  1191. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/critique/__init__.py +0 -0
  1192. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/db/__init__.py +0 -0
  1193. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/db/edge_kinds.py +0 -0
  1194. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/db/fs_detect.py +0 -0
  1195. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/db/queries.py +0 -0
  1196. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/db/schema.py +0 -0
  1197. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/eval/__init__.py +0 -0
  1198. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/__init__.py +0 -0
  1199. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/_vocabulary.py +0 -0
  1200. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/actor_trust.py +0 -0
  1201. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/artifact.py +0 -0
  1202. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/banner.py +0 -0
  1203. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/config_hashes.py +0 -0
  1204. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/control_mapping_vocab.py +0 -0
  1205. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/env_refs.py +0 -0
  1206. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/feedback.py +0 -0
  1207. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/github_reviews.py +0 -0
  1208. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/link.py +0 -0
  1209. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/mcp_receipt_schema.py +0 -0
  1210. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/oscal.py +0 -0
  1211. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/profiles.py +0 -0
  1212. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/provenance.py +0 -0
  1213. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/refs.py +0 -0
  1214. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/evidence/subject.py +0 -0
  1215. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/exit_codes.py +0 -0
  1216. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/fleet/__init__.py +0 -0
  1217. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/graph/__init__.py +0 -0
  1218. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/graph/builder.py +0 -0
  1219. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/graph/layers.py +0 -0
  1220. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/graph/pathfinding.py +0 -0
  1221. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/graph/spectral_forecast.py +0 -0
  1222. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/graph/stats.py +0 -0
  1223. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/guard_errors.py +0 -0
  1224. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/guard_log.py +0 -0
  1225. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/index/__init__.py +0 -0
  1226. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/index/_containing_symbol.py +0 -0
  1227. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/index/discovery.py +0 -0
  1228. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/index/file_roles.py +0 -0
  1229. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/index/gitignore.py +0 -0
  1230. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/index/registry_dispatch.py +0 -0
  1231. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/index/test_conventions.py +0 -0
  1232. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/__init__.py +0 -0
  1233. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/dart_lang.py +0 -0
  1234. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/extractors/__init__.py +0 -0
  1235. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/extractors/kotlin.yaml +0 -0
  1236. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/generic_lang.py +0 -0
  1237. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/go_lang.py +0 -0
  1238. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/java_lang.py +0 -0
  1239. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/kotlin_lang.py +0 -0
  1240. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/rust_lang.py +0 -0
  1241. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/sfxml_lang.py +0 -0
  1242. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/sql_lang.py +0 -0
  1243. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/swift_lang.py +0 -0
  1244. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/languages/typescript_lang.py +0 -0
  1245. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/laws/__init__.py +0 -0
  1246. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/leases/__init__.py +0 -0
  1247. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/mcp_extras/__init__.py +0 -0
  1248. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/mcp_extras/adversarial_compress.py +0 -0
  1249. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/memory/__init__.py +0 -0
  1250. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/modes/__init__.py +0 -0
  1251. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/__init__.py +0 -0
  1252. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/_severity.py +0 -0
  1253. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/errors.py +0 -0
  1254. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/file_role_hints.py +0 -0
  1255. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/framework_filter.py +0 -0
  1256. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/mermaid.py +0 -0
  1257. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/metric_definitions.py +0 -0
  1258. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/project_shape.py +0 -0
  1259. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/risk.py +0 -0
  1260. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/schema_registry.py +0 -0
  1261. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/source_context.py +0 -0
  1262. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/output/structured_unknowns.py +0 -0
  1263. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/policy/__init__.py +0 -0
  1264. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/pr_bundle_primitives.py +0 -0
  1265. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/proof_bundle_render.py +0 -0
  1266. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/quality/__init__.py +0 -0
  1267. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/quality/health_band.py +0 -0
  1268. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/refactor/__init__.py +0 -0
  1269. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/rules/__init__.py +0 -0
  1270. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/rules/ast_match.py +0 -0
  1271. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/runs/__init__.py +0 -0
  1272. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/runtime/__init__.py +0 -0
  1273. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/runtime/lock_modes.py +0 -0
  1274. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/search/__init__.py +0 -0
  1275. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/search/framework_packs.py +0 -0
  1276. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/__init__.py +0 -0
  1277. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/__init__.py +0 -0
  1278. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/api_error_leak.yaml +0 -0
  1279. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/java_deserialization.yaml +0 -0
  1280. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/java_fileupload_path_traversal.yaml +0 -0
  1281. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/java_sqli.yaml +0 -0
  1282. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/js_insecure_jwt_decode.yaml +0 -0
  1283. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/js_localstorage_secrets.yaml +0 -0
  1284. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/js_prototype_pollution.yaml +0 -0
  1285. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/js_ssrf.yaml +0 -0
  1286. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/js_xss.yaml +0 -0
  1287. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/php_command_injection.yaml +0 -0
  1288. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/php_laravel_open_redirect.yaml +0 -0
  1289. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/php_laravel_sqli.yaml +0 -0
  1290. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/php_laravel_xss.yaml +0 -0
  1291. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/php_path_traversal.yaml +0 -0
  1292. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/python_basic.yaml +0 -0
  1293. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/python_deserialization.yaml +0 -0
  1294. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/python_path_traversal.yaml +0 -0
  1295. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/python_socketio_remote_source.yaml +0 -0
  1296. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/python_sqli.yaml +0 -0
  1297. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/python_ssti.yaml +0 -0
  1298. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/python_urllib_open_redirect.yaml +0 -0
  1299. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/security/taint_rules/vue_v_html.yaml +0 -0
  1300. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/__init__.py +0 -0
  1301. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/audit_report/__init__.py +0 -0
  1302. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/audit_report/control-mapping.yaml +0 -0
  1303. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/ci/Jenkinsfile +0 -0
  1304. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/ci/__init__.py +0 -0
  1305. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/ci/azure-pipelines.yml +0 -0
  1306. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/ci/bitbucket-pipelines.yml +0 -0
  1307. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/ci/gitlab-ci.yml +0 -0
  1308. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/templates/ci/slsa-src-l3.yml +0 -0
  1309. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/testing/__init__.py +0 -0
  1310. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/verification_contract.py +0 -0
  1311. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/workspace/__init__.py +0 -0
  1312. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam/world_model/__init__.py +0 -0
  1313. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam_code.egg-info/dependency_links.txt +0 -0
  1314. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam_code.egg-info/entry_points.txt +0 -0
  1315. {roam_code-13.6.1 → roam_code-13.7.0}/src/roam_code.egg-info/top_level.txt +0 -0
  1316. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_actor_refs_provenance.py +0 -0
  1317. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_actor_trust.py +0 -0
  1318. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_adrs.py +0 -0
  1319. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_adversarial.py +0 -0
  1320. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_adversarial_pattern2_guard.py +0 -0
  1321. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_adversarial_runner.py +0 -0
  1322. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_affected.py +0 -0
  1323. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_agent_export.py +0 -0
  1324. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_agent_mode.py +0 -0
  1325. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_agent_modes.py +0 -0
  1326. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_agent_opt.py +0 -0
  1327. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_agent_plan_context.py +0 -0
  1328. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_agent_score.py +0 -0
  1329. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ai_ratio.py +0 -0
  1330. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ai_readiness.py +0 -0
  1331. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ai_rot_reconciliation.py +0 -0
  1332. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_alerts_cmd.py +0 -0
  1333. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_algo_nested_lookup_dataflow.py +0 -0
  1334. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_alias_deprecation.py +0 -0
  1335. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_always_on_budget_cap.py +0 -0
  1336. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_annotations.py +0 -0
  1337. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_anomaly.py +0 -0
  1338. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_api_changes.py +0 -0
  1339. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_approvals_provenance.py +0 -0
  1340. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_architecture_drift.py +0 -0
  1341. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_atomic_io_consolidation.py +0 -0
  1342. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_attest.py +0 -0
  1343. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_audit_trail_aggregate.py +0 -0
  1344. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_audit_trail_conformance.py +0 -0
  1345. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_audit_trail_sequence.py +0 -0
  1346. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_audit_trail_verify.py +0 -0
  1347. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_auth_gaps.py +0 -0
  1348. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_auth_gaps_helper_indirection.py +0 -0
  1349. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_authority_refs_provenance.py +0 -0
  1350. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_authority_refs_source.py +0 -0
  1351. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_authority_run_ledger_corroboration.py +0 -0
  1352. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_auto_count_script.py +0 -0
  1353. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_b6_adversarial_compress.py +0 -0
  1354. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_b8_spectral_forecast.py +0 -0
  1355. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_backend_fixes_round2.py +0 -0
  1356. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_backend_fixes_round3.py +0 -0
  1357. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bare_callers_loop8.py +0 -0
  1358. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_basic.py +0 -0
  1359. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_batch_search_paths.py +0 -0
  1360. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bench_compile.py +0 -0
  1361. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bench_ground_truth.py +0 -0
  1362. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bisect.py +0 -0
  1363. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_blame_cache.py +0 -0
  1364. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bridge_django.py +0 -0
  1365. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bridges.py +0 -0
  1366. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bridges_extended.py +0 -0
  1367. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_brief.py +0 -0
  1368. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_budget.py +0 -0
  1369. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_budget_coverage_survey.py +0 -0
  1370. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_budget_flag.py +0 -0
  1371. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_budget_phase2.py +0 -0
  1372. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bus_factor.py +0 -0
  1373. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_bus_factor_excludes.py +0 -0
  1374. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_caller_metric_definition.py +0 -0
  1375. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_canonical_constant_citations.py +0 -0
  1376. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_canonical_demo_fixture.py +0 -0
  1377. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_capability_decoration.py +0 -0
  1378. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_capability_registry.py +0 -0
  1379. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_capsule.py +0 -0
  1380. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_catalog_registry.py +0 -0
  1381. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_causal_graph.py +0 -0
  1382. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cga.py +0 -0
  1383. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cga_dirty_hash_binding.py +0 -0
  1384. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cga_edge_digest_sort_stability.py +0 -0
  1385. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cga_fail_closed.py +0 -0
  1386. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_changed_files_none_guard.py +0 -0
  1387. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_changelog_phantoms.py +0 -0
  1388. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_check_rules.py +0 -0
  1389. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ci_gate_eval.py +0 -0
  1390. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ci_sarif_guard.py +0 -0
  1391. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cli_cache_atomic.py +0 -0
  1392. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cli_contract.py +0 -0
  1393. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cli_deprecated_commands_schema.py +0 -0
  1394. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_clones.py +0 -0
  1395. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_closure.py +0 -0
  1396. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cloud_sync_detection.py +0 -0
  1397. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_affected_tests_resolution.py +0 -0
  1398. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_affected_tests_sarif.py +0 -0
  1399. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_at.py +0 -0
  1400. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_auth_gaps_sarif.py +0 -0
  1401. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_boundary.py +0 -0
  1402. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_budget_warnings_out.py +0 -0
  1403. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_bus_factor_sarif.py +0 -0
  1404. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_check_rules_warnings_out.py +0 -0
  1405. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_clones_sarif.py +0 -0
  1406. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_closure_resolution.py +0 -0
  1407. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_compiler_corpus.py +0 -0
  1408. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_complexity_warnings_out.py +0 -0
  1409. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_context_resolution.py +0 -0
  1410. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_critique_sarif.py +0 -0
  1411. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_dark_matter_sarif.py +0 -0
  1412. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_dead_resolution.py +0 -0
  1413. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_delete_check_sarif.py +0 -0
  1414. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_diagnose_resolution.py +0 -0
  1415. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_dispatch_trace.py +0 -0
  1416. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_dogfood_aggregate_frontmatter.py +0 -0
  1417. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_duplicates_sarif.py +0 -0
  1418. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_envelope_diff.py +0 -0
  1419. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_fan_sarif.py +0 -0
  1420. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_findings.py +0 -0
  1421. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_flag_dead_sarif.py +0 -0
  1422. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_flag_dead_warnings_out.py +0 -0
  1423. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_guard_resolution.py +0 -0
  1424. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_guard_unresolved.py +0 -0
  1425. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_health_warnings_out.py +0 -0
  1426. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_hotspots_resolution.py +0 -0
  1427. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_hotspots_sarif.py +0 -0
  1428. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_hover_resolution.py +0 -0
  1429. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_impact_resolution.py +0 -0
  1430. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_impact_sarif.py +0 -0
  1431. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_init_no_self_advisory.py +0 -0
  1432. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_invariants_resolution.py +0 -0
  1433. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_laws_sarif.py +0 -0
  1434. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_llm_smells_sarif.py +0 -0
  1435. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_magic_numbers.py +0 -0
  1436. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_magic_numbers_treesitter.py +0 -0
  1437. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_mcp_status_cold_start.py +0 -0
  1438. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_metrics_resolution.py +0 -0
  1439. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_missing_index_sarif.py +0 -0
  1440. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_n1_sarif.py +0 -0
  1441. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_orphan_imports_sarif.py +0 -0
  1442. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_orphan_routes_sarif.py +0 -0
  1443. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_over_fetch_sarif.py +0 -0
  1444. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_partition_sarif.py +0 -0
  1445. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_permit_persist.py +0 -0
  1446. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_plan_refactor_resolution.py +0 -0
  1447. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_plan_refactor_unresolved.py +0 -0
  1448. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_plan_resolution.py +0 -0
  1449. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_pr_bundle_resolution.py +0 -0
  1450. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_preflight_resolution.py +0 -0
  1451. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_pytest_fixtures_resolution.py +0 -0
  1452. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_relate_resolution.py +0 -0
  1453. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_safe_delete_resolution.py +0 -0
  1454. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_safe_zones_resolution.py +0 -0
  1455. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_smells_only_pushdown.py +0 -0
  1456. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_smells_resolution.py +0 -0
  1457. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_smells_sarif.py +0 -0
  1458. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_symbol_resolution.py +0 -0
  1459. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_test_impact_sarif.py +0 -0
  1460. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_test_scaffold_resolution.py +0 -0
  1461. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_testmap_resolution.py +0 -0
  1462. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_trace_resolution.py +0 -0
  1463. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_verify_imports_sarif.py +0 -0
  1464. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_visualize_resolution.py +0 -0
  1465. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cmd_why_resolution.py +0 -0
  1466. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_codeowners.py +0 -0
  1467. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_command_graph.py +0 -0
  1468. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_command_help_template.py +0 -0
  1469. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_commands_architecture.py +0 -0
  1470. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_commands_exploration.py +0 -0
  1471. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_commands_health.py +0 -0
  1472. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_commands_refactoring.py +0 -0
  1473. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_commands_workflow.py +0 -0
  1474. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compare_cli.py +0 -0
  1475. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compat_sweep.py +0 -0
  1476. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_competitor_site_data.py +0 -0
  1477. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_cache.py +0 -0
  1478. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_consumers_callers.py +0 -0
  1479. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_declared_entry.py +0 -0
  1480. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_describe_what_for.py +0 -0
  1481. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_entity_grounding.py +0 -0
  1482. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_index_staleness.py +0 -0
  1483. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_injection_advice.py +0 -0
  1484. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_inproc_lock.py +0 -0
  1485. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_intent_probes.py +0 -0
  1486. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_known_findings.py +0 -0
  1487. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_likely_files_rerank.py +0 -0
  1488. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_parallel_impl_guard.py +0 -0
  1489. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_probe_families_w11_w12_w13.py +0 -0
  1490. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_repo_structure.py +0 -0
  1491. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_self_contained.py +0 -0
  1492. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_session_meta.py +0 -0
  1493. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_stats_by_mode.py +0 -0
  1494. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_w132_w141.py +0 -0
  1495. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_w142_w146.py +0 -0
  1496. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_w40_polish.py +0 -0
  1497. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compile_w46_w55_polish.py +0 -0
  1498. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compiler_guard_bridge.py +0 -0
  1499. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_complete_prefix.py +0 -0
  1500. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compound_recipe_registry.py +0 -0
  1501. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_compound_registry.py +0 -0
  1502. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_comprehensive.py +0 -0
  1503. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_config.py +0 -0
  1504. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_config_state_uniform_vocabulary.py +0 -0
  1505. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_congestion.py +0 -0
  1506. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_context_propagation.py +0 -0
  1507. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_conventions_cmd.py +0 -0
  1508. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_conventions_consolidation.py +0 -0
  1509. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_corpus_routing_lock.py +0 -0
  1510. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_count_drift_hook.py +0 -0
  1511. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_count_drift_no_overlap.py +0 -0
  1512. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cut.py +0 -0
  1513. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_cycles.py +0 -0
  1514. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dark_matter.py +0 -0
  1515. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dark_matter_helpers.py +0 -0
  1516. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dart.py +0 -0
  1517. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dashboard.py +0 -0
  1518. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dashboard_unique_signals.py +0 -0
  1519. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_db_tuning.py +0 -0
  1520. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_db_user_version.py +0 -0
  1521. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dead_aging.py +0 -0
  1522. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dead_code_intra_module_regression.py +0 -0
  1523. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dead_mcp_seeding.py +0 -0
  1524. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dead_vue_consumers.py +0 -0
  1525. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_decorator_registry_parity.py +0 -0
  1526. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_defer_loading.py +0 -0
  1527. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_demo_fixtures.py +0 -0
  1528. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_demo_gif_asset.py +0 -0
  1529. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_deps_importer_list_envelope.py +0 -0
  1530. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_describe.py +0 -0
  1531. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_describe_stack_leak.py +0 -0
  1532. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_destructive_tools_derived.py +0 -0
  1533. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_detail_flag.py +0 -0
  1534. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_detail_flag_hints.py +0 -0
  1535. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_detail_semantics.py +0 -0
  1536. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_detector_file_scope.py +0 -0
  1537. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_detector_precision.py +0 -0
  1538. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_deterministic_output.py +0 -0
  1539. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dev_profile.py +0 -0
  1540. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_diff_empty_state.py +0 -0
  1541. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_difficulty_scoring.py +0 -0
  1542. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dispatch_trace_counterfactual.py +0 -0
  1543. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doc_consistency.py +0 -0
  1544. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doc_hygiene_ci_gate.py +0 -0
  1545. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doc_link_anchors.py +0 -0
  1546. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doc_no_phantom_cli.py +0 -0
  1547. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doc_staleness.py +0 -0
  1548. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_docker_assets.py +0 -0
  1549. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_docs_coverage.py +0 -0
  1550. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_docs_index.py +0 -0
  1551. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_docs_site_quality.py +0 -0
  1552. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doctor.py +0 -0
  1553. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doctor_breadcrumb.py +0 -0
  1554. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doctor_ci_workflow_drift.py +0 -0
  1555. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doctor_hints_in_errors.py +0 -0
  1556. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doctor_refresh_install.py +0 -0
  1557. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_doctor_stale_signal_advisory.py +0 -0
  1558. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dogfood.py +0 -0
  1559. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dogfood_aggregate.py +0 -0
  1560. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dogfood_dedup_check.py +0 -0
  1561. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_dogfood_dedup_check_e2e.py +0 -0
  1562. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_drift.py +0 -0
  1563. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_drift_by_team.py +0 -0
  1564. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_duplicates.py +0 -0
  1565. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_duplicates_bounded.py +0 -0
  1566. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_effects.py +0 -0
  1567. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_empty_state_framing.py +0 -0
  1568. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_endpoints.py +0 -0
  1569. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_entry_points_cmd.py +0 -0
  1570. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_env_refs_helper.py +0 -0
  1571. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_envelope_diff_baseline.py +0 -0
  1572. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_envelope_introspect.py +0 -0
  1573. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_envelope_meta_roam_version.py +0 -0
  1574. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_envelope_section_budget.py +0 -0
  1575. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_envelope_size_budget.py +0 -0
  1576. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_banner.py +0 -0
  1577. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_collector.py +0 -0
  1578. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_diff_cmd.py +0 -0
  1579. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_doctor.py +0 -0
  1580. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_feedback.py +0 -0
  1581. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_limitations.py +0 -0
  1582. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_oscal.py +0 -0
  1583. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_oscal_ar.py +0 -0
  1584. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_packet_size.py +0 -0
  1585. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_policy.py +0 -0
  1586. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_profiles.py +0 -0
  1587. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_provenance.py +0 -0
  1588. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_redaction_snapshots.py +0 -0
  1589. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_evidence_stale_producer.py +0 -0
  1590. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_exclude_patterns.py +0 -0
  1591. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_exit_codes.py +0 -0
  1592. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_extension_constant_consolidation.py +0 -0
  1593. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_extension_versioning.py +0 -0
  1594. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_extract_mode_usage.py +0 -0
  1595. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_extract_regen_signal.py +0 -0
  1596. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_extract_typed.py +0 -0
  1597. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_extractor_grammar_drift.py +0 -0
  1598. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_extractor_smoke.py +0 -0
  1599. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_fan_test_prod_split.py +0 -0
  1600. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_fetch_handle_chunked.py +0 -0
  1601. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_find_project_root_worktree.py +0 -0
  1602. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_find_symbol_tier_stamp.py +0 -0
  1603. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_finding_suppress.py +0 -0
  1604. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_audit_trail_conformance.py +0 -0
  1605. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_audit_trail_verify.py +0 -0
  1606. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_auth_gaps.py +0 -0
  1607. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_bus_factor.py +0 -0
  1608. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_canonical_detectors.py +0 -0
  1609. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_clones.py +0 -0
  1610. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_complexity.py +0 -0
  1611. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_conventions.py +0 -0
  1612. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_critique.py +0 -0
  1613. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_dark_matter.py +0 -0
  1614. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_dead.py +0 -0
  1615. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_detector_count_drift.py +0 -0
  1616. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_doctor.py +0 -0
  1617. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_duplicates.py +0 -0
  1618. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_fingerprint.py +0 -0
  1619. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_health.py +0 -0
  1620. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_hotspots.py +0 -0
  1621. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_laws.py +0 -0
  1622. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_missing_index.py +0 -0
  1623. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_n1.py +0 -0
  1624. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_orphan_imports.py +0 -0
  1625. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_over_fetch.py +0 -0
  1626. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_pr_risk.py +0 -0
  1627. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_registry.py +0 -0
  1628. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_smells.py +0 -0
  1629. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_taint.py +0 -0
  1630. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_vibe_check.py +0 -0
  1631. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_findings_vulns.py +0 -0
  1632. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_first_error_message_preserved.py +0 -0
  1633. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_fixes.py +0 -0
  1634. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_fleet.py +0 -0
  1635. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_fn_coupling.py +0 -0
  1636. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_forecast.py +0 -0
  1637. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_formatter_agent_contract.py +0 -0
  1638. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_formatter_preserved_list_fields.py +0 -0
  1639. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_formatters.py +0 -0
  1640. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_foxpro.py +0 -0
  1641. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_fts5_docstring.py +0 -0
  1642. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_fts5_incremental.py +0 -0
  1643. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_gate_presets.py +0 -0
  1644. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_git_helpers.py +0 -0
  1645. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_github_reviews_parser.py +0 -0
  1646. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_global_ci_mode.py +0 -0
  1647. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_god_components_kind_guard.py +0 -0
  1648. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_graph_layers.py +0 -0
  1649. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_grep_extended.py +0 -0
  1650. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_grep_integration.py +0 -0
  1651. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_grep_performance.py +0 -0
  1652. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_grep_xlang.py +0 -0
  1653. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard.py +0 -0
  1654. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_clean.py +0 -0
  1655. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_diff.py +0 -0
  1656. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_doctor.py +0 -0
  1657. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_errors.py +0 -0
  1658. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_history.py +0 -0
  1659. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_init.py +0 -0
  1660. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_log.py +0 -0
  1661. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_rules.py +0 -0
  1662. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_guard_rules_cli.py +0 -0
  1663. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_health_gate.py +0 -0
  1664. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_hooks.py +0 -0
  1665. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_hooks_claude_setup.py +0 -0
  1666. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_hostile_markdown_inputs.py +0 -0
  1667. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_hotspots.py +0 -0
  1668. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_hover.py +0 -0
  1669. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_idempotency.py +0 -0
  1670. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_idiom_precision.py +0 -0
  1671. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ignore_findings_warnings_out.py +0 -0
  1672. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_impact_bounded.py +0 -0
  1673. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_index.py +0 -0
  1674. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_index_import_verification.py +0 -0
  1675. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_index_light_mode.py +0 -0
  1676. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_index_step_manifest.py +0 -0
  1677. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_init_cmd.py +0 -0
  1678. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_init_no_unsolicited_writes.py +0 -0
  1679. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_install_check.py +0 -0
  1680. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_intent.py +0 -0
  1681. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_invariants.py +0 -0
  1682. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_iri_migration.py +0 -0
  1683. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_is_excluded_path_none_guard.py +0 -0
  1684. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_is_test_path.py +0 -0
  1685. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_json_contracts.py +0 -0
  1686. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_json_error_envelope.py +0 -0
  1687. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_json_usage_path_envelope.py +0 -0
  1688. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_kotlin_swift_extractors.py +0 -0
  1689. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_l1_rate_floor.py +0 -0
  1690. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_language_corpus.py +0 -0
  1691. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_languages.py +0 -0
  1692. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_laravel_fp_fixes.py +0 -0
  1693. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_law4_anchor_counts.py +0 -0
  1694. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_law4_anchoring.py +0 -0
  1695. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_law4_lint.py +0 -0
  1696. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_law4_residual.py +0 -0
  1697. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_law4_stragglers.py +0 -0
  1698. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_leak_gate_exemplars.py +0 -0
  1699. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_lease_system.py +0 -0
  1700. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ledger_signing.py +0 -0
  1701. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_library_api.py +0 -0
  1702. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_llm_smells.py +0 -0
  1703. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_load_suppressions_warnings_out.py +0 -0
  1704. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_load_yaml_with_warnings.py +0 -0
  1705. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_loop_e2e.py +0 -0
  1706. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_loop_performance.py +0 -0
  1707. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_manifest.py +0 -0
  1708. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_math_fp_fixes.py +0 -0
  1709. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_math_tips.py +0 -0
  1710. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_W303_wrappers.py +0 -0
  1711. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_W304_wrappers.py +0 -0
  1712. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_W305_wrappers.py +0 -0
  1713. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_W306_wrappers.py +0 -0
  1714. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_architecture_wrappers.py +0 -0
  1715. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_batch_search_complete_parity.py +0 -0
  1716. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_compat_profile.py +0 -0
  1717. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_contract_enforcement.py +0 -0
  1718. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_error_envelope_status.py +0 -0
  1719. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_exploration_wrappers.py +0 -0
  1720. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_guard_wrappers_dispatch.py +0 -0
  1721. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_handle_off.py +0 -0
  1722. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_health_wrappers.py +0 -0
  1723. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_json_parse_defense.py +0 -0
  1724. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_outputschema_wave_b1.py +0 -0
  1725. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_outputschema_wave_b2.py +0 -0
  1726. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_outputschema_wave_b3.py +0 -0
  1727. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_outputschema_wave_b4.py +0 -0
  1728. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_outputschema_wave_b5.py +0 -0
  1729. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_outputschema_wave_b5b.py +0 -0
  1730. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_param_aliases.py +0 -0
  1731. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_param_aliases_input_path.py +0 -0
  1732. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_param_names.py +0 -0
  1733. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_pattern1_variant_b.py +0 -0
  1734. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_receipt_emitter.py +0 -0
  1735. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_receipt_json_schema.py +0 -0
  1736. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_receipt_schema_in_wheel.py +0 -0
  1737. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_refactoring_wrappers.py +0 -0
  1738. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_setup.py +0 -0
  1739. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_tool_metadata_completeness.py +0 -0
  1740. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_tool_side_effect_metadata.py +0 -0
  1741. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_tool_side_effects.py +0 -0
  1742. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_tool_versioning.py +0 -0
  1743. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mcp_wrapper_coverage.py +0 -0
  1744. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_memory_substrate.py +0 -0
  1745. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mermaid.py +0 -0
  1746. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_metric_definition_sidecars.py +0 -0
  1747. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_metrics_cmd.py +0 -0
  1748. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_metrics_push.py +0 -0
  1749. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_migration_plan.py +0 -0
  1750. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_migration_safety.py +0 -0
  1751. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_minimap.py +0 -0
  1752. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_missing_index.py +0 -0
  1753. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_missing_index_unconditional.py +0 -0
  1754. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_missing_index_unconditional_first.py +0 -0
  1755. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mode_bootstrap_allowlist.py +0 -0
  1756. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mode_classification_coverage.py +0 -0
  1757. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mode_enforcement_dispatch.py +0 -0
  1758. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mutate.py +0 -0
  1759. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_mutate_apply.py +0 -0
  1760. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_n1.py +0 -0
  1761. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_n1_fixes.py +0 -0
  1762. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_naming_convention_sampling.py +0 -0
  1763. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_next_router.py +0 -0
  1764. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_next_steps.py +0 -0
  1765. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_no_internal_language.py +0 -0
  1766. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_non_idempotent_tools_derived.py +0 -0
  1767. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_non_read_only_tools_derived.py +0 -0
  1768. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_observability_opt.py +0 -0
  1769. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_onboard.py +0 -0
  1770. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_orchestrate.py +0 -0
  1771. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_orphan_imports_filters.py +0 -0
  1772. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_orphan_routes.py +0 -0
  1773. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_oss_bench_harness.py +0 -0
  1774. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_over_fetch.py +0 -0
  1775. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_over_fetch_three_state.py +0 -0
  1776. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_owner_path_not_found.py +0 -0
  1777. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_package_data_wheel_drift.py +0 -0
  1778. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pagerank_scipy_core.py +0 -0
  1779. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pagerank_truncation.py +0 -0
  1780. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_parallel_analyzers.py +0 -0
  1781. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_parallel_impl_guard.py +0 -0
  1782. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_partition.py +0 -0
  1783. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_path_coverage_classify.py +0 -0
  1784. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pattern1_envelope_shape.py +0 -0
  1785. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pattern2_silent_success_disclosure.py +0 -0
  1786. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pattern3c_reconciliation.py +0 -0
  1787. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pattern_1_variant_d_resolver_audit.py +0 -0
  1788. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_patterns_cmd.py +0 -0
  1789. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_per_finding_suppressions_warnings_out.py +0 -0
  1790. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_performance.py +0 -0
  1791. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_personalized_pagerank.py +0 -0
  1792. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_phase0_commands.py +0 -0
  1793. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_plan.py +0 -0
  1794. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_plan_artifact_selector.py +0 -0
  1795. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_plugin_dogfood_rails.py +0 -0
  1796. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_policy_decisions_provenance.py +0 -0
  1797. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_analyze.py +0 -0
  1798. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_analyze_cache.py +0 -0
  1799. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_analyze_diff_failure_propagation.py +0 -0
  1800. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_analyze_edge_cases.py +0 -0
  1801. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_analyze_helpers.py +0 -0
  1802. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_analyze_v2_signals.py +0 -0
  1803. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_bundle.py +0 -0
  1804. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_bundle_causal_diff.py +0 -0
  1805. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_bundle_nonexistent_symbol.py +0 -0
  1806. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_bundle_r28_integration.py +0 -0
  1807. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_comment_render.py +0 -0
  1808. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_comment_script.py +0 -0
  1809. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_diff.py +0 -0
  1810. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_prep_pattern2_guard.py +0 -0
  1811. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_replay_github_reviews.py +0 -0
  1812. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pr_risk_author.py +0 -0
  1813. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_prepush_gate_wired.py +0 -0
  1814. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_producer_collector_contracts.py +0 -0
  1815. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_progress.py +0 -0
  1816. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_progressive_disclosure.py +0 -0
  1817. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_proof_bundle.py +0 -0
  1818. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_properties.py +0 -0
  1819. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_pytest_fixtures.py +0 -0
  1820. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_python_extractor_docstring_safety.py +0 -0
  1821. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_python_extractor_v2.py +0 -0
  1822. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_python_idioms_e2e.py +0 -0
  1823. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_python_pivot.py +0 -0
  1824. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_quality_dashboard.py +0 -0
  1825. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_readme_surface_consistency.py +0 -0
  1826. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_realworld_feedback.py +0 -0
  1827. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_refactoring_intelligence.py +0 -0
  1828. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_registered_tool_side_effects.py +0 -0
  1829. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_registry_dispatch.py +0 -0
  1830. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_regression_fp_corpus.py +0 -0
  1831. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_relate.py +0 -0
  1832. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_relations.py +0 -0
  1833. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_rename_edge_recovery.py +0 -0
  1834. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_replay.py +0 -0
  1835. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_repo_root_helper.py +0 -0
  1836. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_report.py +0 -0
  1837. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_reset_clean.py +0 -0
  1838. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_resilience.py +0 -0
  1839. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_resolution_disclosure.py +0 -0
  1840. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_resolve.py +0 -0
  1841. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_resolve_file_symbols_substrate.py +0 -0
  1842. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_resolver_import_target_preference.py +0 -0
  1843. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_retrieve_cross_repo.py +0 -0
  1844. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_retrieve_seeds.py +0 -0
  1845. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_risk.py +0 -0
  1846. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_roam_diff_schema_validation.py +0 -0
  1847. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_roam_full_coupling.py +0 -0
  1848. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ruby.py +0 -0
  1849. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_rules.py +0 -0
  1850. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_rules_ast_match.py +0 -0
  1851. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_rules_community_pack.py +0 -0
  1852. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_rules_dataflow.py +0 -0
  1853. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_rules_engine_warnings_out.py +0 -0
  1854. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_rules_symbol_requirements.py +0 -0
  1855. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_rules_validate.py +0 -0
  1856. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_runs_auto_log.py +0 -0
  1857. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_runs_ledger.py +0 -0
  1858. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_runtime_score.py +0 -0
  1859. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_salesforce.py +0 -0
  1860. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_consumer_list.py +0 -0
  1861. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_consumers_schema.py +0 -0
  1862. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_disclosure_coverage.py +0 -0
  1863. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_enrichment.py +0 -0
  1864. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_flag.py +0 -0
  1865. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_runtime_notifications.py +0 -0
  1866. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_runtime_overrides_followup.py +0 -0
  1867. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_runtime_overrides_helper.py +0 -0
  1868. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_suppressions_warnings_out.py +0 -0
  1869. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sarif_tag_coverage.py +0 -0
  1870. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sbom_fp_categories.py +0 -0
  1871. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_scala.py +0 -0
  1872. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_schema_versioning.py +0 -0
  1873. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_search_enrichment_loop3.py +0 -0
  1874. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_secrets.py +0 -0
  1875. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_secrets_v2.py +0 -0
  1876. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_security_redact.py +0 -0
  1877. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_semantic_diff.py +0 -0
  1878. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_side_effects.py +0 -0
  1879. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_side_effects_typescript.py +0 -0
  1880. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_simulate_departure.py +0 -0
  1881. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_situation_compounds.py +0 -0
  1882. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sketch.py +0 -0
  1883. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_skill_generate.py +0 -0
  1884. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_smells.py +0 -0
  1885. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_smells_confidence_mapping_parity.py +0 -0
  1886. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_smells_detector_count_drift.py +0 -0
  1887. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_smoke.py +0 -0
  1888. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_snake_case_function_lint.py +0 -0
  1889. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_source_context.py +0 -0
  1890. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_spectral_bounded.py +0 -0
  1891. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_split_cmd.py +0 -0
  1892. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_sql.py +0 -0
  1893. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_staged_rollout_readiness.py +0 -0
  1894. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_stale_refs_corruption.py +0 -0
  1895. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_stale_refs_dogfood_fixes.py +0 -0
  1896. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_state_family_aliases.py +0 -0
  1897. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_strip_list_payloads_preserves_warnings_out.py +0 -0
  1898. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_structured_unknown_filter.py +0 -0
  1899. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_suggest_reviewers.py +0 -0
  1900. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_supply_chain.py +0 -0
  1901. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_suppression_adversarial.py +0 -0
  1902. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_suppression_append_only.py +0 -0
  1903. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_suppressions_unified_schema.py +0 -0
  1904. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_surface_consistency.py +0 -0
  1905. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_surface_counts.py +0 -0
  1906. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_surface_counts_wheel_layout.py +0 -0
  1907. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_surface_top_level_keys.py +0 -0
  1908. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_synergy_next_mode.py +0 -0
  1909. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_synergy_pr_bundle_mode.py +0 -0
  1910. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_synergy_runs_mode.py +0 -0
  1911. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint.py +0 -0
  1912. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint_analysis.py +0 -0
  1913. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint_intraprocedural.py +0 -0
  1914. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint_java_deserialization.py +0 -0
  1915. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint_java_sqli.py +0 -0
  1916. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint_owasp_top10.py +0 -0
  1917. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint_php_laravel.py +0 -0
  1918. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint_rule_hygiene.py +0 -0
  1919. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_taint_ssti.py +0 -0
  1920. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_task_optional_tools_derived.py +0 -0
  1921. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_task_required_tools_derived.py +0 -0
  1922. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_test_conventions.py +0 -0
  1923. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_test_detection_consolidation.py +0 -0
  1924. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_test_scaffold.py +0 -0
  1925. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_testmap.py +0 -0
  1926. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_metadata_completeness.py +0 -0
  1927. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_metadata_coverage.py +0 -0
  1928. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_metadata_flags.py +0 -0
  1929. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_metadata_side_effect_coverage.py +0 -0
  1930. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_metadata_side_effects.py +0 -0
  1931. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_metadata_side_effects_complete.py +0 -0
  1932. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_metadata_side_effects_coverage.py +0 -0
  1933. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_side_effect_metadata.py +0 -0
  1934. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_side_effect_metadata_coverage.py +0 -0
  1935. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tool_side_effect_metadata_declared.py +0 -0
  1936. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_top_flag_consistency.py +0 -0
  1937. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tour_cmd.py +0 -0
  1938. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_trace_bounded.py +0 -0
  1939. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_triage.py +0 -0
  1940. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_tx_boundaries.py +0 -0
  1941. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_understand_health_band_parity.py +0 -0
  1942. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_user_version_discipline.py +0 -0
  1943. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_uses_call_line_loop5.py +0 -0
  1944. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_uses_cmd.py +0 -0
  1945. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1215_passes.py +0 -0
  1946. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1216_passes_41_50.py +0 -0
  1947. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1216_passes_51_60.py +0 -0
  1948. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1217_passes_61_80.py +0 -0
  1949. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1218_passes_81_90.py +0 -0
  1950. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1219_passes_91_100.py +0 -0
  1951. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1220_passes_101_110.py +0 -0
  1952. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1221_query_timeout.py +0 -0
  1953. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v1221_untested_commands.py +0 -0
  1954. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v2_edge_cases.py +0 -0
  1955. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v2_integration.py +0 -0
  1956. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v6_features.py +0 -0
  1957. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v71_features.py +0 -0
  1958. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v7_features.py +0 -0
  1959. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_v82_features.py +0 -0
  1960. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_validate_plan.py +0 -0
  1961. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verification_contract_and_verdict.py +0 -0
  1962. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify.py +0 -0
  1963. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_baseline.py +0 -0
  1964. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_changed_lines.py +0 -0
  1965. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_deep.py +0 -0
  1966. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_dir_target.py +0 -0
  1967. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_dogfood_fps.py +0 -0
  1968. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_noqa.py +0 -0
  1969. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_secrets_gate.py +0 -0
  1970. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_self_dogfood_lock.py +0 -0
  1971. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_verify_suppressions.py +0 -0
  1972. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_version_stamps.py +0 -0
  1973. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_vibe_check.py +0 -0
  1974. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_visualize.py +0 -0
  1975. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_vocabulary_drift_w198.py +0 -0
  1976. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_vue_sfc_imports.py +0 -0
  1977. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_vue_vitest_detection.py +0 -0
  1978. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_vuln.py +0 -0
  1979. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_vuln_store_ingest.py +0 -0
  1980. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_vulns_cmd.py +0 -0
  1981. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_followup_b_adversarial_severity.py +0 -0
  1982. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_followup_c_severity_parity.py +0 -0
  1983. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_followup_d_severity_parity.py +0 -0
  1984. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_followup_f_api_changes_severity.py +0 -0
  1985. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_followup_g_severity_shortcode_parity.py +0 -0
  1986. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_followup_h_api_drift_severity.py +0 -0
  1987. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_followup_j_laws_confidence_vocab.py +0 -0
  1988. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_smells_severity_5tier.py +0 -0
  1989. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1005_smells_severity_parity.py +0 -0
  1990. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1030_followup_a_alerts_budget_load_status.py +0 -0
  1991. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1030_followup_b_health_load_status.py +0 -0
  1992. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1030_followup_c_check_rules_load_status.py +0 -0
  1993. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1030_followup_d_fitness_load_status.py +0 -0
  1994. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1030_followup_f_rules_load_status.py +0 -0
  1995. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1030_load_status.py +0 -0
  1996. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1038_extract_typed_integration.py +0 -0
  1997. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1057_math_unknown_detectors.py +0 -0
  1998. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1060_sarif_runtime_notifications_extension.py +0 -0
  1999. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1068_search_unknown_kind.py +0 -0
  2000. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1069_endpoints_unknown_framework.py +0 -0
  2001. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1070_test_scaffold_unknown_framework.py +0 -0
  2002. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1074_workflow_explain_unknown.py +0 -0
  2003. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1075_endpoints_unknown_method.py +0 -0
  2004. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1079_oracle_unknown.py +0 -0
  2005. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1083_followup_2_cli_difflib.py +0 -0
  2006. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1083_followup_3_multi_value.py +0 -0
  2007. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1083_followup_adopters.py +0 -0
  2008. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1083_to_summary_payload.py +0 -0
  2009. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1084_denominator_clamp.py +0 -0
  2010. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1085_fingerprint_cap.py +0 -0
  2011. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1086_cmd_cut_cap.py +0 -0
  2012. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1088_overall_risk_case_insensitive.py +0 -0
  2013. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1100_schema_violation_partial_success.py +0 -0
  2014. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1101_list_counts_symmetric.py +0 -0
  2015. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1102_preserved_truncations_symmetric.py +0 -0
  2016. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1111_click_argument_name_lint.py +0 -0
  2017. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1121_click_argument_file_lint.py +0 -0
  2018. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1121_click_argument_input_path_lint.py +0 -0
  2019. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1121_click_argument_pattern_lint.py +0 -0
  2020. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1121_click_argument_target_lint.py +0 -0
  2021. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1136_click_option_input_path_dest_lint.py +0 -0
  2022. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1142_followup_b_cap_disclosure.py +0 -0
  2023. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1142_followup_cap_disclosure.py +0 -0
  2024. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1142_limit_top_aliases.py +0 -0
  2025. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1253_hash_drift.py +0 -0
  2026. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1254_evidence_stale_consumer.py +0 -0
  2027. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1255_config_hashes.py +0 -0
  2028. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1261_vsa_stale_consumer.py +0 -0
  2029. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1262_evidence_doctor_stale_banner.py +0 -0
  2030. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1272_unresolved_exit_convention.py +0 -0
  2031. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1279_producer_integration.py +0 -0
  2032. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w12_dimension_real_names.py +0 -0
  2033. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1310_tier_discard_preflight_plan.py +0 -0
  2034. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w1311_describe_understand_minimap_resolver.py +0 -0
  2035. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w211_refs_extensions.py +0 -0
  2036. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w251_ci_env_detection.py +0 -0
  2037. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w350_doctor_replay_permits_authority.py +0 -0
  2038. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w350_drive_by_oscal_authority.py +0 -0
  2039. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w365_followup_2_capability_invariants.py +0 -0
  2040. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w365_followup_capability_side_effect.py +0 -0
  2041. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w365_tool_metadata_annotations_parity.py +0 -0
  2042. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w420_no_runtime_count_headline.py +0 -0
  2043. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w420_surface_count_plugin_invariant.py +0 -0
  2044. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w421_regex_toggle.py +0 -0
  2045. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w43_deps_multi.py +0 -0
  2046. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w444_mcp_tool_names_no_dedupe.py +0 -0
  2047. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w452_python_taint_indexer_gap.py +0 -0
  2048. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w462_landing_page_tool_count_drift.py +0 -0
  2049. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w484_templates_ci_reachable.py +0 -0
  2050. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w489_a_followup_cga_qualified_only.py +0 -0
  2051. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w489_a_taint_qualified_only_lint.py +0 -0
  2052. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w512_edge_kinds_drift.py +0 -0
  2053. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w543_edge_kind_canonical.py +0 -0
  2054. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w543_followup_c_migration.py +0 -0
  2055. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w543_followup_migration.py +0 -0
  2056. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w547_severity_drift.py +0 -0
  2057. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w588_fragile_path_drift.py +0 -0
  2058. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w589_release_lease_warnings_out.py +0 -0
  2059. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w590_lease_policy_no_project_root.py +0 -0
  2060. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w591_permit_policy_no_project_root.py +0 -0
  2061. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w592_gc_expired_leases_warnings_out.py +0 -0
  2062. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w596_read_run_meta_warnings_out.py +0 -0
  2063. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w597_daemon_read_warnings_out.py +0 -0
  2064. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w598_pr_analyze_cache_warnings_out.py +0 -0
  2065. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w600_config_hashes_warnings_out.py +0 -0
  2066. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w601_signing_warnings_out.py +0 -0
  2067. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w602_metrics_push_warnings_out.py +0 -0
  2068. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w603_open_db_warnings_out.py +0 -0
  2069. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w604_findings_readers_warnings_out.py +0 -0
  2070. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w606_framework_packs_warnings_out.py +0 -0
  2071. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_a_cmd_search_semantic_warnings_out_envelope.py +0 -0
  2072. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_aa_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  2073. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ab_cmd_pr_risk_warnings_out_envelope.py +0 -0
  2074. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ac_cmd_pr_prep_warnings_out_envelope.py +0 -0
  2075. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ad_cmd_attest_warnings_out_envelope.py +0 -0
  2076. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ae_cmd_pr_bundle_warnings_out_envelope.py +0 -0
  2077. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_af_cmd_cga_warnings_out_envelope.py +0 -0
  2078. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ag_cmd_for_refactor_warnings_out_envelope.py +0 -0
  2079. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ah_cmd_pr_replay_warnings_out_envelope.py +0 -0
  2080. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ai_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  2081. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_aj_for_security_review_warnings_out_envelope.py +0 -0
  2082. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ak_cmd_supply_chain_warnings_out_envelope.py +0 -0
  2083. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_al_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -0
  2084. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_am_cmd_sbom_warnings_out_envelope.py +0 -0
  2085. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_an_cmd_postmortem_warnings_out_envelope.py +0 -0
  2086. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ao_for_bug_fix_warnings_out_envelope.py +0 -0
  2087. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ap_cmd_audit_trail_export_warnings_out_envelope.py +0 -0
  2088. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_aq_cmd_vulns_warnings_out_envelope.py +0 -0
  2089. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ar_for_new_feature_warnings_out_envelope.py +0 -0
  2090. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_as_cmd_runs_warnings_out_envelope.py +0 -0
  2091. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_at_cmd_evidence_doctor_warnings_out_envelope.py +0 -0
  2092. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_au_cmd_vuln_reach_warnings_out_envelope.py +0 -0
  2093. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_av_cmd_dogfood_warnings_out_envelope.py +0 -0
  2094. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_aw_cmd_preflight_warnings_out_envelope.py +0 -0
  2095. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ax_cmd_evidence_diff_warnings_out_envelope.py +0 -0
  2096. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ay_cmd_taint_warnings_out_envelope.py +0 -0
  2097. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_az_cmd_minimap_warnings_out_envelope.py +0 -0
  2098. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_b_cmd_retrieve_warnings_out_envelope.py +0 -0
  2099. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ba_cmd_health_warnings_out_envelope.py +0 -0
  2100. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bb_cmd_impact_warnings_out_envelope.py +0 -0
  2101. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bc_cmd_understand_warnings_out_envelope.py +0 -0
  2102. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bd_cmd_capsule_warnings_out_envelope.py +0 -0
  2103. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_be_cmd_doctor_warnings_out_envelope.py +0 -0
  2104. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bf_cmd_context_warnings_out_envelope.py +0 -0
  2105. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bg_cmd_debt_warnings_out_envelope.py +0 -0
  2106. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bh_cmd_diagnose_warnings_out_envelope.py +0 -0
  2107. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bi_cmd_retrieve_warnings_out_envelope.py +0 -0
  2108. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bj_cmd_complexity_warnings_out_envelope.py +0 -0
  2109. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bk_cmd_dark_matter_warnings_out_envelope.py +0 -0
  2110. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bl_cmd_critique_warnings_out_envelope.py +0 -0
  2111. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bm_cmd_duplicates_warnings_out_envelope.py +0 -0
  2112. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bn_cmd_smells_warnings_out_envelope.py +0 -0
  2113. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bo_cmd_search_semantic_warnings_out_envelope.py +0 -0
  2114. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bp_cmd_diff_warnings_out_envelope.py +0 -0
  2115. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bq_cmd_clones_warnings_out_envelope.py +0 -0
  2116. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bs_cmd_vibe_check_warnings_out_envelope.py +0 -0
  2117. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bt_cmd_attest_warnings_out_envelope.py +0 -0
  2118. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bu_cmd_pr_risk_warnings_out_envelope.py +0 -0
  2119. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bv_cmd_grep_warnings_out_envelope.py +0 -0
  2120. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bw_cmd_pr_bundle_warnings_out_envelope.py +0 -0
  2121. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bx_cmd_dead_warnings_out_envelope.py +0 -0
  2122. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_by_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  2123. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_bz_cmd_cga_warnings_out_envelope.py +0 -0
  2124. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_c_cmd_findings_warnings_out_envelope.py +0 -0
  2125. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ca_cmd_pr_replay_warnings_out_envelope.py +0 -0
  2126. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cb_cmd_n1_warnings_out_envelope.py +0 -0
  2127. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cc_cmd_pr_prep_warnings_out_envelope.py +0 -0
  2128. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cd_cmd_supply_chain_warnings_out_envelope.py +0 -0
  2129. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ce_cmd_over_fetch_warnings_out_envelope.py +0 -0
  2130. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cf_cmd_evidence_doctor_warnings_out_envelope.py +0 -0
  2131. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cg_cmd_sbom_warnings_out_envelope.py +0 -0
  2132. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ch_cmd_vulns_warnings_out_envelope.py +0 -0
  2133. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ci_cmd_missing_index_warnings_out_envelope.py +0 -0
  2134. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cj_cmd_taint_warnings_out_envelope.py +0 -0
  2135. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ck_cmd_evidence_diff_warnings_out_envelope.py +0 -0
  2136. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cl_cmd_vuln_reach_warnings_out_envelope.py +0 -0
  2137. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cm_cmd_auth_gaps_warnings_out_envelope.py +0 -0
  2138. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cn_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  2139. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_co_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -0
  2140. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cr_cmd_audit_trail_export_warnings_out_envelope.py +0 -0
  2141. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cr_cmd_orphan_imports_warnings_out_envelope.py +0 -0
  2142. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ct_cmd_runs_warnings_out_envelope.py +0 -0
  2143. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cu_cmd_invariants_warnings_out_envelope.py +0 -0
  2144. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cv_cmd_postmortem_warnings_out_envelope.py +0 -0
  2145. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cw_cmd_conventions_warnings_out_envelope.py +0 -0
  2146. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cx_cmd_alerts_warnings_out_envelope.py +0 -0
  2147. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_cz_cmd_dark_matter_warnings_out_envelope.py +0 -0
  2148. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_d_cmd_dogfood_warnings_out_envelope.py +0 -0
  2149. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_da_cmd_relate_warnings_out_envelope.py +0 -0
  2150. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dc_cmd_clones_warnings_out_envelope.py +0 -0
  2151. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dd_cmd_duplicates_warnings_out_envelope.py +0 -0
  2152. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_de_cmd_uses_warnings_out_envelope.py +0 -0
  2153. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_df_cmd_smells_warnings_out_envelope.py +0 -0
  2154. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dh_cmd_fingerprint_warnings_out_envelope.py +0 -0
  2155. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_di_cmd_metrics_push_warnings_out_envelope.py +0 -0
  2156. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dj_cmd_fan_score_classify_extension.py +0 -0
  2157. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dk_cmd_capsule_warnings_out_envelope.py +0 -0
  2158. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dl_cmd_dead_warnings_out_envelope.py +0 -0
  2159. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dm_cmd_audit_warnings_out_envelope.py +0 -0
  2160. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dn_cmd_diagnose_warnings_out_envelope.py +0 -0
  2161. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_do_cmd_graph_export_warnings_out_envelope.py +0 -0
  2162. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dp_cmd_dashboard_warnings_out_envelope.py +0 -0
  2163. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dq_cmd_n1_warnings_out_envelope.py +0 -0
  2164. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dr_cmd_postmortem_warnings_out_envelope.py +0 -0
  2165. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ds_cmd_orchestrate_warnings_out_envelope.py +0 -0
  2166. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dt_cmd_over_fetch_warnings_out_envelope.py +0 -0
  2167. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_du_cmd_partition_warnings_out_envelope.py +0 -0
  2168. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dv_cmd_pr_replay_warnings_out_envelope.py +0 -0
  2169. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dw_cmd_doctor_warnings_out_envelope.py +0 -0
  2170. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dx_cmd_missing_index_warnings_out_envelope.py +0 -0
  2171. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dy_cmd_agent_plan_warnings_out_envelope.py +0 -0
  2172. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_dz_cmd_taint_warnings_out_envelope.py +0 -0
  2173. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ea_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  2174. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_eb_cmd_fleet_warnings_out_envelope.py +0 -0
  2175. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ec_cmd_preflight_warnings_out_envelope.py +0 -0
  2176. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ed_cmd_auth_gaps_warnings_out_envelope.py +0 -0
  2177. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ee_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -0
  2178. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ef_cmd_simulate_warnings_out_envelope.py +0 -0
  2179. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ei_cmd_cut_warnings_out_envelope.py +0 -0
  2180. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ej_cmd_critique_warnings_out_envelope.py +0 -0
  2181. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ek_cmd_adversarial_warnings_out_envelope.py +0 -0
  2182. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_el_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  2183. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_em_cmd_closure_warnings_out_envelope.py +0 -0
  2184. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_eo_cmd_pr_prep_warnings_out_envelope.py +0 -0
  2185. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_ep_cmd_for_refactor_warnings_out_envelope.py +0 -0
  2186. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_eq_cmd_trace_warnings_out_envelope.py +0 -0
  2187. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_es_cmd_grep_warnings_out_envelope.py +0 -0
  2188. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_f_cmd_complete_warnings_out_envelope.py +0 -0
  2189. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_g_cmd_grep_warnings_out_envelope.py +0 -0
  2190. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_h_cmd_history_grep_warnings_out_envelope.py +0 -0
  2191. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_i_cmd_refs_text_warnings_out_envelope.py +0 -0
  2192. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_j_cmd_delete_check_warnings_out_envelope.py +0 -0
  2193. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_k_cmd_describe_warnings_out_envelope.py +0 -0
  2194. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_l_cmd_minimap_warnings_out_envelope.py +0 -0
  2195. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_m_cmd_health_warnings_out_envelope.py +0 -0
  2196. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_n_cmd_doctor_warnings_out_envelope.py +0 -0
  2197. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_o_cmd_dashboard_warnings_out_envelope.py +0 -0
  2198. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_p_cmd_audit_warnings_out_envelope.py +0 -0
  2199. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_q_cmd_pr_risk_warnings_out_envelope.py +0 -0
  2200. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_r_cmd_preflight_warnings_out_envelope.py +0 -0
  2201. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_s_cmd_diagnose_warnings_out_envelope.py +0 -0
  2202. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_t_cmd_impact_warnings_out_envelope.py +0 -0
  2203. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_u_cmd_uses_warnings_out_envelope.py +0 -0
  2204. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_v_cmd_deps_warnings_out_envelope.py +0 -0
  2205. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_w_cmd_relate_warnings_out_envelope.py +0 -0
  2206. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_x_cmd_fan_warnings_out_envelope.py +0 -0
  2207. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_y_cmd_critique_warnings_out_envelope.py +0 -0
  2208. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w607_z_cmd_diff_warnings_out_envelope.py +0 -0
  2209. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w639_detector_smoke.py +0 -0
  2210. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_a_impact_risk_level.py +0 -0
  2211. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_b_critique_risk_level.py +0 -0
  2212. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_c_pr_bundle_risk_level.py +0 -0
  2213. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_d_attest_risk_level.py +0 -0
  2214. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_e_diff_risk_level.py +0 -0
  2215. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_f_collector_canonical_risk.py +0 -0
  2216. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_g_dark_matter_risk_level.py +0 -0
  2217. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_h_migration_plan_risk_level.py +0 -0
  2218. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_followup_i_exporter_risk_vocab.py +0 -0
  2219. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w641_pr_risk_risk_level_emit.py +0 -0
  2220. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w661_algo_detector_smoke.py +0 -0
  2221. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w662_bare_except_drift.py +0 -0
  2222. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w664_package_data_init_drift.py +0 -0
  2223. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w668_as_file_pattern_drift.py +0 -0
  2224. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w675_example_smells_suppress.py +0 -0
  2225. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w676_followup_example_files.py +0 -0
  2226. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w680_world_model_empty_corpus.py +0 -0
  2227. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w681_taint_engine_positive_smoke.py +0 -0
  2228. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w693_suppression_cross_loader.py +0 -0
  2229. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w703_comment_syntax_coverage.py +0 -0
  2230. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w711_mcp_card_error_branches.py +0 -0
  2231. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w712_mcp_list_tools_smoke.py +0 -0
  2232. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w725_comment_density_foxpro_scss.py +0 -0
  2233. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w759_preflight_lowercase.py +0 -0
  2234. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w761_invariants_bus_factor_complexity_lowercase.py +0 -0
  2235. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w761_vulns_secrets_severity_vocab.py +0 -0
  2236. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w762_severity_upper_drift.py +0 -0
  2237. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w792_well_known_card_mirrors.py +0 -0
  2238. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w801_endpoints_empty_corpus.py +0 -0
  2239. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w802_dead_empty_corpus.py +0 -0
  2240. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w803_n1_empty_corpus.py +0 -0
  2241. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_a_cmd_owner_empty_corpus.py +0 -0
  2242. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_aaa_cmd_mode_empty_corpus.py +0 -0
  2243. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_aaaa_cmd_delete_check_empty_corpus.py +0 -0
  2244. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_aaaaa_cmd_boundary_shared_helper_silent_safe.py +0 -0
  2245. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_b_cmd_minimap_empty_corpus.py +0 -0
  2246. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_bbb_cmd_memory_empty_corpus.py +0 -0
  2247. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_bbbb_cmd_simulate_empty_corpus.py +0 -0
  2248. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_bbbbb_cmd_pr_bundle_validate_identity_skip.py +0 -0
  2249. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_c_cmd_oracle_empty_corpus.py +0 -0
  2250. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_cc_cmd_spectral_empty_corpus.py +0 -0
  2251. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ccc_cmd_attest_empty_corpus.py +0 -0
  2252. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ccccc_cmd_why_slow_shared_helper_silent_safe.py +0 -0
  2253. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_consolidate_cross_artifact_drift_table.py +0 -0
  2254. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_d_cmd_workflow_empty_corpus.py +0 -0
  2255. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_dd_cmd_history_grep_empty_corpus.py +0 -0
  2256. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ddd_cmd_constitution_empty_corpus.py +0 -0
  2257. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_dddd_cmd_orchestrate_target_resolution.py +0 -0
  2258. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ddddd_cmd_evidence_doctor_q17_asymmetry.py +0 -0
  2259. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_diff_empty_corpus.py +0 -0
  2260. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_e_cmd_path_coverage_empty_corpus.py +0 -0
  2261. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ee_cmd_simulate_empty_corpus.py +0 -0
  2262. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_eee_cmd_agent_score_empty_corpus.py +0 -0
  2263. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_eeee_cmd_diff_resolution_disclosure.py +0 -0
  2264. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_f_cmd_for_bug_fix_empty_corpus.py +0 -0
  2265. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_fan_empty_corpus.py +0 -0
  2266. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_fff_cmd_cga_empty_corpus.py +0 -0
  2267. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ffff_cmd_smells_below_threshold_collapse.py +0 -0
  2268. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_fffff_cmd_pr_replay_verify_identity_skip.py +0 -0
  2269. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_fingerprint_empty_corpus.py +0 -0
  2270. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_followup_pattern_2.py +0 -0
  2271. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_g_cmd_pr_prep_empty_corpus.py +0 -0
  2272. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_gg_cmd_mutate_empty_corpus.py +0 -0
  2273. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ggg_cmd_for_new_feature_empty_corpus.py +0 -0
  2274. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_gggg_cmd_capsule_snapshot_state.py +0 -0
  2275. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ggggg_cmd_attest_signing_surface_producer_coverage.py +0 -0
  2276. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_h_cmd_explain_command_empty_corpus.py +0 -0
  2277. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_hh_cmd_test_impact_empty_corpus.py +0 -0
  2278. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_hhh_cmd_capsule_empty_corpus.py +0 -0
  2279. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_hhhh_cmd_critique_shared_helper_silent_safe.py +0 -0
  2280. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_hhhhh_cmd_syntax_check_shared_helper_silent_safe.py +0 -0
  2281. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_i_cmd_describe_empty_corpus.py +0 -0
  2282. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ii_cmd_relate_empty_corpus.py +0 -0
  2283. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_iii_cmd_evidence_diff_empty_corpus.py +0 -0
  2284. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_iiii_cmd_fingerprint_snapshot_state.py +0 -0
  2285. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_iiiii_cmd_postmortem_verifier_identity_skip.py +0 -0
  2286. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_j_cmd_understand_empty_corpus.py +0 -0
  2287. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_jj_cmd_hover_empty_corpus.py +0 -0
  2288. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_jjj_cmd_tour_empty_corpus.py +0 -0
  2289. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_jjjj_cmd_pr_diff_shared_helper_silent_safe.py +0 -0
  2290. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_jjjjj_cmd_suggest_reviewers_shared_helper_silent_safe.py +0 -0
  2291. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_k_cmd_module_empty_corpus.py +0 -0
  2292. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_kk_cmd_for_refactor_empty_corpus.py +0 -0
  2293. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_kkk_diagnose_issue_empty_corpus.py +0 -0
  2294. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_kkkk_cmd_taint_cross_lang_scoring.py +0 -0
  2295. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_kkkkk_cga_vsa_sibling_consistency.py +0 -0
  2296. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_l_cmd_preflight_empty_corpus.py +0 -0
  2297. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ll_cmd_for_security_review_empty_corpus.py +0 -0
  2298. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_lll_cmd_evidence_doctor_empty_corpus.py +0 -0
  2299. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_llll_cmd_runs_replay_lineage.py +0 -0
  2300. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_lllll_cmd_attest_verify_identity_skip.py +0 -0
  2301. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_m_cmd_diagnose_empty_corpus.py +0 -0
  2302. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_mm_cmd_pr_analyze_empty_corpus.py +0 -0
  2303. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_mmm_cmd_pr_replay_empty_corpus.py +0 -0
  2304. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_mmmm_cmd_workspace_shared_helper_silent_safe.py +0 -0
  2305. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_mmmmm_cmd_coupling_shared_helper_silent_safe.py +0 -0
  2306. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_n_cmd_file_empty_corpus.py +0 -0
  2307. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_nn_cmd_pr_bundle_empty_corpus.py +0 -0
  2308. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_nnn_cmd_evidence_oscal_empty_corpus.py +0 -0
  2309. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_nnnn_cmd_vuln_reach_cross_lang.py +0 -0
  2310. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_nnnnn_compound_cross_subcommand_identity_drift.py +0 -0
  2311. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_o_cmd_why_empty_corpus.py +0 -0
  2312. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_oo_cmd_dogfood_empty_corpus.py +0 -0
  2313. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ooo_prepare_change_empty_corpus.py +0 -0
  2314. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_oooo_cmd_attest_disclosure.py +0 -0
  2315. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ooooo_pr_bundle_slsa_l3_three_artifact_identity_coherence.py +0 -0
  2316. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_p_cmd_impact_empty_corpus.py +0 -0
  2317. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_pppp_cmd_cga_attestation_lineage.py +0 -0
  2318. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ppppp_pr_bundle_cosign_four_artifact_identity_coherence.py +0 -0
  2319. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_pr_analyze_empty_corpus.py +0 -0
  2320. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_q_cmd_deps_empty_corpus.py +0 -0
  2321. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_qq_cmd_visualize_empty_corpus.py +0 -0
  2322. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_qqq_review_change_empty_corpus.py +0 -0
  2323. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_qqqq_cmd_supply_chain_cross_eco.py +0 -0
  2324. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_qqqqq_compound_recipe_shape_axis_drift.py +0 -0
  2325. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_r_cmd_adversarial_empty_corpus.py +0 -0
  2326. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_rr_cmd_audit_empty_corpus.py +0 -0
  2327. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_rrr_cmd_postmortem_empty_corpus.py +0 -0
  2328. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_rrrr_cmd_test_gaps_shared_helper_silent_safe.py +0 -0
  2329. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_rrrrr_pr_bundle_rekor_five_artifact_identity_coherence.py +0 -0
  2330. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_s_cmd_fan_empty_corpus.py +0 -0
  2331. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_sss_cmd_triage_empty_corpus.py +0 -0
  2332. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ssss_cmd_affected_tests_shared_helper_silent_safe.py +0 -0
  2333. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_sssss_pr_bundle_fulcio_six_artifact_identity_coherence.py +0 -0
  2334. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_tt_cmd_brief_empty_corpus.py +0 -0
  2335. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ttt_cmd_ai_readiness_empty_corpus.py +0 -0
  2336. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_tttt_cmd_pr_bundle_q18_coverage_axis.py +0 -0
  2337. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ttttt_octet_trimmed_iserror_axis_sweep.py +0 -0
  2338. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_u_cmd_orchestrate_empty_corpus.py +0 -0
  2339. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_uu_cmd_replay_empty_corpus.py +0 -0
  2340. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_uuu_cmd_grep_reachability_empty_corpus.py +0 -0
  2341. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_uuuu_cmd_audit_trail_verify_identity_skip.py +0 -0
  2342. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_uuuuu_error_storm_coalescer_trim_variant_sweep.py +0 -0
  2343. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_v_cmd_trace_empty_corpus.py +0 -0
  2344. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_vv_cmd_next_empty_corpus.py +0 -0
  2345. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_vvv_explore_compound_empty_corpus.py +0 -0
  2346. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_vvvv_cmd_affected_shared_helper_silent_safe.py +0 -0
  2347. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_w_cmd_refs_text_empty_corpus.py +0 -0
  2348. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_ww_cmd_runs_empty_corpus.py +0 -0
  2349. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_www_cmd_dark_matter_empty_corpus.py +0 -0
  2350. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_wwww_vsa_verifier_identity_skip.py +0 -0
  2351. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_x_cmd_layers_empty_corpus.py +0 -0
  2352. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_xx_cmd_lease_empty_corpus.py +0 -0
  2353. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_xxx_cmd_refs_text_reachability_empty_corpus.py +0 -0
  2354. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_xxxx_cmd_adversarial_shared_helper_silent_safe.py +0 -0
  2355. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_y_cmd_partition_empty_corpus.py +0 -0
  2356. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_yy_cmd_intent_check_empty_corpus.py +0 -0
  2357. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_yyy_cmd_n1_post_mod_empty_corpus.py +0 -0
  2358. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_yyyy_cmd_pr_replay_q17_harvester_coverage.py +0 -0
  2359. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_z_cmd_delete_check_empty_corpus.py +0 -0
  2360. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_zzz_cmd_duplicates_post_mod_empty_corpus.py +0 -0
  2361. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w805_zzzz_cmd_evidence_diff_cross_repo_identity.py +0 -0
  2362. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w806_complexity_empty_corpus.py +0 -0
  2363. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w807_missing_index_empty_corpus.py +0 -0
  2364. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w808_clones_empty_corpus.py +0 -0
  2365. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w809_over_fetch_empty_corpus.py +0 -0
  2366. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w811_bus_factor_empty_corpus.py +0 -0
  2367. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w812_orphan_imports_empty_corpus.py +0 -0
  2368. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w815_auth_gaps_empty_corpus.py +0 -0
  2369. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w816_hotspots_empty_corpus.py +0 -0
  2370. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w820_smells_empty_corpus.py +0 -0
  2371. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w821_duplicates_empty_corpus.py +0 -0
  2372. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w823_vulns_empty_corpus.py +0 -0
  2373. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w824_invariants_empty_corpus.py +0 -0
  2374. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w825_taint_empty_corpus.py +0 -0
  2375. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w827_audit_trail_conformance_empty_corpus.py +0 -0
  2376. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w828_pr_risk_empty_corpus.py +0 -0
  2377. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w829_audit_trail_verify_empty_corpus.py +0 -0
  2378. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w830_audit_trail_verify_gate.py +0 -0
  2379. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w831_critique_empty_corpus.py +0 -0
  2380. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w833_health_empty_corpus.py +0 -0
  2381. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w835_doctor_empty_corpus.py +0 -0
  2382. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w837_coverage_gaps_empty_corpus.py +0 -0
  2383. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w837_forecast_empty_corpus.py +0 -0
  2384. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w844_card_hash_auto_rotate.py +0 -0
  2385. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w852_type_switch.py +0 -0
  2386. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w853_speculative_generality.py +0 -0
  2387. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w855_rename_invariant_clones.py +0 -0
  2388. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w856_cross_layer_clones.py +0 -0
  2389. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w857_parallel_hierarchy.py +0 -0
  2390. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w870_detector_version_stamp_parity.py +0 -0
  2391. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w898_followup_b_laws_checker.py +0 -0
  2392. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w898_followup_is_test_path_clone_sweep.py +0 -0
  2393. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w898_is_test_path_delegation.py +0 -0
  2394. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w907_cycle_hedge_audit.py +0 -0
  2395. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w910_alerts_threshold_parity.py +0 -0
  2396. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w911_confidence_tier_parity.py +0 -0
  2397. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w912_detector_metadata_coverage.py +0 -0
  2398. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w918_alerts_silent_fallback.py +0 -0
  2399. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w937_no_mojibake_em_dashes.py +0 -0
  2400. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w954_core_tools_capability_drift.py +0 -0
  2401. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w962_w963_w964_alerts_pattern2.py +0 -0
  2402. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w985_followup_head_unchanged_info_log.py +0 -0
  2403. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w985_incremental_skip_info_log.py +0 -0
  2404. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w985_shallow_history_info_log.py +0 -0
  2405. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w987_smells_pattern2.py +0 -0
  2406. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w989_pr_risk_pattern2.py +0 -0
  2407. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w994_w995_suppress_yaml.py +0 -0
  2408. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w_json_mode_no_stdout_warnings.py +0 -0
  2409. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w_mcp_injection_marker_egress.py +0 -0
  2410. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w_mcp_mode_enforcement.py +0 -0
  2411. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w_mcp_receipt_hmac_link.py +0 -0
  2412. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w_mcp_redact_egress.py +0 -0
  2413. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w_mcp_security_pipeline_e2e.py +0 -0
  2414. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_w_mcp_shadow_mode.py +0 -0
  2415. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_why_slow.py +0 -0
  2416. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_workspace.py +0 -0
  2417. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ws_resolve_fixes.py +0 -0
  2418. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_ws_resolve_unmatched.py +0 -0
  2419. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_x_lang_scope.py +0 -0
  2420. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_xlang.py +0 -0
  2421. {roam_code-13.6.1 → roam_code-13.7.0}/tests/test_yaml_hcl.py +0 -0
@@ -0,0 +1,1166 @@
1
+ Metadata-Version: 2.4
2
+ Name: roam-code
3
+ Version: 13.7.0
4
+ Summary: Local codebase intelligence for AI coding agents: structural repo map, change-safety gates, MCP security receipts, and tamper-evident ChangeEvidence packets. 100% local, zero API keys, zero network egress.
5
+ Author: Cranot
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://roam-code.com/
8
+ Project-URL: Documentation, https://roam-code.com/docs/
9
+ Project-URL: Repository, https://github.com/Cranot/roam-code
10
+ Project-URL: Issues, https://github.com/Cranot/roam-code/issues
11
+ Project-URL: Discussions, https://github.com/Cranot/roam-code/discussions
12
+ Project-URL: Changelog, https://github.com/Cranot/roam-code/blob/main/CHANGELOG.md
13
+ Project-URL: Pricing, https://roam-code.com/pricing
14
+ Project-URL: Security, https://roam-code.com/security
15
+ Keywords: agent-os,agentic-assurance,ai-agents,ai-coding,audit-trail,blast-radius,change-evidence,code-analysis,code-review,codebase-intelligence,developer-tools,evidence-compiler,local-first,mcp,mcp-server,model-context-protocol,preflight,sarif,security,software-architecture,static-analysis,tree-sitter
16
+ Classifier: Development Status :: 5 - Production/Stable
17
+ Classifier: Environment :: Console
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Topic :: Security
26
+ Classifier: Topic :: Software Development
27
+ Classifier: Topic :: Software Development :: Code Generators
28
+ Classifier: Topic :: Software Development :: Quality Assurance
29
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
+ Requires-Python: >=3.10
31
+ Description-Content-Type: text/markdown
32
+ License-File: LICENSE
33
+ Requires-Dist: click>=8.0
34
+ Requires-Dist: tree-sitter>=0.23
35
+ Requires-Dist: tree-sitter-language-pack<1.6.3,>=0.6
36
+ Requires-Dist: networkx>=3.0
37
+ Requires-Dist: tomli; python_version < "3.11"
38
+ Provides-Extra: mcp
39
+ Requires-Dist: fastmcp>=2.0; extra == "mcp"
40
+ Provides-Extra: semantic
41
+ Requires-Dist: numpy>=1.24; extra == "semantic"
42
+ Requires-Dist: onnxruntime>=1.16; extra == "semantic"
43
+ Requires-Dist: tokenizers>=0.15; extra == "semantic"
44
+ Provides-Extra: leiden
45
+ Requires-Dist: igraph>=0.11; extra == "leiden"
46
+ Requires-Dist: leidenalg>=0.10; extra == "leiden"
47
+ Provides-Extra: graph-fast
48
+ Requires-Dist: rustworkx>=0.14; extra == "graph-fast"
49
+ Provides-Extra: sbom
50
+ Requires-Dist: cyclonedx-python-lib>=8.0; extra == "sbom"
51
+ Provides-Extra: learned
52
+ Requires-Dist: lightgbm>=4.0; extra == "learned"
53
+ Provides-Extra: typecheck
54
+ Requires-Dist: mypy>=1.10; extra == "typecheck"
55
+ Provides-Extra: dev
56
+ Requires-Dist: pytest>=7.0; extra == "dev"
57
+ Requires-Dist: pytest-xdist>=3.0; extra == "dev"
58
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
59
+ Requires-Dist: scipy>=1.11; extra == "dev"
60
+ Requires-Dist: fastmcp>=2.0; extra == "dev"
61
+ Requires-Dist: pyyaml>=6.0; extra == "dev"
62
+ Requires-Dist: ruff>=0.4; extra == "dev"
63
+ Requires-Dist: build>=1.0; extra == "dev"
64
+ Requires-Dist: twine>=5.0; extra == "dev"
65
+ Requires-Dist: pillow>=10.0; extra == "dev"
66
+ Dynamic: license-file
67
+
68
+ <div align="center">
69
+
70
+ # roam-code
71
+
72
+ **The local codebase intelligence layer that lets AI coding agents earn the right to change code — with evidence for what was checked.**
73
+
74
+ [![PyPI version](https://img.shields.io/pypi/v/roam-code?style=flat-square&color=blue)](https://pypi.org/project/roam-code/)
75
+ [![GitHub stars](https://img.shields.io/github/stars/Cranot/roam-code?style=flat-square)](https://github.com/Cranot/roam-code/stargazers)
76
+ [![CI](https://github.com/Cranot/roam-code/actions/workflows/roam-ci.yml/badge.svg)](https://github.com/Cranot/roam-code/actions/workflows/roam-ci.yml)
77
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-3776AB?logo=python&logoColor=white)](https://www.python.org/downloads/)
78
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
79
+
80
+ <sub>Credential-free · 100% local by default (opt-in `metrics-push` is the only outbound surface) · tamper-evident `ChangeEvidence` packets · Apache 2.0 · runs entirely on your machine</sub>
81
+
82
+ <!-- BEGIN auto-count:readme-headline-counts -->
83
+ <sub>267 commands · 242 MCP tools (16 in the default `core` preset) · 28 languages</sub>
84
+ <!-- END auto-count:readme-headline-counts -->
85
+
86
+ ![roam terminal demo](docs/assets/roam-terminal-demo.gif)
87
+
88
+ </div>
89
+
90
+ ---
91
+
92
+ ## Why Roam is different
93
+
94
+ [METR](https://metr.org/notes/2026-03-10-many-swe-bench-passing-prs-would-not-be-merged-into-main/) and [FrontierCode](https://cognition.ai/blog/frontier-code) both point at the same gap: passing tests is not the same as mergeable code. Roam is an **agent-first CLI surface** that gives the agent local graph facts before it edits, gates risky changes, and emits scoped evidence after the run. In the agent/review tools surveyed as of 2026-06-12, the differentiator is this combination:
95
+
96
+ - **Credential-free.** No account, no API key, no cloud login. `pip install` and run.
97
+ - **100% local by default.** Source code never leaves the machine; air-gapped repos work like cloud repos. The single outbound surface (`roam metrics-push`) is opt-in, summary-only, and prints its exact payload under `--dry-run`.
98
+ - **Tamper-evident `ChangeEvidence` packets.** A Roam-guided change can compile into one portable packet — HMAC-chained run ledger + signed Code Graph Attestation + signed PR bundle — answering eight questions: *who acted, what authority existed, what context was read, what changed, what could break, what policy applied, what verified it, who accepted risk*. PR Replay maps those eight questions today: structural change/risk/policy axes are in scope, context and verification are partial, and missing identity/authority/approval evidence is disclosed instead of invented. Cursor logs the run; Roam records and verifies the evidence its producers captured.
99
+ - **MCP runtime security at the wrapper boundary.** Every MCP response is scrubbed for secrets on egress, gated against the active mode (`read_only` / `safe_edit` / `migration` / `autonomous_pr`) with a closed-enum `policy_decision`, and each decision receipt is HMAC-linked into the signed run ledger. Inside-server controls; the gateway layer (Interlock / Lasso / Portkey) composes on top — see [`dev/MCP-SECURITY-POSTURE.md`](dev/MCP-SECURITY-POSTURE.md).
100
+
101
+ Underneath sits a SQLite-backed graph of symbols, calls, imports, layers, git history, runtime traces, smells, clones, security flows, and algorithmic patterns across 28 languages — the same local facts queried before, during, and after a change.
102
+
103
+ **Dependency-aware, not string-based.** Roam knows `Flask` has 47 dependents and 31 affected tests; `grep` knows it appears 847 times. One command replaces 5-10 tool calls — <0.5s per query, plain-ASCII output, `--json` and `--sarif` envelopes for agents and CI.
104
+
105
+ | | Without Roam | With Roam |
106
+ |--|-------------|-----------|
107
+ | Tool calls | 8 | **1** |
108
+ | Wall time | ~11s | **<0.5s** |
109
+ | Tokens consumed | ~15,000 | **~3,000** |
110
+
111
+ *Illustrative — a typical agent workflow on a 200-file Python project (Flask). Reproducible smoke transcript in [`docs/fresh-install-smoke.md`](docs/fresh-install-smoke.md); full indexing-rate harness in [`benchmarks/`](benchmarks/). Exact numbers vary with repo size, agent prompt, and model.*
112
+
113
+ ---
114
+
115
+ ## Install + first four commands
116
+
117
+ Ten minutes from `pip install` to a verdict on whether your next edit is safe.
118
+
119
+ ```bash
120
+ pip install "roam-code[mcp]" # 1. install with MCP server for Claude Code / Cursor / Continue
121
+ cd /path/to/your/repo
122
+ roam init # 2. index the repo into .roam/index.db (one-time, ~30s on most repos)
123
+ roam health # 3. composite 0-100 score: complexity, cycles, dark-matter coupling, dead code
124
+ roam preflight <symbol> # 4. blast radius + tests + complexity + architecture rules before you edit
125
+ ```
126
+
127
+ Python 3.10+. `pipx install roam-code` and `uv tool install roam-code` work too. Drop `[mcp]` for CLI-only. See [`docs/fresh-install-smoke.md`](docs/fresh-install-smoke.md) for a verbatim transcript of these four commands against a clean venv.
128
+
129
+ Step 4 is the payoff — `roam preflight` on a hot symbol returns a verdict before you touch it:
130
+
131
+ ```text
132
+ $ roam preflight open_db
133
+ VERDICT: Significant risk — CRITICAL, 1847 symbols in blast radius
134
+
135
+ Pre-flight check for `open_db (src/roam/db/connection.py:799)`:
136
+
137
+ Blast radius: 1847 symbols in 382 files [CRITICAL]
138
+ Affected tests: 617 direct, 962 transitive [OK]
139
+ Complexity: cc=30, nest=4 [CRITICAL]
140
+ Coupling: 2 files often change together [MEDIUM]
141
+ Conventions: no violations [OK]
142
+
143
+ Overall risk: CRITICAL
144
+ Risk driver: complexity (cc=30, CRITICAL)
145
+ ```
146
+
147
+ *An agent sees the blast radius before it edits — not after the tests fail.*
148
+
149
+ <details>
150
+ <summary><strong>Alternate install methods + Docker</strong></summary>
151
+
152
+ ```bash
153
+ pipx install roam-code # isolated environment (recommended)
154
+ uv tool install roam-code # uv-managed tool
155
+ pip install git+https://github.com/Cranot/roam-code.git # from source
156
+
157
+ # Docker (alpine-based)
158
+ docker build -t roam-code .
159
+ docker run --rm -v "$PWD:/workspace" roam-code index
160
+ docker run --rm -v "$PWD:/workspace" roam-code health
161
+ ```
162
+
163
+ Works on Linux, macOS, and Windows. **Windows:** if `roam` is not found after installing with `uv`, run `uv tool update-shell` and restart your terminal.
164
+
165
+ </details>
166
+
167
+ ---
168
+
169
+ ## The Compiler — your agent's first token already knows the answer
170
+
171
+ You ask your agent *"who calls `handleSave`?"* and watch it grep, open
172
+ three files, grep again, read a fourth — six turns and $1.30 later you get
173
+ the answer the repo's call graph held all along.
174
+
175
+ Roam ships a **task compiler** that ends that loop. Before your prompt
176
+ reaches the model, roam recognizes what kind of question it is, runs the
177
+ right code-graph lookups locally (~90 ms, zero model calls), and puts the
178
+ *answers* into the prompt: the caller list with line numbers, the git
179
+ history already filtered, the source around the bug line you cited. The
180
+ agent's first words can be the answer.
181
+
182
+ For Claude Code it's **one command, zero configuration**:
183
+
184
+ ```bash
185
+ pip install "roam-code[mcp]"
186
+ cd your-repo && roam init
187
+ roam hooks claude --write # compile-before + verify-after, wired into Claude Code
188
+ ```
189
+
190
+ Then use `claude` exactly as you always do. Undo anytime with
191
+ `roam hooks claude --uninstall --write`. A broken install can never block
192
+ your agent — every hook is fail-open.
193
+
194
+ **What that buys you, measured head-to-head on Claude** (same prompts, same
195
+ repo, with and without the compiler — June 2026, 41 cells):
196
+
197
+ | Median per task | vanilla | compiled | delta |
198
+ |---|---|---|---|
199
+ | Agent turns (navigation/comprehension) | 6 | 1 | **−83%** |
200
+ | Input tokens | 271K | 53K | **−80%** |
201
+ | Cost | $1.30 | $0.48 | **−63%** |
202
+ | Wall time | — | — | **−50%** |
203
+
204
+ The same shape reproduces on Opus (−86% turns). And the compiler knows
205
+ where it *doesn't* help: prompts that ask the agent to **write** code get
206
+ no envelope at all — injection there was measured as pure overhead, so it
207
+ spends your tokens only where it wins.
208
+
209
+ <details>
210
+ <summary><b>The full data</b> — every bench cell (including the losses), the ground-truth bug bench, and routing stats</summary>
211
+
212
+ | Task | turns | input tokens | cost |
213
+ |---|---|---|---|
214
+ | "where is `open_db` defined?" | 3 → **1** | 156K → 51K | $0.67 → $0.28 |
215
+ | "which files depend on `cli.py`?" | 6 → **1** | 252K → 51K | $1.15 → $0.30 |
216
+ | "where is the env var configured?" | 9 → **1** | 497K → 53K | $1.40 → $0.31 |
217
+ | "what are the layers of this codebase?" | 5 → **1** | 271K → 50K | $1.42 → $0.41 |
218
+ | "what changed in `cli.py` recently?" | 4 → **2** | 186K → 104K | $0.62 → $0.40 |
219
+ | "explain the compiler module's architecture" | 13 → **6** | 618K → 240K | $1.85 → $1.01 |
220
+ | "trace how a command becomes an MCP tool" | 12 → **8** | 464K → 303K | $1.25 → $1.01 |
221
+ | security-hook comprehension (hard, multi-file) | 6 → **2** | 267K → 117K | $1.15 → $0.56 |
222
+ | "what are the biggest cycles in this codebase?" (re-measured 06-11) | 6 → **1** | — | $0.65 → **$0.07** |
223
+ | "where is the CLI entry point?" (trivial, re-measured 06-11) | 1 → 1 | 48K → 50K | $0.21 → $0.22 |
224
+ | "write a pytest for X" (generation, re-measured 06-11) | 5 → 7 | 275K → 396K | $0.61 → **$0.45** |
225
+
226
+ The last two rows were the published LOSSES (trivial prompts once paid
227
+ the envelope for nothing at +$0.20; generation once cost +17%). After the
228
+ generation-skip lever (write-code prompts get a ~0.6 KB lean envelope or
229
+ none — measured 3.5% of a 723-prompt real corpus) and the entry-point
230
+ routing fix, both cells were re-measured at n=3 medians on the same
231
+ model: generation flipped to a −26% cost / −18% wall win — input tokens
232
+ rise (cache-read-heavy, cheap) while expensive output tokens drop −29%
233
+ across more-but-cheaper turns — and the trivial cell is a tie within
234
+ noise. Losses are findable because we publish them — and fixable because
235
+ the compiler routes them.
236
+
237
+ **Bug-fixing, ground-truth graded** (a failing test must transition to
238
+ passing — no LLM judging): 20 cells of planted bugs with real tracebacks —
239
+ **10/10 fixed in both arms** at **−13% cost**; the envelope ships the
240
+ source around the cited `path:line`, so the typical fix lands within 2
241
+ turns.
242
+
243
+ **Routing, replayed on 723 real prompts** from live agent sessions: **91%
244
+ of envelopes ship pre-executed answers** (L1 probes) — the envelope already
245
+ contains the literal answer — at **p50 0.45 s cold / p50 92 ms live**
246
+ (warm cache) compile latency, fully local. Zero model calls.
247
+
248
+ **Eval history by version** — re-measured on every kernel change; losses are
249
+ published, attacked, then re-measured (full per-cell history in the repo):
250
+
251
+ | measured | kernel | what | result |
252
+ |---|---|---|---|
253
+ | Jun 09 | v13.4 | 41-cell nav/comprehension A/B | turns −83%, tokens −80%, cost −63% |
254
+ | Jun 09 | v13.4 | 20-cell ground-truth bugbench | 10/10 both arms, cost −13% |
255
+ | Jun 09 | v13.4 | trivial-prompt cell | **+80% cost — published loss** |
256
+ | Jun 09 | v13.4 | generation cell | **+17% cost — published loss** |
257
+ | Jun 11 | v13.6 | trivial-prompt cell, re-measured n=3 | tie ($0.21 → $0.22) |
258
+ | Jun 11 | v13.6 | generation cell, re-measured n=3 | **−26% cost win** |
259
+ | Jun 11 | v13.6 | "biggest cycles" cell, re-measured n=3 | **−89% cost win** ($0.65 → $0.07, 6→1 turns) |
260
+ | Jun 11 | v13.6 | 723-prompt routing replay | 91% L1, p50 0.45 s cold |
261
+
262
+ Caveats that always ship with these numbers: trivial prompts the agent
263
+ one-shots anyway gain nothing (now a within-noise tie after the lean/skip
264
+ levers); cells are n=2–3 with medians and ranges.
265
+
266
+ <details>
267
+ <summary><strong>Benchmark archaeology — runs #1–#4 (May 2026), including the honest negative result that drove the fixes</strong></summary>
268
+
269
+ Two independent A/B runs at different scales — the larger sample inverts the smaller. Reporting both honestly.
270
+
271
+ **Run #1 (n=3 per cell, 27 cells, $16.88):** compile appeared to dominate (−29% wall vs static). That static prompt included a `"Hard cap: 4 tool calls"` line that turned out to act as a quota.
272
+
273
+ **Run #2 (n=3–7 per cell, 78 cells, $54.88, "Hard cap" line removed from static):**
274
+
275
+ | Condition | Mean turns | Mean wall | Mean cost |
276
+ |---|---|---|---|
277
+ | vanilla | 7.0 | 33.2s | $0.68 |
278
+ | **static / roam_agent** | **5.8** | **25.1s** | **$0.66** |
279
+ | compile | 8.2 | 47.9s | $0.78 |
280
+
281
+ At scale, **static (with the "Hard cap" line removed) is the winner**: −17% turns and −24% wall vs vanilla, with cost within 3%. The compile-mode envelope was **+91% wall vs static on hard structural tasks** — variance probe revealed compile occasionally pushes the agent into over-tool-use (one t1 run hit 41 turns and $2.43). The compile-the-COMMAND itself is robust (250/250 latency cells, 14/15 fuzz, brief mode <300 chars across all 10 procedure families) — the issue is over-direction of the consuming agent, not the compiler.
282
+
283
+ Private raw cells are retained for audit; the public summary above is the quotable result.
284
+
285
+ **Run #3 (2026-05-31, n=1, 24 cells, $12.78, on 8-task user-shape corpus after W34→W37 fixes):**
286
+
287
+ | Condition | Mean turns | Mean wall | Mean cost |
288
+ |---|---|---|---|
289
+ | vanilla | 6.00 | 28.6s | $0.58 (1 cell timed out at 240s) |
290
+ | static / roam_agent | 5.38 | 39.9s | $0.63 |
291
+ | **compile** | **2.75** | 35.6s | **$0.46** |
292
+
293
+ This run inverts Run #2 on a different corpus. Compile **wins 7/8 shapes** including stack-trace, "what does X do", "what changed recently", `compare files`, `who calls X`, file coupling, and trace-flow. The compiler fix wave between Run #2 and Run #3 added six new probes (stack-trace source slice, body-embed for explain, git-log for history, sibling-test embed, path-comparison diff, symbol-pickaxe) and four real bug fixes (callers-backtick fallback, dead-code wrong CLI, consumer-dict flattening, stack-trace classifier missing PascalCase Errors). Headline win: a "what files are coupled to X" task that took vanilla 20 turns / $1.20 / 64s collapsed to compile's 1 turn / $0.32 / 11s — embedded coupling pairs eliminate 19 turns of exploration. The +24% wall vs vanilla is the envelope cache-creation tax at n=1; expected to amortize at n≥3.
294
+
295
+ Static remains a non-improvement (0/8 wins vs vanilla, 1/8 marginal vs compile). Caveat: Run #3 is n=1 per cell; n=3 replication ($30-40) is pending.
296
+
297
+ Private per-task tables and raw cells are retained for audit; the public summary above is the quotable result.
298
+
299
+ **Run #4 (2026-05-31, n=1, 24 cells, $13.00, same corpus after W43→W45 polish/improvements/corrections):**
300
+
301
+ | Condition | Mean turns | Mean wall | Mean cost |
302
+ |---|---|---|---|
303
+ | vanilla | 5.25 | 39.6s | $0.63 |
304
+ | static / roam_agent | 4.75 | 32.8s | $0.61 |
305
+ | **compile** | **1.88** | **25.2s** | **$0.40** |
306
+
307
+ Compile now **wins 8/8 shapes** and the +24% wall penalty from Run #3 is **gone**: compile is −36% wall vs vanilla. Aggregate **−64% turns / −36% cost / −36% wall** vs vanilla on Opus 4.7. The flip came from three wave-43-to-45 changes: (a) a 60-second bounded cache on `_run_roam` subprocess calls, (b) anti-Read directives in the `stack_trace_fix` and `synthesis_query` answer contracts, and (c) richer enrichment in the `write_pytest` probe (sibling test + source under test + nearest `conftest.py` together). The biggest single delta: `write_pytest` went from 10 vanilla turns to 6 compile turns (−40%, saving $0.29 / cell). Static remains 0/8 wins and should be retired from the default bench-compile conditions in a future release.
308
+
309
+ Private per-task tables and raw cells are retained for audit; the public summary above is the quotable result.
310
+
311
+ </details>
312
+ </details>
313
+
314
+ Headless for scripts and CI: `roam compile "<task>" --artifact auto`.
315
+ Prefer a dedicated product CLI? The same loop ships as
316
+ [**compile-code**](https://github.com/Cranot/compile-code) —
317
+ `pip install compile-code && compile claude`.
318
+
319
+ ### The verify half of the loop — what runs after every edit
320
+
321
+ The compile half front-loads facts; the verify half reviews what the agent
322
+ just changed. `roam verify --auto` scopes to the touched files, auto-selects
323
+ the checks that make sense for what changed (Python edits unlock the Python
324
+ checks, source edits unlock naming/duplicates), and runs:
325
+
326
+ - **naming** — against the codebase's own per-language convention (sampled
327
+ from production code only: test/vendored/generated files neither vote nor
328
+ get flagged, framework lifecycle names like `setUp` are never touched)
329
+ - **imports** — the hallucination firewall: every import must resolve — to
330
+ the index, the stdlib, or a declared dependency. A module path that
331
+ resolves to nothing fails as a likely hallucination; near-miss names get
332
+ fuzzy did-you-mean candidates
333
+ - **error handling / syntax / complexity / cycles / duplicates** — scoped
334
+ structural review with honest disclosure when any sub-check could not run
335
+ - **secrets** — a leak gate over every touched file: credential shapes
336
+ (cloud keys, tokens, PEM blocks) fail the check, and an optional
337
+ repo-local `.roam-leak-patterns.py` catalogue catches the strings *your*
338
+ project must never publish
339
+ - **patterns** *(advisory, `--deep`)* — the algorithm/idiom catalog scoped
340
+ to the diff: N+1 query shapes, loop-invariant calls, string-concat loops,
341
+ each with the better approach and a fix sketch
342
+
343
+ **The fix loop.** Wired via `roam hooks claude --write`, findings come back
344
+ to the agent as an actionable list — *fix or suppress, then re-verify* — and
345
+ the loop re-runs automatically until quiet (bounded rounds). Findings the
346
+ agent disagrees with go to `.roam-suppressions.yml`, keyed by **symbol** so
347
+ a suppression survives refactors that shift line numbers; the file is
348
+ append-only (a suppression is never silently dropped). Everything is
349
+ fail-open and quiet-on-pass: the loop surfaces only real findings, and a
350
+ broken install can never block a turn.
351
+
352
+ **Scoping and debt control** — the flags that make verify usable on a
353
+ codebase with history:
354
+
355
+ ```bash
356
+ roam verify --auto # changed files, auto-selected checks
357
+ roam verify --diff-only # only lines you changed vs HEAD
358
+ roam verify --changed-lines cli.py:40-90 # exact ranges (agent harnesses)
359
+ roam verify --baseline-write # snapshot current findings as accepted debt
360
+ roam verify --new-only # then: only NEW findings fail
361
+ roam verify --report --severity fail # whole-repo ranked punch-list (non-gating)
362
+ roam verify --off / --on # pause / resume the loop repo-wide
363
+ ```
364
+
365
+ **The commands that run beside it** in the same post-edit stance:
366
+
367
+ | Command | Role in the loop |
368
+ |---|---|
369
+ | `roam verify-imports --path src/roam/cli.py` | The hallucination firewall, standalone — validates every import resolves |
370
+ | `roam delete-check --ci` | Gates a deletion diff on surviving references (exit 5 on BREAK-RISK) |
371
+ | `git diff \| roam critique` | Clones-not-edited check + blast radius on the patch (exit 5 on high severity) |
372
+ | `roam verify --report --persist` | Writes findings to the registry so the **compiler** embeds them as `known_findings` in future envelopes — debt gets fixed opportunistically |
373
+
374
+ **Measured, not asserted.** The detector quality is pinned by three eval
375
+ suites in CI: a planted-issues recall corpus (every category must catch its
376
+ canonical positives), a clean-corpus false-positive lock (dogfooded on this
377
+ repo: the naming rule alone dropped ~2000 FPs when test files stopped
378
+ voting), and an adversarial suppression fuzz suite (suppressions survive
379
+ refactors, never lose entries).
380
+
381
+ ---
382
+
383
+ ## What's New
384
+
385
+ **v13.6 (2026-06-11) — The verify loop grows teeth + compiler injection economics.** The post-edit loop now runs a **secrets leak gate** by default (credential shapes + an optional repo-local `.roam-leak-patterns.py` catalogue) and an advisory **algorithm/idiom sweep** scoped to the diff; suppressions are **symbol-keyed** (refactor-proof) and the suppression file is append-only after a confirmed data-loss fix; the naming rule samples production code only (~2000 false positives removed on a test-heavy codebase) and `verify --auto` is **16× faster** on sweeping diffs. The compiler learns injection economics — generation-shaped prompts get **no envelope** (measured pure overhead) — plus graph-ranked retrieval (PageRank + file-role + path-token blend), new answer probes (taint scan, world-model idempotency/side-effects, design patterns, scoped algo findings, and verify findings riding into envelopes as `known_findings`), and routing waves for trace/entry-point phrasings. New offline lock suites (procedure-registry lint, suppression fuzz corpus, self-dogfood FP lock, envelope byte budgets, L1-rate floor) and a `prepush_check.py --release` gate that proves the full CI surface green before any release push. Full diff in [CHANGELOG.md](CHANGELOG.md).
386
+
387
+ **v13.5 (2026-06-10) — Compiler coverage waves + the Claude Code adapter.** Eight new compile intent procedures land from production-telemetry mining (`file_history` "what changed in X last week", `repo_structure` layers/clusters/health, `entry_point_where` with the authoritative `[project.scripts]` answer, `config_where` env-var lookup, module-name `describe_file` recall, `session_meta`, a zero-probe fast-path for self-contained batch prompts, and a `bug_site_slice` that embeds the source around "fix the bug in cli.py:45"); **`roam hooks claude --write`** wires the full compile-before/verify-after loop into Claude Code in one command (fail-open, idempotent, `--no-verify` / `--uninstall`); two reliability fixes seal a CliRunner stdout-swap race in the in-process probe pool and add a compiler fingerprint to all three compile cache keys; `envelope-diff` regression rules stop false-flagging budget bookkeeping keys. Compiler A/B on Claude (Fable 5): −83% turns / −80% input tokens / −63% cost on nav-comprehension (41 cells). Full diff in [CHANGELOG.md](CHANGELOG.md).
388
+
389
+ <details>
390
+ <summary><strong>v13.4 (released 2026-05-21)</strong></summary>
391
+
392
+ **v13.4 (released 2026-05-21) — Perf wave + Pattern-1 stabilisation + assurance hardening.** Major detector speed-ups (`clones` 43.8s → 13.1s, `intent` 66s → 12s, `doc-staleness` 93s → 19s, `sbom` 30s → 9s — all byte-identical output), 17 commands now emit `isError`/`status` on error envelopes + 11 commands route their argless `--json` path through a proper envelope (Pattern-1C drift-guards added), a persisted per-snapshot spectral gap powering a real `roam forecast` failure budget, MCP prompt-injection marker scan on tool-call egress, release supply-chain hardening (PEP 740 attestations, tag-bound artifacts), and large false-positive cuts in `feature-envy` / `shotgun-surgery` / `god-components`. Full diff in [CHANGELOG.md](CHANGELOG.md).
393
+
394
+ </details>
395
+
396
+ <details>
397
+ <summary><strong>Earlier releases (v13.3 / v13.2 / v13.1 / v13.0)</strong></summary>
398
+
399
+ ### v13.3 (released 2026-05-19) — MCP runtime security + UX polish
400
+
401
+ - **Egress secret-redaction at the MCP wrapper boundary**, 4-mode `policy_decision` enforcement with shadow-mode (`ROAM_MODE_DRY_RUN`), HMAC-linked `McpDecisionReceipt` + `receipt_integrity` verdict on `roam runs verify`.
402
+ - **3 new persisting detectors** (`boundary`, `test-hermeticity`, `compatibility`), `roam doctor` advisory-vs-blocking split, and `--json` warnings-channel discipline.
403
+
404
+ ### v13.2 (released 2026-05-16) — Evidence freshness + resolution disclosure
405
+
406
+ - **Canonical unresolved-path envelopes** across `impact` / `preflight` / `trace` / `test-map` / `context` / `safe-delete` / `split` / `why` — one explicit "not found" shape in JSON mode.
407
+ - **Evidence freshness stamped at the producer.** Runs record hashes for `.roam-rules.yml`, `.roam/constitution.yml`, `.roam/control-map.yml`.
408
+ - **PR Replay evidence coverage improved.** Replay path maps the 8 evidence questions, fully answers structural change/risk/policy axes, and marks identity/authority/approval evidence as partial, out of scope, or `producer_not_available` instead of silently omitted.
409
+
410
+ ### v13.1 (released 2026-05-15) — Pattern-2 propagation + shared YAML helper + 3 flagship silent-fallback seals
411
+
412
+ - **3 flagship silent-fallback seals.** `cmd_taint`, `cmd_health`, `cmd_doctor` now emit `state="empty_corpus"` + `partial_success=True` on unanalyzed repos instead of false `Healthy 100/100` / `No taint findings` / `all checks passed` verdicts.
413
+ - **Shared YAML config-loader helper** (`load_yaml_with_warnings`). 5 of 7 surveyed loaders migrated; ~125 LOC removed.
414
+ - **5 new live smell detectors.** `type-switch`, `speculative-generality`, `empty-catch`, `cross-layer-clone`, `parallel-hierarchy` — `roam smells` now ships 24 deterministic detectors.
415
+ - **30+ behavioral Pattern-2 fixes** + empty-corpus smoke sweep across 25+ detectors.
416
+
417
+ ### v13.0 (released 2026-05-13) — Agent-OS substrate + Laravel idioms + Vue SFC
418
+
419
+ - **Agent-OS control plane.** Repo-local substrates under `.roam/`: constitution, HMAC-chained run ledger, multi-agent leases, portable agent memory, 4 cumulative modes (`read_only` → `safe_edit` → `migration` → `autonomous_pr`).
420
+ - **World-model classifiers (R28).** `roam side-effects`, `roam idempotency`, `roam causal-graph`, `roam tx-boundaries`.
421
+ - **Laravel dynamic-dispatch idioms.** 7 of 8 implicit-edge idioms (Route closures, Eloquent scopes, Policy resolution, Observer registration, Job/Queue/Artisan dispatch).
422
+ - **Vue SFC import graph.** `.vue` template/script/style blocks parsed; component registrations resolved across the SFC boundary.
423
+ - **~20 new CLI commands** (`brief`, `next`, `mode`, `constitution`, `laws`, `memory`, `lease`, `runs`, `replay`, `agent-score`, `agents-md`, …) and schema bump (USER_VERSION 12 → 13).
424
+
425
+ </details>
426
+
427
+ Full release notes in [CHANGELOG.md](CHANGELOG.md).
428
+
429
+ ## Best for
430
+
431
+ - **Agent-assisted coding** — structured answers that cut tokens vs raw file exploration
432
+ - **Large codebases (100+ files)** — graph queries beat linear search at scale
433
+ - **Architecture governance** — health scores, CI quality gates, budget enforcement, fitness functions
434
+ - **Safe refactoring** — blast radius, affected tests, pre-change safety checks, graph-level editing
435
+ - **Multi-agent orchestration** — partition codebases for parallel agents with conflict-aware planning
436
+ - **Security analysis** — vulnerability reachability, auth gaps, CVE path tracing, taint analysis
437
+ - **Algorithm optimization** — detect O(n²) loops, N+1 queries, and 32 other anti-patterns with suggested fixes
438
+
439
+ ### When NOT to use Roam
440
+
441
+ - **Real-time type checking** — use an LSP (pyright, gopls, tsserver). Roam is static and offline.
442
+ - **Small scripts (<10 files)** — read the files directly.
443
+ - **Pure text search** — ripgrep is faster for raw string matching.
444
+
445
+ ## Core commands
446
+
447
+ <!-- BEGIN auto-count:readme-canonical-mention -->
448
+ **Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining ~262 commands are detail surface for specialised workflows (taint, fleet, cga, oracle, eval, …) — they're called by agents on demand, not memorised. This is intentional design; under the hood the canonical surface is **267 commands (260 canonical + 7 aliases) organised into 7 categories** (aliases for muscle memory: `math` → `algo`, `churn` → `weather`, `digest` / `snapshot` / `trend` → `trends`, `onboard` → `understand`, `refs` → `uses`), but you don't need to know that to start.
449
+ <!-- END auto-count:readme-canonical-mention -->
450
+
451
+ | Verb | What it does |
452
+ |------|--------------|
453
+ | `roam understand` | Full codebase briefing: stack, architecture, key abstractions, health, conventions, entry points |
454
+ | `roam context <symbol>` | AI-optimized context: definition + callers + callees + files-to-read with line ranges |
455
+ | `roam retrieve <task>` | Graph-aware context for free-form tasks ("trace login flow", "where is the n+1?") — FTS5 + structural rerank within a token budget |
456
+ | `roam preflight <symbol>` | Pre-change safety gate: blast radius + tests + complexity + coupling + fitness |
457
+ | `roam critique` | Verify a patch against the graph: clones-not-edited + blast radius + intent vs semantic-diff. Pipe `git diff` in; exit 5 on high severity |
458
+
459
+ The full surface spans **7 categories** — Getting Started, Daily Workflow, Codebase Health, Architecture, Exploration, Reports & CI, and Refactoring. Run `roam --help` for the 5-verb core, `roam --help-all` for every command name, and `roam surface --json` for the machine-readable inventory. Every command accepts `roam --json <cmd>` for structured output and `roam --sarif <cmd>` for CI integration (SARIF 2.1.0, honoured by 36 commands).
460
+
461
+ <details>
462
+ <!-- BEGIN auto-count:readme-cli-command-list-summary -->
463
+ <summary><strong>Full command reference — canonical command list (all 260)</strong></summary>
464
+ <!-- END auto-count:readme-cli-command-list-summary -->
465
+
466
+ The complete, always-current list with flags and examples lives in the [Command Reference](https://roam-code.com/docs/command-reference).
467
+
468
+ </details>
469
+
470
+ A few representative commands beyond the core five:
471
+
472
+ - **Health & architecture:** `roam health` (0-100 score), `roam weather` (churn × complexity hotspots), `roam smells` (24 deterministic detectors), `roam algo` (34-task anti-pattern catalog), `roam clusters` / `roam layers` / `roam cycles`.
473
+ - **Change safety:** `roam impact <symbol>` (blast radius), `roam diff` (uncommitted-change blast radius), `roam pr-risk` (0-100 PR risk), `roam diagnose <symbol>` (root-cause ranking).
474
+ - **Backend quality:** `roam n1` (N+1 queries), `roam auth-gaps`, `roam missing-index`, `roam over-fetch`, `roam taint` (graph-reach taint, 10 rule packs).
475
+ - **Index-aware search:** `roam search <pattern>`, `roam grep <pattern>` (grep + reachability + PageRank), `roam uses <name>` (graph-precise references, no string-literal false positives).
476
+ - **Multi-agent:** `roam orchestrate --agents 3` (conflict-aware partitioning), `roam fleet plan`, `roam lease` (parallel-agent coordination).
477
+
478
+ ## Walkthrough
479
+
480
+ <details>
481
+ <summary><strong>10-command walkthrough investigating Flask</strong> (click to expand)</summary>
482
+
483
+ How you'd use Roam to understand a project you've never seen before, using Flask as an example.
484
+
485
+ ```
486
+ $ roam understand
487
+ Tech stack: Python (flask, jinja2, werkzeug)
488
+ Architecture: Monolithic — 3 layers, 5 clusters
489
+ Key abstractions: Flask, Blueprint, Request, Response
490
+ Health: 78/100 — 1 god component (Flask)
491
+ Entry points: src/flask/__init__.py, src/flask/cli.py
492
+
493
+ $ roam file src/flask/app.py # file skeleton: definitions + signatures + health
494
+ $ roam deps src/flask/app.py # what imports this file
495
+ $ roam weather # hotspots ranked by churn × complexity
496
+ $ roam health # composite 0-100 + god components / cycles / layer violations
497
+ $ roam context Flask # AI-ready context: files to read with line ranges
498
+ $ roam preflight Flask # pre-change gate: blast radius + tests + complexity + fitness
499
+ $ roam split src/flask/app.py # internal symbol groups + extraction suggestions
500
+ $ roam why Flask url_for Blueprint # role classification (Hub/Bridge/Core) + reach + risk
501
+ $ roam health --gate # CI quality gate (exit 5 on failure)
502
+ ```
503
+
504
+ Ten commands. Complete picture: structure, dependencies, hotspots, health, context, safety checks, decomposition, and CI gates.
505
+
506
+ </details>
507
+
508
+ ## Integration with AI coding tools
509
+
510
+ Roam is designed to be called by coding agents. Instead of repeatedly grepping and reading files, the agent runs one `roam` command and gets a verdict-first envelope. `roam preflight` (above) replaces grep+read+test-impact+complexity+fitness in one ~3KB call; `roam health` rolls the whole codebase into one score:
511
+
512
+ ```text
513
+ $ roam health
514
+ VERDICT: Fair codebase (75/100) — 47 critical, 9 warnings, focus: god_components
515
+
516
+ Health Score: 75/100 | Tangle: 0.0% (7/33395 symbols in cycles)
517
+ Propagation Cost: 0.1% | Algebraic Connectivity: 0.0074
518
+
519
+ Health: 67 issues — 47 CRITICAL, 9 WARNING, 19 INFO
520
+ Breakdown: cycles [1 CRITICAL, 1 WARNING], god [31 CRITICAL, 8 WARNING, 11 INFO], bottlenecks [15 CRITICAL]
521
+
522
+ Top CRITICAL issues (run `roam --detail health` for the full breakdown):
523
+ cycle (5 symbols): _COMMANDS, complete, _reconstruct_command
524
+ god component: path (prop, degree=2408)
525
+ ```
526
+
527
+ *The verdict line works alone — an agent that reads nothing else still knows where to look.* Pipe `--json` for the structured envelope your agent consumes.
528
+
529
+ **Fastest setup (Claude Code):** wire the compile/verify loop in one command — no config files, no MCP setup, no rules to write:
530
+
531
+ ```bash
532
+ roam hooks claude --write # compile-before + verify-after hooks; --uninstall to undo
533
+ ```
534
+
535
+ For other agents (or alongside the hooks), point them at Roam via instructions in their config file:
536
+
537
+ ```bash
538
+ roam describe --write # auto-detects CLAUDE.md, AGENTS.md, .cursor/rules, etc.
539
+ roam describe --agent-prompt # compact ~500-token prompt — copy-paste into an existing config
540
+ roam minimap --update # inject/refresh an annotated codebase minimap (won't touch other content)
541
+ ```
542
+
543
+ This teaches the agent which command fits each situation: `roam preflight` before changes, `roam context` for files to read, `roam diagnose` for debugging.
544
+
545
+ <details>
546
+ <summary><strong>Where to put agent instructions for each tool</strong></summary>
547
+
548
+ | Tool | Config file |
549
+ |------|-------------|
550
+ | **Claude Code** | `CLAUDE.md` in your project root |
551
+ | **OpenAI Codex CLI** | `AGENTS.md` in your project root |
552
+ | **Gemini CLI** | `GEMINI.md` in your project root |
553
+ | **Cursor** | `.cursor/rules/roam.mdc` (add `alwaysApply: true` frontmatter) |
554
+ | **Windsurf** | `.windsurf/rules/roam.md` (add `trigger: always_on` frontmatter) |
555
+ | **GitHub Copilot** | `.github/copilot-instructions.md` |
556
+ | **Aider** | `CONVENTIONS.md` |
557
+ | **Continue.dev** | `config.yaml` rules |
558
+ | **Cline** | `.clinerules/` directory |
559
+
560
+ </details>
561
+
562
+ ## MCP Server
563
+
564
+ Roam includes a [Model Context Protocol](https://modelcontextprotocol.io/) server for direct integration with MCP-aware tools.
565
+
566
+ ```bash
567
+ pip install "roam-code[mcp]"
568
+ roam mcp
569
+ ```
570
+
571
+ <!-- BEGIN auto-count:readme-default-preset -->
572
+ **Default preset:** `core` (17 tools: 16 core + `roam_expand_toolset` meta-tool).
573
+ <!-- END auto-count:readme-default-preset -->
574
+
575
+ 243 MCP tools span seven presets (`core`, `review`, `refactor`, `debug`, `architecture`, `compliance`, `full`); `core` stays narrow to keep the prompt tight. Most tools are read-only index queries; side-effect tools are explicitly annotated. Set `ROAM_MCP_PRESET=full roam mcp` for the complete toolset.
576
+
577
+ **Cold-start envelope.** Any wrapper that can't complete normally — missing index, stale index, partial failure — returns one canonical structured envelope (`status`, `error_code`, `summary.verdict`, `hint`, `next_command`) instead of hanging or emitting empty output. Agents always get an actionable signal, never a silent failure.
578
+
579
+ **MCP runtime security.** Three controls run at the wrapper boundary inside the server, protecting every client even with no gateway present: egress secret-redaction, mode-gated `policy_decision` enforcement (opt-in shadow-mode via `ROAM_MODE_DRY_RUN`), and HMAC-linked decision receipts bound into the signed run ledger. Gateway integrators: see [`dev/MCP-SECURITY-POSTURE.md`](dev/MCP-SECURITY-POSTURE.md).
580
+
581
+ See [Using Roam via MCP](https://roam-code.com/docs/mcp-usage) for the first-run flow and canonical agent sequence.
582
+
583
+ <details>
584
+ <!-- BEGIN auto-count:readme-mcp-tool-list-summary -->
585
+ <summary><strong>MCP tool list (all 242)</strong></summary>
586
+ <!-- END auto-count:readme-mcp-tool-list-summary -->
587
+
588
+ <!-- BEGIN auto-count:readme-mcp-tool-list-table -->
589
+ | Tool | Description |
590
+ |------|-------------|
591
+ | `roam_adrs` | Discover Architecture Decision Records (ADRs) and link them to code modules. Scans well-known ADR directories (``docs/adr/`` / ``architecture/decisions/`` / ...) for markdown files matching ADR naming patterns, parses each ADR's title / status / date / file refs, then cross-references mentioned files against the symbol index. Different from ``roam_doc_staleness`` (inline docstring drift) -- this is the prose-decision-document discoverer. |
592
+ | `roam_adversarial` | Frame architectural issues in changed files as challenges the developer must defend: CRITICAL (new cyclic dependencies), HIGH (layer violations, high-confidence anti-patterns), WARNING (cross-cluster coupling, high fan-out), INFO (orphaned symbols). Composes cycles + clusters + layers + catalog + dead + complexity. Different from ``roam_diff`` (blast-radius facts) -- this is the architecture-review framing for code-review agents. |
593
+ | `roam_adversarial_review` | Adversarial architecture review: challenges about cycles, anti-patterns, coupling. |
594
+ | `roam_affected` | Monorepo impact analysis: find all affected packages/modules from changes. |
595
+ | `roam_affected_tests` | List the tests you actually need to run after editing a symbol or file. Use when user asks 'which tests do I run?', 'what tests cover X?', or after Edit/Write. Walks reverse-dependencies with hop distance — closer hops run first. For a full pre-commit check (blast radius + fitness + tests), use roam_prepare_change. |
596
+ | `roam_agent_context` | Extract a single agent's partition from the full agent plan: write scope, read-only dependencies, interface contracts, coordination instructions, and key symbols. Different from ``roam_agent_plan`` (full multi-agent view) and ``roam_orchestrate`` (operational dispatch with merge order) -- this is the focused per-worker packet for one agent. |
597
+ | `roam_agent_export` | Generate AI agent context file (CLAUDE.md/AGENTS.md/.cursorrules) from index. |
598
+ | `roam_agent_opt` | Detect weak agent-contract shape in roam's tool descriptions and envelopes and recommend the stronger shape. |
599
+ | `roam_agent_plan` | Decompose partitions into dependency-ordered multi-agent tasks: per-task write scope, read-only dependencies, interface contracts, phase schedule, and merge sequencing. Supports ``plain`` / ``json`` / ``claude-teams`` output formats. Different from ``roam_partition`` (raw analytical manifest) and ``roam_orchestrate`` (operational dispatch) -- this is the dependency-ordered phase schedule. |
600
+ | `roam_agent_score` | Aggregate runs from the local ledger and score each agent on a 0..100 composite (run completion, gate adherence, preflight compliance, blast accuracy, replay survival). Empty state (no runs / no matching runs) returns a clean envelope with ``state: "no_data"`` -- never empty stdout, never a crash. Different from ``roam_runs_verify`` (HMAC tamper-detection) -- this is the per-agent quality score across runs. |
601
+ | `roam_ai_ratio` | Estimate AI-generated code percentage from git commit heuristics. |
602
+ | `roam_ai_readiness` | AI readiness score (0-100): how effectively AI agents can work on this codebase. |
603
+ | `roam_alerts` | Active health alerts: thresholds breached on tangle, complexity, churn, or coverage. |
604
+ | `roam_algo` | Detect suboptimal algorithms with better alternatives and complexity analysis. |
605
+ | `roam_annotate_symbol` | Add persistent annotation to a symbol/file for future agent sessions. |
606
+ | `roam_api` | List the public API surface — exported public symbols with signatures and docs. |
607
+ | `roam_api_changes` | Detect breaking and non-breaking API changes vs a git ref. |
608
+ | `roam_api_drift` | Detect field drift between Laravel/PHP models and TypeScript interfaces. Triggers: 'where do API contracts diverge?', 'find drift between PHP $fillable fields and TypeScript types', 'audit frontend API types'. Pair with roam_endpoints for full route inventory. |
609
+ | `roam_architecture_drift` | Compute per-week growth rates for symbols / edges / cycles across a sliding window of persisted ``.roam/snapshots/`` and classify overall direction as ``improving`` / ``degrading`` / ``stable``. Different from ``roam_graph_diff`` (point-in-time delta between two commits) and ``roam_trends`` (metric-level time series) -- this is the snapshot-based architectural-trajectory report. |
610
+ | `roam_article_12_check` | Run a 6-item EU AI Act Article 12 readiness checklist over the indexed repo: audit-trail directory, audit-trail records, retention policy doc, technical docs, attestation surface, high-risk classification heuristic. Emits a structured envelope mapping each item to its Article (12, 18, 19) or Annex (III). Different from ``roam_audit_trail_conformance_check`` (per-record chain integrity) -- this is the repo-level governance-readiness assessment. Per the agentic-assurance guardrails: 'maps to' / 'supports evidence for', never 'certifies' / 'makes compliant'. |
611
+ | `roam_ask` | Natural-language codebase question dispatcher. Examples: 'is it safe to delete X?', 'where does login validate?', 'what just broke?', 'who owns module Y?'. Routes intent to one recipe in the graph-aware 29-recipe registry. One call replaces Grep+Read for most questions. Run this FIRST when the user asks a code-comprehension question. |
612
+ | `roam_at` | Show the code AT a file:line with its enclosing symbol + callers. Targeted alternative to Read-ing the whole file. location is 'file:line'. |
613
+ | `roam_attest` | Proof-carrying PR attestation: evidence bundle + merge verdict. |
614
+ | `roam_audit` | Run a one-shot codebase architecture audit: bundles health, debt, dead-code, risk, test-pyramid, coverage, and API-surface signals into a single envelope. Designed as the structured artifact a written audit report attaches. Different from ``roam_health`` (single 0-100 score) and ``roam_report`` (preset-driven Markdown report) -- this is the verdict-first audit packet for governance and onboarding. |
615
+ | `roam_audit_trail_conformance_check` | Score the audit trail against an EU AI Act Article 12 checklist. |
616
+ | `roam_audit_trail_export` | Export the audit trail as markdown / json / csv for procurement review. |
617
+ | `roam_audit_trail_verify` | Verify SHA-256 chain integrity of a roam audit trail. |
618
+ | `roam_auth_gaps` | Find endpoints lacking auth / authorization checks ranked by confidence. Triggers: 'which routes are unprotected?', 'show me auth gaps', 'audit handler protection'. Pair with roam_taint for taint-source reachability over the unprotected surfaces. |
619
+ | `roam_batch_get` | Get details for up to 50 symbols in one call. Replaces 50 sequential roam_symbol calls. |
620
+ | `roam_batch_search` | Search up to 10 patterns in one call. Replaces 10 sequential roam_search_symbol calls. |
621
+ | `roam_bisect_blame` | Find snapshots that caused architectural degradation, ranked by impact. |
622
+ | `roam_boundary` | Surface public-by-accident exports + changed-range layer violations. Two closed-enum kinds: public_by_accident (warning, _-prefixed name in __all__) and wrong_direction_import (high, lower-layer module imports from higher-layer caller). |
623
+ | `roam_breaking_changes` | Detect breaking API changes between git refs: removed exports, changed signatures. |
624
+ | `roam_brief` | Compose a one-page agent briefing covering five sections: ``next`` (what ``roam next`` would recommend), ``highlights`` (stack / top danger zones / top mined laws from ``roam agents-md``), ``pr_bundle`` (current PR-bundle status on the active branch), ``mode`` (active agent mode and its allow-list size), and ``runs`` (the N most-recent runs from the ledger). Designed as the FIRST command an agent runs when joining a roam-indexed repo. Different from ``roam_next`` (single-command router) -- this is the verdict-first session kickoff packet. |
625
+ | `roam_budget_check` | Check changes against architectural budgets (cycles, health floor, complexity). |
626
+ | `roam_bus_factor` | Score knowledge-concentration risk per directory: Shannon entropy over unique authors, primary-author share, last activity, and a staleness factor. Flags CRITICAL / HIGH / MEDIUM / LOW per module. Different from ``roam_owner`` (per-file blame) and ``roam_congestion`` (too-many-authors merge-conflict risk) -- this measures knowledge-loss risk. |
627
+ | `roam_capsule_export` | Sanitized structural graph export without code bodies (privacy-safe). |
628
+ | `roam_catalog` | Return the full machine-readable list of every roam MCP tool currently registered, including title, description, and capability flags (core / read_only / destructive). Use this once at session start to discover what's available without enumerating tools. |
629
+ | `roam_causal_graph` | Build per-symbol causal graphs: edges from inputs (parameters / globals / env reads) to sinks (side-effecting calls / return / raise / mutation). Six causal kinds: ``param_to_effect``, ``param_to_return``, ``global_to_effect``, ``global_to_mutation``, ``env_to_effect``, ``param_to_raise``. Heuristic line-level text scan -- false negatives expected. Different from ``roam_taint`` (cross-symbol taint propagation) -- this is intra-symbol dataflow only. |
630
+ | `roam_cga_emit` | Emit a Code Graph Attestation — in-toto v1 statement with predicate type `https://roam-code.com/spec/CodeGraph/v1` (or `https://roam-code.com/spec/CodeGraph-AIBOM/v1` with --aibom). Merkle root over symbol fingerprints + edge-bundle digest. Optional cosign keyless or offline signing. |
631
+ | `roam_cga_verify` | Verify a Code Graph Attestation — re-derives the Merkle root + edge-bundle digest from the live DB and compares to the bundled predicate, AND verifies the cosign signature on the sibling `.bundle`. Fails closed (exit 5) when no bundle is present unless no_cosign=True is passed to acknowledge predicate-only verification. |
632
+ | `roam_changelog` | List commits since last tag, optionally formatted as a markdown CHANGELOG draft. |
633
+ | `roam_check_rules` | Run 10 built-in structural rules: cycles, fan-out, complexity, tests, god classes, layer violations. |
634
+ | `roam_clean` | Remove orphaned index entries (files deleted from disk) without full rebuild. |
635
+ | `roam_clones` | Detect near-duplicate code via AST structural hashing (Type-2 clones). |
636
+ | `roam_closure` | Minimal set of changes needed for rename/delete/modify (exact files + lines). |
637
+ | `roam_clusters` | Show Louvain code clusters and directory mismatches. Returns per-cluster size, cohesion, conductance, modularity Q, mega-cluster sub-group breakdowns, and inter-cluster coupling. Different from ``roam_layers`` (dependency-layer violations) -- this groups by community detection, not by topological depth. |
638
+ | `roam_codeowners` | CODEOWNERS coverage, ownership distribution, unowned files, drift detection. |
639
+ | `roam_commands` | List the repo's own runnable build/test/lint commands, classified by kind/scope/cost with evidence. |
640
+ | `roam_compare` | Diff two roam indices structurally: reports symbols added/removed/moved, per-file complexity deltas above a threshold, language counts, and a one-line health verdict (improved / regressed / sideways). Different from ``roam_graph_diff`` (commit-range graph delta from one index) -- this is the cross-index structural delta for release-vs-release comparisons. |
641
+ | `roam_compatibility` | Detect outbound surface regressions vs a baseline snapshot. Closed-enum verdicts: no regressions / surface additions / surface drift / breaking changes. Compares commands, flags, envelope summary fields, MCP tools, and preset counts. Capture the baseline via CLI: roam compatibility --write-baseline PATH. |
642
+ | `roam_compile` | Compile a freeform coding task into a structured envelope an AI agent can consume. Returns the ArtifactSelector verdict (facts / lean / full envelope) plus the deterministic plan. Empirically validated on Opus 4.8 (2026-05-28): FactsEnvelope delivers 99% of vanilla quality at 54% of vanilla cost. Different from roam_plan (symbol-centric execution plan) -- this is the freeform-task compiler. |
643
+ | `roam_complete` | Prefix completion for symbols / file paths / commands. Faster than search; returns just names. |
644
+ | `roam_complexity_report` | Functions ranked by cognitive complexity above threshold. |
645
+ | `roam_congestion` | Detect developer congestion: files with too many concurrent authors within a sliding time window. Combines author count, churn intensity, and complexity into a congestion score that predicts merge conflicts and coordination failures. Different from ``roam_bus_factor`` (knowledge-loss risk) and ``roam_owner`` (per-file blame breakdown) -- this measures too-many-cooks contention. |
646
+ | `roam_context` | Get the minimum files + line ranges needed to understand or modify a symbol. Use when user says 'show me X', 'I need to change Y', 'how does Z work?'. Returns targeted reads ranked by PageRank — cheaper than Read'ing whole files. For pre-change safety (blast radius + tests + effects), use roam_prepare_change instead. |
647
+ | `roam_conventions` | Auto-detect codebase naming, file, import, and export conventions with outliers. |
648
+ | `roam_coupling` | Use for: 'what files change together?' / 'find hidden coupling not visible in imports' / 'which sibling file should I also update?'. Pick over reading git log manually — surfaces co-change partners the call graph misses. Use roam_fan for structural connectivity, roam_dark_matter for the latent variant. |
649
+ | `roam_coverage_gaps` | Find unprotected entry points: top-level exported functions / methods that have no call-graph path to a required gate symbol (auth / permission / validation). Supports exact gate names, regex patterns, framework presets (python / javascript / go / java-maven / rust), and a ``.roam-gates.yml`` sidecar config. Different from ``roam_auth_gaps`` (PHP/Laravel source analysis) and ``roam_test_gaps`` (untested symbols in changed files) -- this walks the call graph to verify every entry reaches a required gate. |
650
+ | `roam_critique` | Post-edit patch verifier. Pass `git diff` output as diff_text. Catches clones-not-edited (sibling duplicates the agent missed) and high-blast-radius edits. Grounded in the indexed graph, not heuristics. Triggers: 'review my patch', 'is this PR safe?', after generating any non-trivial diff. |
651
+ | `roam_cut` | Find fragile domain boundaries via minimum-cut analysis. Computes the thinnest edge cuts between architectural clusters and the highest-impact 'leak edges' whose removal would best improve domain isolation. Different from ``roam_split`` (decomposes a single file) -- this finds boundaries between clusters. |
652
+ | `roam_cut_analysis` | Minimum cut analysis: fragile domain boundaries, highest-impact leak edges. |
653
+ | `roam_cycles` | Show import/call cycles (Tarjan strongly-connected components) of the symbol graph. Returns per-cycle size, member files/symbols, and an `actionable` flag (spans >=2 distinct non-test files). The focused counterpart to the cycles section of ``roam_health``; sibling of ``roam_clusters`` / ``roam_layers``. |
654
+ | `roam_dark_matter` | File pairs that co-change without structural links (hidden coupling). |
655
+ | `roam_dashboard` | Unified single-screen codebase status: health, hotspots, bus factor, dead code, AI rot. |
656
+ | `roam_dead_code` | Use for: 'what can I safely delete?' / 'find dead code' / 'list unused exports'. Pick over manual grep sweeps — filters out entry points and framework lifecycle hooks, ranks candidates by deletion safety. Pair with roam_safe_delete for per-symbol deletion verdicts. |
657
+ | `roam_debt` | Rank files by tech-debt score with SQALE remediation-cost estimates. Triggers: 'where's the worst debt?', 'what should we refactor next?', 'estimate cleanup cost'. Pair with roam_complexity_report for per-function brain-method targeting. |
658
+ | `roam_delete_check` | Gate the diff (working / staged / PR / HEAD) on surviving references to deleted symbols and files. Per-deletion verdict: SAFE (no surviving references), LIKELY-SAFE (survivors only in tests / docs / unreachable code), or BREAK-RISK (survivors in reachable code). Different from ``roam_critique`` (PR-wide diff review) -- this targets the deletion surface specifically with CI-gate semantics (overall BREAK-RISK trips the gate). |
659
+ | `roam_deps` | Use for: 'what does file X import?' / 'which files depend on module Y?' / 'show me the importers of Z'. Pick this for file/module-level coupling before refactors; symbol-level lookups belong in roam_uses. Set multi=True to get imports + importers + git co-change coupling in ONE envelope (do this instead of shelling out to `roam deps --multi` or hand-querying the index). Run in parallel with roam_coupling for the biggest token win. |
660
+ | `roam_describe` | Auto-generate a project description for AI coding agents: multi-section Markdown report covering overview, directories, entry points, key abstractions, architecture, and testing. Different from ``roam_understand`` (compact codebase overview) -- this is the comprehensive prose description for CLAUDE.md / AGENTS.md / .cursor/rules. The wrapper emits to stdout; on-disk writes are deferred to the CLI (``roam describe --write``) so the MCP surface stays read-only. |
661
+ | `roam_dev_profile` | Developer behavioral profiling: commit time patterns, change scatter (Gini), burst detection. |
662
+ | `roam_diagnose` | Root cause analysis: upstream/downstream suspects ranked by composite risk. |
663
+ | `roam_diagnose_issue` | Root-cause triage for a failing symbol. Pass the suspect symbol. Ranks upstream / downstream callers by risk + lists side effects + transactional boundaries. Replaces manual call-graph Grep+Read. Triggers: 'X is broken', 'test Y fails', 'why does Z return null?'. |
664
+ | `roam_diff` | Show the blast radius of your edits BEFORE you commit. Run after Edit/Write tools to see affected symbols, files, tests, plus coupling and fitness warnings. Use when user asks 'what did my change break?', 'safe to commit?'. Replaces ad-hoc `git diff --stat` inspection with graph-aware impact data. For PR-level risk verdict, use roam_pr_risk. |
665
+ | `roam_disambiguate` | List every symbol matching a name with file/line/kind/signature/PageRank — pick the right overload. |
666
+ | `roam_doc_intent` | Link documentation to code: find drift, dead refs, undocumented symbols. |
667
+ | `roam_doc_staleness` | Detect stale docstrings: docs whose body has drifted since the comment was written. Uses ``git blame`` to compare docstring timestamps against code body timestamps. Different from ``roam_docs_coverage`` (missing docs ranked by PageRank) and ``roam_stale_refs`` (dangling doc links) -- this audits what existing docs SAY. |
668
+ | `roam_docs_coverage` | Doc coverage + stale-doc drift with PageRank-ranked missing docs. |
669
+ | `roam_doctor` | Setup diagnostics: Python version, tree-sitter, git, index existence, freshness, SQLite. |
670
+ | `roam_dogfood` | One-shot full-stack run: audit + pr-analyze + audit-trail + conformance. |
671
+ | `roam_dogfood_aggregate` | Triage view over the dogfood eval corpus: totals, per-command findings count, by-status / by-severity / by-type breakdowns. Reads ``internal/dogfood/evals/`` (or an override path). Useful for agents auditing roam-code itself; mostly a no-op on consumer repos that have no dogfood corpus. |
672
+ | `roam_drift` | Ownership drift detection: declared CODEOWNERS vs actual time-decayed contributors. |
673
+ | `roam_duplicates` | Detect semantically duplicate functions via structural similarity. |
674
+ | `roam_effects` | Side effects of functions: DB writes, network, filesystem (direct + transitive). |
675
+ | `roam_endpoints` | List all REST/GraphQL/gRPC endpoints with handlers, methods, and locations. |
676
+ | `roam_entry_points` | Catalog every entry point into the codebase: HTTP routes, CLI commands, scheduled jobs, event handlers, message consumers, main functions, and exports. Reports per-entry reachability coverage -- what fraction of symbols each entry transitively reaches through the call graph. |
677
+ | `roam_eval_retrieve` | Run the retrieval eval harness over a labeled task set. Reports recall@K, mean reciprocal rank, and per-task diagnostics. Supports a weight sweep and CodeRAG-Bench / BEIR emit formats for public leaderboard submission. |
678
+ | `roam_evidence_diff` | Diff two ``ChangeEvidence`` packets: shows hash drift, schema drift, added/removed refs, missing evidence, and changed verdicts. Useful for reviewing PR re-runs, comparing replay windows, or auditing whether a fresh evidence packet has improved or regressed against a stored baseline. Different from ``roam_compare`` (two-index structural delta) -- this is the two-packet evidence delta. |
679
+ | `roam_evidence_doctor` | Diagnose a ChangeEvidence packet's health: schema validity, closed-enum conformance, content_hash integrity, completeness banner tier (STRONG / PARTIAL / INSUFFICIENT), declared redactions, and actionable next steps for partial / missing evidence questions. Read-only. |
680
+ | `roam_evidence_oscal` | Emit an OSCAL v1.2 document. Default kind='control-mapping' compiles the roam control map (maps roam evidence to EU AI Act, ISO/IEC 42001, NIST AI RMF, NIST AI 600-1, NIST SP 800-218A, SOC 2, internal AI-change policy). kind='assessment-results' compiles a per-run AR document from a ChangeEvidence packet (requires evidence_path); AR mandates an Assessment Plan reference — pass import_ap_ref for an external AP or omit it to inline a synthesized stub AP. Supports evidence for the listed frameworks — does not certify compliance. Two roam-specific concepts (authority_refs, redactions) surface as OSCAL ``prop`` extensions under the ``urn:roam:oscal:v1`` namespace. |
681
+ | `roam_expand_toolset` | List available tool presets or show contents of a preset. Presets: core (15), review (73), refactor (73), debug (72), architecture (74), compliance (13), full (227). |
682
+ | `roam_explore` | Codebase exploration bundle: understand overview + optional symbol deep-dive in one call. |
683
+ | `roam_fan` | Show fan-in / fan-out: the most-connected symbols or files. Flags hub / spreader / HIGH-RISK structural hotspots based on cross-file import / call edges. Different from coupling (co-change frequency) -- this measures structural connectivity. |
684
+ | `roam_file_info` | File skeleton: all symbols with signatures, kinds, line ranges. |
685
+ | `roam_findings_count` | Show per-detector finding counts. Useful for spotting which detectors have migrated to the central registry vs which are still only emitting to their detector-specific tables. |
686
+ | `roam_findings_list` | List rows from the central findings registry, optionally filtered by detector or subject. Cross-detector view -- every migrated detector (clones, dead, complexity, smells, n1, missing-index, ...) emits here behind one schema. |
687
+ | `roam_findings_show` | Show full detail for a single finding by its stable ``finding_id_str``. Returns the detector version, subject, confidence tier, claim, evidence JSON, and any suppressions. |
688
+ | `roam_fingerprint` | Topology fingerprint for cross-repo comparison or structural drift tracking. |
689
+ | `roam_fitness` | Run architectural fitness functions from ``.roam/fitness.yaml``: dependency constraints, layer enforcement, metric thresholds, naming conventions, and trend regression guards. Different from ``roam_preflight`` (compound 6-signal pre-edit gate) -- this is the dedicated fitness surface with per-rule output, baseline / delta mode, and trend regression guards. |
690
+ | `roam_flag_dead` | Detect potentially stale feature-flag code: flags referenced only once, flags always checked with the same boolean default, and flags clustered in a single file. Recognises LaunchDarkly, Unleash, Split, generic ``feature_flag(...)`` calls, and ``FEATURE_*`` env-var patterns. Different from ``roam_dead_code`` (graph-unreachable symbols) -- this targets code that is alive in the graph but gated behind flags that may never fire. |
691
+ | `roam_fleet_plan` | Plan a multi-agent fleet for a goal — graph-aware partition (Louvain + co-change) emits .roam-fleet.json for Composio / Copilot CLI / raw. |
692
+ | `roam_fn_coupling` | Show function-level temporal coupling: symbol pairs that change together across commits. Different from ``roam_coupling`` (file-level pairs) -- this drills into co-changing symbols inside and across files, with optional structural-edge filtering. |
693
+ | `roam_for_bug_fix` | Compound: diagnose + affected_tests + diff + context for a symbol you're about to debug. |
694
+ | `roam_for_new_feature` | Compound: understand + search + context + complexity for an area you're about to add code to. |
695
+ | `roam_for_refactor` | Compound: preflight + impact + complexity_report + clones for a symbol you're about to refactor. |
696
+ | `roam_for_security_review` | Compound: taint + vuln + critique + adversarial for a security review pass. |
697
+ | `roam_forecast` | Predict when metrics will exceed thresholds (Theil-Sen regression). |
698
+ | `roam_full_coupling` | Composite coupling report for ONE file in a single envelope: top-N temporal coupling pairs touching the file + structural imports/importers + top-N file symbols. Use instead of chaining roam_coupling + roam_deps + roam_file_info. |
699
+ | `roam_generate_plan` | Structured execution plan for code modification: read order, invariants, tests. |
700
+ | `roam_get_annotations` | Read annotations for symbols, files, or project. Filter by tag/date. |
701
+ | `roam_get_invariants` | Implicit contracts for symbols: signature stability, usage spread, breaking risk. |
702
+ | `roam_graph_diff` | Show the structural graph delta between two snapshots. Surfaces new / removed symbols, edge churn, degree shifts, new cycles, layer migrations, and likely renames. Reads persisted snapshots from ``.roam/snapshots/`` -- capture one with ``--save-snapshot``. |
703
+ | `roam_graph_stats` | Report graph-level invariants: density, connected components, average in/out degree, top in-degree symbols, and approximate diameter. One overview number for 'how dense, connected, and cyclic is this codebase'. |
704
+ | `roam_grep` | Run index-aware grep across the codebase. Returns matches with their enclosing symbol, reachability badge, PageRank, clone-class, and bridge annotations. Supports multi-pattern, source-only / test-only filters, reachable-from / unreachable filters, co-occurrence across patterns, and rank-by importance. |
705
+ | `roam_guard` | Check breaking-change risk for a symbol before editing: 0..100 risk score with component breakdown (blast radius, complexity, centrality, test gap, layer analysis) plus caller / callee lists and covering tests -- all within a ~2K-token budget. Different from ``roam_preflight`` (file / staged / coupling / convention / fitness composite) -- this is the per-symbol quantified risk score for sub-agent dispatch. |
706
+ | `roam_guard_clean` | Prune the verdict log at `.roam/verdict-log.jsonl` to its last N entries (default 500). Atomic rewrite — concurrent appenders never see a partial file. Pair `dry_run=True` for a probe. |
707
+ | `roam_guard_diff` | Verdict diff between two bundle snapshots (or the two most-recent verdict-log entries via `from_log=True`). Returns the verdict delta + reasons added/resolved + file/check counts. Answers 'did my last commit help?' |
708
+ | `roam_guard_doctor` | Roam Guard preflight: 8 health checks (.roam dir, bundles, rule pack, command graph, git, GitHub token, verdict log, yaml lib). Run once before adopting Roam Guard in CI. |
709
+ | `roam_guard_history` | List past Roam Guard verdicts on this repo (reads `.roam/verdict-log.jsonl` fast-path when present, falls back to scanning `.roam/pr-bundles/`). Supports `--verdict` and `--limit` filters. |
710
+ | `roam_guard_pr` | Aggregate Roam Guard PR check: auto-collect bundle, compose AgentChangeProofBundle v1, render verdict (pass/pass_with_warnings/needs_review/blocked), optionally POST a GitHub Check Run. The headline tool — drop this into a CI step to gate any PR. |
711
+ | `roam_guard_rules` | Inspect or validate a Roam Guard rule pack. Subcommands: `show` (default) renders the pack, `validate` checks schema, `test` matches a path against the pack. |
712
+ | `roam_health` | Codebase health score (0-100) with issue breakdown, cycles, bottlenecks. |
713
+ | `roam_history_grep` | Run git pickaxe (``-S`` / ``-G``) through commit history. Returns commits that introduced or removed the literal string, with author, date, short SHA, and summary per commit. |
714
+ | `roam_hotspots` | Show runtime hotspots: symbols ranked by static analysis vs real production traces (requires ``roam ingest-trace`` to have populated ``runtime_stats``). Each row is tagged UPGRADE (runtime-critical but statically safe), CONFIRMED (both agree), or DOWNGRADE (statically risky but low traffic). Different from ``roam_why_slow`` (top-N by latency alone) -- this classifies static vs runtime mismatch. |
715
+ | `roam_hover` | One-line architectural summary for a symbol — kind, location, blast-radius bucket, top caller, top callee. |
716
+ | `roam_idempotency` | Classify symbols by retry safety: ``idempotent`` (pure, read-only I/O, write-with-check patterns like ``mkdir(exist_ok=True)`` / ``INSERT OR IGNORE`` / ``UPSERT`` / ``if not exists: create``), ``non_idempotent`` (naive writes, mutations, appends), or ``unknown`` (process spawn / unreadable body). Composes on top of ``roam_side_effects``. Different from ``roam_tx_boundaries`` (transaction correctness) -- this answers ``is it safe to retry?``. |
717
+ | `roam_impact` | Blast radius for 'is it safe to change?' — symbols + files affected, in 5 lines. Compact decision-support output. Round 4 / S: the right default tool for safety-checks; preflight is heavier. |
718
+ | `roam_ingest_trace` | Ingest runtime traces (OTel/Jaeger/Zipkin), match spans to symbols. |
719
+ | `roam_init` | Initialize roam and build the first index. Task-mode for non-blocking setup. |
720
+ | `roam_intent` | Link documentation to code: find which docs mention which symbols, and detect doc-to-code drift (references to non-existent symbols). Different from ``roam_docs_coverage`` (PageRank-ranked missing-docstring hotlist) and ``roam_doc_staleness`` (stale docstring content) -- this is the prose-doc-to-symbol linker plus drift detector. |
721
+ | `roam_invariants` | Discover implicit contracts for a symbol or the public API surface: signature shape, parameter count and ordering, usage spread across files, dependency set. Different from ``roam_check_rules`` (explicit governance rules) -- this is the AUTO-discovered implicit-contract surface so agents know what must stay stable when modifying a symbol. |
722
+ | `roam_layers` | Show topological dependency layers and violations. Returns each layer's symbol count, directory breakdown, and any back-edges that violate the topological order. Different from ``roam_clusters`` (community detection) -- this measures dependency depth. |
723
+ | `roam_llm_smells` | Run LLM-API integration linter over indexed files: detects unpinned model versions, missing max_tokens, prompt injection via user-input concatenation, unvalidated json.loads on LLM output, and missing temperature. Different from ``roam_vibe_check`` (AI-generated code shape) and ``roam_smells`` (structural anti-patterns) -- this is the production gate for human-authored LLM-using code. |
724
+ | `roam_map` | Show project skeleton: directory tree, entry points, top symbols by PageRank, language counts. Different from ``roam_describe`` (prose description) and ``roam_minimap`` (sentinel-block one-pager for CLAUDE.md) -- this is the structured skeleton with directories, entry points, and ranked symbols for agent onboarding. |
725
+ | `roam_metrics` | Show unified per-file or per-symbol metrics: cognitive complexity, fan-in / fan-out, SNA centrality vector (PageRank / betweenness / closeness / eigenvector / clustering coefficient), composite debt score, churn, test coverage, and comprehension difficulty in a single view. |
726
+ | `roam_metrics_push` | Push metrics-only summary to Roam Cloud Lite. **Default is dry-run.** |
727
+ | `roam_migration_plan` | Generate an ordered migration plan with risk + blast-radius per step from a target-architecture YAML spec or inline ``--move SYMBOL=path/to/new/file`` directives. Each step is annotated with caller count and a derived risk score so agents can decide where to stop or insert tests. Stops at the first step exceeding ``max_risk``. Different from ``roam_simulate`` (counterfactual single-move analysis) -- this is the ordered multi-step plan with a risk gate. |
728
+ | `roam_migration_safety` | Detect non-idempotent database migrations unsafe to re-run. Triggers: 'audit migration safety', 'find non-idempotent migrations', 'which DDL would break on replay?'. Pair with roam_tx_boundaries for transaction-correctness analysis. |
729
+ | `roam_minimap` | Generate a compact ~20-line codebase minimap for CLAUDE.md injection: tech stack, annotated directory tree, key symbols by PageRank, high-fan-in symbols to avoid, hotspots, detected conventions. Different from ``roam_describe`` (long-form prose) and ``roam_map`` (structured skeleton) -- this is the sentinel-block one-pager. The wrapper emits to stdout; on-disk updates are deferred to the CLI (``roam minimap --update`` / ``--init-notes``) so the MCP surface stays read-only. |
730
+ | `roam_missing_index` | Detect queries hitting non-indexed columns flagged as slow-query risks. Triggers: 'find slow queries', 'audit database indexes', 'where are the N+1 candidates?'. Pair with roam_n1 for per-property iteration patterns. |
731
+ | `roam_module` | Show directory contents: exported symbols, signatures, external imports / importers, internal cohesion percentage, and API surface ratio. Different from ``roam_describe`` (project-wide) -- this analyses a single directory. |
732
+ | `roam_mutate` | Agentic editing: move/rename/add-call/extract symbols with auto-import rewrite. |
733
+ | `roam_n1` | Detect N+1 I/O patterns in ORM code (Laravel/Django/Rails/SQLAlchemy/JPA). |
734
+ | `roam_next` | Suggest the next ``roam`` command based on cheap repo-state signals: index presence, staleness, working-tree dirtiness, recent envelope, and recent memory. Emits one imperative recommendation in <200ms. Different from ``roam_brief`` (multi-section session kickoff) and ``roam_workflow`` (curated multi-step recipes) -- this is the single-command router. |
735
+ | `roam_observability_opt` | Detect code that leaves systems hard to debug (raw debug prints, ...) and recommend the structured-logging shape. |
736
+ | `roam_onboard` | Generate a new-developer onboarding guide for the codebase. |
737
+ | `roam_oracle_batch` | Run multiple oracle queries in one call. Items: [{name, oracle, max_hops?}, ...] where oracle is one of symbol-exists, route-exists, is-test-only, is-reachable-from-entry, is-clone-of. |
738
+ | `roam_oracle_is_clone_of` | Answer the boolean oracle question: does this symbol have persisted clone siblings in the ``clone_pairs`` table? Returns a yes/no verdict envelope with the matched clone class size. Different from ``roam_clones`` (full clone-pair enumeration) -- this is the cheap boolean lookup for one symbol's clone status. |
739
+ | `roam_oracle_is_reachable_from_entry` | Answer the boolean oracle question: is the symbol reachable from any entry point via the call graph (BFS up to ``max_hops`` depth)? Useful for sniffing orphans and production-vs-tooling code. Different from ``roam_dead_code`` (broad dead-symbol detection) and ``roam_entry_points`` (entry-point enumeration) -- this is the cheap boolean lookup for one symbol's reachability. |
740
+ | `roam_oracle_is_test_only` | Answer the boolean oracle question: are ALL callers of this symbol in test files? Useful for sniffing test fixtures and dead-but-test-only helpers. Different from ``roam_dead_code`` (broad dead-symbol detection) -- this is the cheap boolean lookup for one symbol's test-only status. |
741
+ | `roam_oracle_route_exists` | Answer the boolean oracle question: does a route handler match this URL path? Returns a yes/no verdict envelope with the matched handler's file + kind when found. Different from ``roam_endpoints`` (full endpoint enumeration) -- this is the cheap boolean lookup for one route precondition check. |
742
+ | `roam_oracle_symbol_exists` | Answer the boolean oracle question: does a symbol with this name exist in the index? Returns a yes/no verdict envelope with the matched symbol's file + kind when found. Different from ``roam_search_symbol`` (top-N ranked hits) -- this is the cheap boolean lookup for agent precondition checks. |
743
+ | `roam_oracle_test_only` | Alias of roam_oracle_is_test_only — preserves the shorter name agents sometimes guess. |
744
+ | `roam_orchestrate` | Partition codebase for parallel multi-agent work with exclusive write zones. |
745
+ | `roam_orphan_imports` | List imports that don't resolve to any indexed module or installed package -- catches typo'd local imports, missing packages, and dangling relative imports. Covers Python (default), JavaScript / TypeScript, and Go. Different from ``roam_dead_code`` (unused symbols) -- this targets import-statement orphans. |
746
+ | `roam_orphan_routes` | Find backend routes lacking a frontend consumer — the dead-endpoint surface. Triggers: 'which routes can we delete?', 'find unused endpoints', 'audit API surface coverage'. Pair with roam_dead_code for symbol-level dead-export detection. |
747
+ | `roam_over_fetch` | Models serializing too many fields (data over-exposure risk). |
748
+ | `roam_owner` | Show code ownership computed from git blame: per-author line counts, percentages, last-active dates, and a fragmentation index. Works on a file or a directory prefix. Different from ``roam_codeowners`` (which reads the CODEOWNERS file) -- this measures actual ownership. |
749
+ | `roam_partition` | Multi-agent work partitioning: split codebase into independent work zones. |
750
+ | `roam_path_coverage` | Critical call paths with zero test protection, ranked by risk. |
751
+ | `roam_patterns` | Detect positive architectural patterns: Singleton, Factory, Observer, Repository, Middleware, Strategy, and Decorator. Different from ``roam_smells`` (negative anti-patterns) -- this discovers intentional design patterns. |
752
+ | `roam_plan` | Generate a structured execution plan for modifying code: read-order (call-graph BFS), invariants (mined contracts), blast-radius preview, and per-task heuristics. Five task types: ``refactor`` / ``debug`` / ``extend`` / ``review`` / ``understand``. Different from ``roam_plan_refactor`` (refactoring-specific simulation) and ``roam_preflight`` (blast-radius gate) -- this is the general-purpose work plan for any task type. |
753
+ | `roam_plan_refactor` | Build an ordered refactor plan for one symbol using risk/test/simulation context. |
754
+ | `roam_postmortem` | Replay current detectors against past commits: walks a git commit range, runs ``roam critique`` against each commit's diff, and reports which findings would have surfaced pre-merge. Useful for retrospective replay -- 'would today's detector set have caught the incidents already in history?' Different from ``roam_pr_replay`` (one PR replay) -- this is the range-replay over historical commits. |
755
+ | `roam_pr_analyze` | Agent-aware PR risk verdict — INTENTIONAL / SAFE / REVIEW / BLOCK. |
756
+ | `roam_pr_comment_render` | Render a markdown PR comment from a pr-analyze JSON envelope. |
757
+ | `roam_pr_diff` | Structural graph delta of code changes: metric deltas, layer violations. |
758
+ | `roam_pr_prep` | One-shot pre-PR fitness check: bundles ``diff`` blast radius + ``critique`` + ``pr-risk`` into a single envelope with a ``ready_to_open`` verdict. Different from ``roam_pr_risk`` (composite risk score alone) and ``roam_critique`` (clones-not-edited + blast-radius alone) -- this is the three-section pre-PR rollup with the go/no-go verdict. |
759
+ | `roam_pr_risk` | Risk score (0-100) for pending changes with per-file breakdown. |
760
+ | `roam_preflight` | Pre-change safety check: blast radius, tests, complexity, fitness. Call BEFORE modifying code. |
761
+ | `roam_prepare_change` | Pre-change safety gate. Run before any non-trivial edit — returns blast radius, affected tests, and fitness gates. |
762
+ | `roam_proof_bundle` | Compose AgentChangeProofBundle v1 from the active pr-bundle. Returns the structured verdict envelope an agent can attach to a PR. Supports markdown / json / sarif output formats. |
763
+ | `roam_py_modern` | Python modernisation signal: walrus, match, PEP 604/585, f-strings vs legacy. |
764
+ | `roam_py_types` | Python type-annotation health: % public fns fully typed, Any usage, legacy typing. |
765
+ | `roam_pytest_fixtures` | pytest fixture chain: top fixtures by dependent count, or per-symbol dependency walk. |
766
+ | `roam_recommend` | Surface symbols related to a given symbol via three signal sources combined: call-graph neighbours (1-hop in + out), git co-change (other symbols whose files changed in the same commits), and persisted clone siblings (when ``roam clones --persist`` was run). Each candidate gets a score that's the normalised sum of the three contributions. Different from ``roam_impact`` (transitive blast radius) and ``roam_neighbours`` (graph-only 1-hop neighbours) -- this fuses co-change + clones into the ranking. |
767
+ | `roam_refs_text` | Audit literal strings across the project and emit a per-string verdict: SAFE-TO-REMOVE / REVIEW / LOAD-BEARING. Groups every reference by surface (code, test, docs, config, generated, vendored) and annotates reachability for code hits. |
768
+ | `roam_reindex` | Incremental or force reindex. Task-mode + elicited confirmation for force runs. |
769
+ | `roam_relate` | How symbols connect: shared deps, call chains, conflicts, cohesion score. |
770
+ | `roam_repo_map` | Compact project skeleton with key symbols per file, by PageRank. |
771
+ | `roam_report` | Run a compound report preset (built-ins: ``first-contact``, ``security``, ``pre-pr``, ``refactor``, ``guardian``) that orchestrates multiple analysis commands into one rendered report. Different from ``roam_audit`` (single fixed bundle) -- this is the preset-driven multi-command roll-up with optional Markdown output and strict exit-code gating. |
772
+ | `roam_reset` | Delete index DB and rebuild from scratch. Requires force=True. Recovery for corrupted indexes. |
773
+ | `roam_retrieve` | Graph-aware context for free-form tasks: FTS5 + structural rerank (PageRank + clones) + token budget. |
774
+ | `roam_review_change` | Change review bundle: pr-risk + breaking changes + structural diff in one call. |
775
+ | `roam_risk` | Rank symbols by domain-weighted risk: combines static risk (fan-in + fan-out + betweenness) with domain criticality weights so financial / auth / data-integrity symbols rank higher than UI symbols. Different from ``roam_fan`` (raw fan-in/out degree) and ``roam_hotspots`` (runtime hotspot classification) -- this is the semantic-domain-weighted risk heatmap. |
776
+ | `roam_rules_check` | Evaluate custom governance rules from .roam/rules/ YAML files. |
777
+ | `roam_rules_validate` | Lint a `.roam/rules.yml` for shippability before customers see it. |
778
+ | `roam_runtime_hotspots` | Runtime hotspots where static and runtime rankings disagree (UPGRADE/DOWNGRADE). |
779
+ | `roam_safe_delete` | Fuse dead-code, blast-radius, and test-coverage signals into a single deletion verdict: SAFE / REVIEW / UNSAFE. Reports direct callers (non-test), transitive dependents, affected files, and a public-API bump that flips SAFE -> REVIEW for exported symbols whose name matches a common public-API prefix. Different from ``roam_dead_code`` (all unreferenced symbols) and ``roam_impact`` (transitive blast radius) -- this is the single go/no-go gate. |
780
+ | `roam_safe_zones` | Classify the refactor containment zone around a symbol or file: ISOLATED (no external connections), CONTAINED (<=5 boundary symbols), or EXPOSED (>5). Reports strictly-internal vs boundary symbols and external caller / callee counts per boundary. Different from ``roam_impact`` (unbounded reverse blast radius) and ``roam_closure`` (exact locations needing modification) -- this maps the bounded zone where it is safe to refactor freely. |
781
+ | `roam_sbom` | Emit a Software Bill of Materials (CycloneDX 1.7 by default, or SPDX 2.3) enriched with call-graph reachability — distinguishes phantom dependencies from those actually exercised. Pair with --aibom for the AIBOM extension required by EU AI Act Art. 50. |
782
+ | `roam_search_semantic` | Find symbols by natural language query (hybrid BM25 + vector + framework packs). |
783
+ | `roam_search_symbol` | Use for: 'where is X defined?' / 'find function Y' / 'locate class Z'. Pick over Bash grep for function/class/method lookups — PageRank-ranked file:line + qualified names, no string/comment false positives. For 3+ symbols use roam_batch_search; for callers use roam_uses. |
784
+ | `roam_secrets` | Scan for hardcoded secrets, API keys, tokens, passwords (25 patterns). |
785
+ | `roam_semantic_diff` | Structural change summary: what symbols were added/removed/modified. |
786
+ | `roam_session_metrics` | Local-only telemetry: per-tool invocation counts grouped by outcome (success / rate_limited / error). Helps answer "which tools are agents actually using?" and "are 90 of the 227 tools dead weight?". Never phones home — counters live in the MCP server process and reset on restart. |
787
+ | `roam_side_effects` | Classify symbols by side-effect bucket: ``none`` (pure), ``io_read`` (disk / network / DB read), ``io_write`` (disk / network / DB write), ``mutation`` (global / module state mutation), ``process`` (subprocess / thread / async), or ``unknown``. Coarse five-bucket taxonomy designed for agent decisions. Different from ``roam_effects`` (finer 11-kind taxonomy + transitive propagation) -- this is the agent's go/no-go classifier for ``can I retry this safely?``. |
788
+ | `roam_simulate` | Predict metric deltas from move/extract/merge/delete operations. |
789
+ | `roam_simulate_departure` | Simulate knowledge loss if a developer leaves the team. |
790
+ | `roam_sketch` | Render a compact structural skeleton of a directory: every file's exported symbols with kind, signature, line range, and first-line docstring. Different from ``roam_understand`` (broader project overview) and ``roam_file_info`` (one-file skeleton) -- this is the directory-level API surface in a single view, with optional ``full=True`` to include private symbols. |
791
+ | `roam_smells` | Run 24 deterministic code-smell detectors over the indexed codebase: brain methods, god classes, deep nesting, shotgun surgery, feature envy, long parameter lists, large classes, dead params, low cohesion, message chains, data clumps, type switches, cross-layer clones, parallel hierarchies, and more. Different from ``roam_vibe_check`` (AI-rot pattern regex) and ``roam_patterns`` (positive design patterns) -- this surfaces negative structural anti-patterns from DB queries. |
792
+ | `roam_spectral` | Spectral bisection: Fiedler vector partition tree and modularity gap. |
793
+ | `roam_split` | Analyse a file's internal call / reference graph and propose natural decomposition groups via Louvain community detection. Reports per-group isolation %, internal vs cross-group edges, and ranked extraction candidates (groups with >=3 symbols and >=50% isolation). Different from ``roam_clusters`` (repo-wide module partitioning) -- this analyses ONE file's internal seams. |
794
+ | `roam_stale_refs` | Find dangling file references — markdown links / HTML href-src / backtick paths whose target is missing. v12.48 adds anchor validation, confidence-tagged hints, --diff branch filter, --fix preview/apply, and --sort-by ranking. Set enrich_with_llm=True for LLM-sampled hints on findings the deterministic providers couldn't resolve. |
795
+ | `roam_stats` | Aggregate high-level statistics: language / role / kind counts plus a recent-commit activity counter over a configurable window. Different from ``roam_metrics`` (per-symbol static-metric report) and ``roam_graph_stats`` (graph-wide topology stats) -- this is the language-and-role inventory snapshot. |
796
+ | `roam_suggest_refactoring` | Rank proactive refactoring candidates using complexity/coupling/churn/smells. |
797
+ | `roam_suggest_reviewers` | Suggest optimal code reviewers for changed files. |
798
+ | `roam_supply_chain` | Dependency risk dashboard: pin coverage, risk scoring, supply-chain health. |
799
+ | `roam_symbol` | Symbol definition, callers, callees, PageRank, fan-in/out metrics. |
800
+ | `roam_syntax_check` | Tree-sitter syntax validation. Finds ERROR/MISSING AST nodes. No index needed. |
801
+ | `roam_taint` | Graph-reach taint analysis. Returns OpenVEX-shaped findings (spec-legal status + justification — never `code_not_reachable`). 10 starter rule packs: sqli, xss, ssrf, path-traversal, command-injection, deserialization, open-redirect, urllib, socketio, fileupload. Pair with --ci to gate on findings (exit 5). |
802
+ | `roam_taint_classify` | Run `roam taint` then ask the agent's own LLM (via MCP sampling) to classify each reachable finding as IDOR/AUTHZ/SQLI/XSS/CMD_INJECTION/etc. with confidence + reasoning. Counter to Semgrep Multimodal — same LLM-reasoning narrative without a hosted API key. |
803
+ | `roam_test_gaps` | Find changed symbols missing test coverage, ranked by severity. |
804
+ | `roam_test_hermeticity` | Detect non-hermetic test patterns that cause CI flakiness. Six closed-enum kinds: network, time, random, filesystem, env, subprocess. AST-driven (not regex) with module-level suppression for monkeypatch / freezegun / responses / random.seed. |
805
+ | `roam_test_impact` | Tests transitively reachable from changed symbols — sharper scope than affected_tests. |
806
+ | `roam_test_map` | Map a symbol or file to its current test coverage: direct test edges (test file calls the symbol), file-level importers (test file imports the symbol's module), and convention-based matches (Salesforce ``<Name>Test`` / ``<Name>_Test`` classes). Different from ``roam_test_gaps`` (untested symbols in changed files) and ``roam_affected_tests`` (forward trace from changes to affected tests) -- this is the lookup for what currently exercises a given symbol. |
807
+ | `roam_test_pyramid` | Count indexed test files by kind (unit / integration / e2e / smoke / unknown) using path and name conventions, and flag inverted pyramids (when ``e2e + integration > unit``). Different from ``roam_test_gaps`` (missing coverage) -- this measures the shape of the existing test suite for slow-CI risk. |
808
+ | `roam_test_scaffold` | Generate a test-file skeleton for a source file or symbol (functions, classes, methods) with the right imports and per-symbol stub blocks. Supports pytest / unittest (Python), jest / mocha / vitest (JS/TS), Go testing, JUnit4 / JUnit5 (Java), and RSpec / Minitest (Ruby). Dry-run by default; pair with ``roam_test_map`` first to confirm no existing coverage. Skips symbols that already have tests in the target file. |
809
+ | `roam_timeline` | Chronological commits that touched the file owning a symbol — author, date, lines added/removed. |
810
+ | `roam_tour` | Codebase onboarding guide: reading order, entry points, architecture roles. |
811
+ | `roam_trace` | Shortest dependency path between two symbols with hop details. |
812
+ | `roam_trends` | Historical metric tracking: record and query health metric trends over time. |
813
+ | `roam_tx_boundaries` | Classify functions by transactional safety: ``transactional`` (begin matched by commit/rollback, all mutations inside scope), ``partial_transactional`` (mutations both inside AND outside scope), ``unsafe_mutation`` (mutations OUTSIDE any transaction wrapper -- latent bug), ``unmatched_begin`` (begin without commit/rollback -- leak), ``unmatched_commit``, ``non_transactional``, or ``unknown``. Composes on top of ``roam_side_effects``. Different from ``roam_idempotency`` (retry safety) -- this gates transaction correctness. |
814
+ | `roam_understand` | Codebase briefing in one call. Returns stack + architecture layers + entry points + hotspots + conventions in ~2-4K tokens. Triggers: 'what is this repo?', 'where do I start?', 'give me the lay of the land'. Run this FIRST in an unfamiliar repo — Glob/Grep around comes later. |
815
+ | `roam_uses` | Use for: 'who calls X?' / 'where is Y referenced?' / 'what breaks if I rename Z?'. Pick over multi-pattern grep — graph-resolved callers, importers, and subclasses grouped by edge type, zero comment/string-literal false positives. For 3+ symbols use roam_batch_get; for counts only, roam_impact. |
816
+ | `roam_validate_plan` | Pre-apply validator for a multi-step change plan. Returns blockers, warnings, advice per operation. |
817
+ | `roam_verdict` | Compute a closed-enum verdict (pass / pass_with_warnings / needs_review / blocked) from the active pr-bundle. Pure judgment layer — no rendering, no log, no GH POST. |
818
+ | `roam_verification_contract` | Compute the minimal `{required, skipped}` verification set for the current changed_files × risk × mode × policy. Surfaces what an agent MUST run before its PR can pass. |
819
+ | `roam_verify` | Check changed files for naming, import, error-handling, and duplicate issues. |
820
+ | `roam_verify_imports` | Hallucination firewall: validate import statements resolve to indexed symbols. |
821
+ | `roam_vibe_check` | AI rot score (0-100): 8-pattern taxonomy of AI code anti-patterns. |
822
+ | `roam_visualize` | Generate Mermaid/DOT architecture diagram with smart filtering. |
823
+ | `roam_vuln_map` | Ingest vulnerability scanner reports (npm/pip/trivy/osv), match to symbols. |
824
+ | `roam_vuln_reach` | Vulnerability reachability through call graph: paths, hops, blast radius. |
825
+ | `roam_weather` | Churn x complexity hotspot ranking: highest-leverage refactoring targets. |
826
+ | `roam_why` | Explain why a symbol matters: role classification (Hub/Bridge/Leaf), transitive reach, critical-path membership, cluster cohesion, and a one-line verdict. Accepts multiple symbol names for batch triage. Different from ``roam_fan`` (raw connectivity ranking) and ``roam_preflight`` (blast-radius gate before edit) -- this is the per-symbol role explainer for triage and onboarding. |
827
+ | `roam_why_fail` | Triage a failing test/symbol: recently-changed symbols transitively reachable from it. |
828
+ | `roam_why_slow` | Rank runtime hotspots by cost = log10(call_count + 1) * p99_latency_ms. Reads ``runtime_stats`` populated by ``roam ingest-trace``. Optionally restricts to symbols in changed files vs a base ref. Different from ``roam_hotspots`` (static-vs-runtime classification) -- this is the pure latency-weighted ranking. |
829
+ | `roam_workflow` | Inspect a workflow recipe DAG, list available recipes, or suggest what to run next given a prior command. Useful as an agent navigation aid: 'I just ran roam impact -- what should I run next?' Different from the heavyweight analytical recipes -- this is the metadata-only recipe browser. |
830
+ | `roam_ws_context` | Cross-repo augmented context for a symbol spanning multiple repos. |
831
+ | `roam_ws_understand` | Multi-repo workspace overview: per-repo stats, cross-repo connections. |
832
+ | `roam_x_lang` | Show cross-language symbol bridges: Protobuf .proto -> generated Go/Java/Python stubs, Salesforce Apex -> Aura/LWC/Visualforce, REST API frontend -> backend route, template variable -> source, and env-var read -> .env definition. Call this tool to list every registered bridge type. |
833
+ <!-- END auto-count:readme-mcp-tool-list-table -->
834
+
835
+ </details>
836
+
837
+ <!-- BEGIN auto-count:readme-mcp-core-preset-tools -->
838
+ Core preset tools: `roam_alerts`, `roam_ask`, `roam_batch_search`, `roam_coupling`, `roam_dead_code`, `roam_deps`, `roam_diagnose_issue`, `roam_fetch_handle`, `roam_file_info`, `roam_grep`, `roam_metrics`, `roam_prepare_change`, `roam_search_symbol`, `roam_taint`, `roam_understand`, `roam_uses`.
839
+ <!-- END auto-count:readme-mcp-core-preset-tools -->
840
+
841
+ <details>
842
+ <summary><strong>MCP client setup (Claude Code / Claude Desktop / Cursor / VS Code)</strong></summary>
843
+
844
+ **Claude Code:** `claude mcp add roam-code -- roam mcp`, or add to `.mcp.json`:
845
+
846
+ ```json
847
+ { "mcpServers": { "roam-code": { "command": "roam", "args": ["mcp"] } } }
848
+ ```
849
+
850
+ **Claude Desktop** — add to `claude_desktop_config.json` (include `"cwd": "/path/to/your/project"`).
851
+
852
+ **Cursor** — add the same `mcpServers` block to `.cursor/mcp.json`.
853
+
854
+ **VS Code + Copilot** — add to `.vscode/mcp.json` under a `servers` key with `"type": "stdio"`.
855
+
856
+ </details>
857
+
858
+ ## Go deeper
859
+
860
+ Pick the path that matches your role:
861
+
862
+ - **5-min demo (CTO/CISO/dev-tools-lead):** [The Canonical Demo](https://roam-code.com/docs/canonical-demo) — install → health → preflight → critique → signed `ChangeEvidence` packet, five commands, no laptop egress.
863
+ - **Developer tutorial (15 min):** [Getting Started](https://roam-code.com/docs/getting-started) — install, index, query, ship.
864
+ - **Agent integration:** `roam mcp-setup claude-code` (or `cursor`, `continue`) — then [Using Roam via MCP](https://roam-code.com/docs/mcp-usage) for the cold-start envelope and canonical agent loop.
865
+ - **Full surface:** [Command Reference](https://roam-code.com/docs/command-reference) — every command, flag, and JSON envelope.
866
+ - **Architecture:** [How it fits together](https://roam-code.com/docs/architecture) — graph, findings registry, run ledger, evidence compiler.
867
+
868
+ ## CI/CD integration
869
+
870
+ All you need is Python 3.10+ and `pip install roam-code`.
871
+
872
+ ```yaml
873
+ # .github/workflows/roam.yml
874
+ name: Roam Analysis
875
+ on: [pull_request]
876
+
877
+ jobs:
878
+ roam:
879
+ runs-on: ubuntu-latest
880
+ steps:
881
+ - uses: actions/checkout@v4
882
+ with:
883
+ fetch-depth: 0
884
+ - uses: Cranot/roam-code@main
885
+ with:
886
+ commands: health
887
+ gate: "score>=70"
888
+ sarif: true
889
+ comment: true
890
+ ```
891
+
892
+ `roam init` auto-generates this workflow. The Action accepts `commands`, `gate` (quality-gate expression, exit 5 on failure), `sarif` (upload to GitHub Code Scanning), `comment` (sticky PR comment), `cache`, and `changed-only` (incremental mode).
893
+
894
+ **SARIF output.** 36 commands honour the global `--sarif` flag (health, complexity, dead, smells, clones, vulns, taint, secrets, n1, …). Minimal upload:
895
+
896
+ ```yaml
897
+ - run: roam --sarif health > roam-health.sarif
898
+ - uses: github/codeql-action/upload-sarif@v3
899
+ with:
900
+ sarif_file: roam-health.sarif
901
+ ```
902
+
903
+ For GitLab / Jenkins / Azure / Bitbucket templates, severity gates, and upload guardrails, see [docs/ci-integration.md](docs/ci-integration.md).
904
+
905
+ ## Roam Guard for PRs
906
+
907
+ `roam guard-pr` is the one-call CI gate that emits an **Agent Change Proof Bundle v1** + closed-enum verdict (`pass` / `pass_with_warnings` / `needs_review` / `blocked`) for the current PR. Every fact carries evidence — what changed, which checks were required, which ran, why the verdict landed where it did.
908
+
909
+ ```bash
910
+ # Local — show the markdown verdict for your current branch's pr-bundle.
911
+ roam guard-pr --format markdown
912
+
913
+ # CI — one line; --ci is shorthand for --strict + --init-if-missing + markdown.
914
+ roam guard-pr --ci --output guard.md
915
+
916
+ # CI — post to GitHub Check Runs (works with the default GITHUB_TOKEN).
917
+ roam guard-pr --post-check --gh-repo $REPO --gh-sha $SHA
918
+ ```
919
+
920
+ **Example reviewer markdown:**
921
+
922
+ ```markdown
923
+ ## 🛑 Roam Guard verdict: `blocked`
924
+
925
+ > **0** of **4** required checks ran. **4** missing. Risk: `low`.
926
+
927
+ ### Verdict reasons
928
+ - `required_checks_not_run` (×4) — `because=config_file_changed`
929
+ - `lint.make.lint` (detail=['.mcp.json'])
930
+ - `test.make.test` (detail=['.mcp.json'])
931
+
932
+ ### Verification checks
933
+ | Status | Command | Why |
934
+ |---|---|---|
935
+ | 🛑 missing | `lint.make.lint` | config_file_changed |
936
+ | 🛑 missing | `test.make.test` | config_file_changed |
937
+ ```
938
+
939
+ **Verdict → CI exit + GitHub conclusion map:**
940
+
941
+ | Roam verdict | Exit code | GitHub conclusion | Build status |
942
+ |---|---|---|---|
943
+ | `pass` | 0 | `success` | ✅ green |
944
+ | `pass_with_warnings` | 0 (4 with `--strict`) | `neutral` | 🟡 yellow |
945
+ | `needs_review` | 4 | `action_required` | 🟠 attention |
946
+ | `blocked` | 5 | `failure` | 🛑 red |
947
+
948
+ **Output formats:** `text` (default), `markdown` (PR comment / GH Check), `json` (the full AgentChangeProofBundle v1), `sarif` (GitHub Code Scanning / GitLab SAST / Defender).
949
+
950
+ **Pluggable rule packs.** The verification contract (what counts as a required check for a given change) lives in YAML, not code. Default pack ships with the binary; override with `roam guard-pr --rules templates/examples/roam-guard-rules.default.yml`:
951
+
952
+ ```yaml
953
+ name: my-repo
954
+ extends: default
955
+ file_patterns:
956
+ - id: api_schema_changed
957
+ regex: '^src/api/.*\.proto$'
958
+ applies_to_kinds: [test, build]
959
+ ```
960
+
961
+ **JSON Schema** for the v1 bundle ships at `src/roam/schemas/agent_change_proof_bundle.v1.json`. Validate any bundle with `roam proof-bundle --validate`.
962
+
963
+ **See also:**
964
+ - [templates/examples/roam-guard-pr.github-actions.yml](templates/examples/roam-guard-pr.github-actions.yml) — drop-in GHA workflow
965
+ - [templates/examples/roam-guard-pr.README.md](templates/examples/roam-guard-pr.README.md) — full adoption guide
966
+ - [templates/examples/roam-guard-rules.default.yml](templates/examples/roam-guard-rules.default.yml) — default rule pack
967
+
968
+ ## Paid layers (free CLI stays Apache 2.0)
969
+
970
+ The CLI is Apache 2.0, fully local, zero-API-key, and never expires. Three optional paid layers build on the same engine:
971
+
972
+ - **Roam Review** — hosted PR bot for AI-generated changes, built on `roam pr-analyze`. CodeRabbit/Greptile review PR *semantics*; Roam Review reads the *graph* (who calls the changed symbol, which layer it sits in) and emits a portable `ChangeEvidence` packet. The CLI engine is a working CI gate today: `git diff main..HEAD | roam pr-analyze --gate` (exit 5 on `BLOCK`).
973
+ - **Roam Cloud** — opt-in metrics history with no source upload. `roam metrics-push` sends a summary-only payload (numerical metrics, paths or SHA-256 hashes, identifier names) — never source-code bodies. Inspect the exact payload with `--dry-run`.
974
+ - **PR Replay** — one-shot paid audit of your last 30/90 merged PRs: a written structural-review report plus a founder walk-through. Free DIY sample via `roam pr-replay --tier sample`.
975
+
976
+ Early access — email [hello@roam-code.com](mailto:hello@roam-code.com). Full pricing at <https://roam-code.com/pricing>.
977
+
978
+ ## Language Support
979
+
980
+ ### Tier 1 — Full extraction (dedicated parsers)
981
+
982
+ | Language | Extensions | Symbols | References | Inheritance |
983
+ |----------|-----------|---------|------------|-------------|
984
+ | Python | `.py` `.pyi` | classes, functions, methods, decorators, variables | imports, calls, inheritance | extends, `__all__` exports |
985
+ | JavaScript | `.js` `.jsx` `.mjs` `.cjs` | classes, functions, arrow functions, CJS exports | imports, require(), calls | extends |
986
+ | TypeScript | `.ts` `.tsx` `.mts` `.cts` | interfaces, type aliases, enums + all JS | imports, calls, type refs | extends, implements |
987
+ | Java | `.java` | classes, interfaces, enums, constructors, fields | imports, calls | extends, implements |
988
+ | Go | `.go` | structs, interfaces, functions, methods, fields | imports, calls | embedded structs |
989
+ | Rust | `.rs` | structs, traits, impls, enums, functions | use, calls | impl Trait for Struct |
990
+ | C / C++ | `.c` `.h` `.cpp` `.hpp` `.cc` | structs, classes, functions, namespaces, templates | includes, calls | extends |
991
+ | C# | `.cs` | classes, interfaces, structs, enums, records, methods, properties, delegates, events | using directives, calls, `new`, attributes | extends, implements |
992
+ | PHP | `.php` | classes, interfaces, traits, enums, methods, properties | namespace use, calls, static calls, `new` | extends, implements, use (traits) |
993
+ | Ruby | `.rb` | classes, modules, methods, singleton methods, constants | require, require_relative, include/extend, calls | class inheritance |
994
+ | Kotlin | `.kt` `.kts` | classes, interfaces, enums, objects, functions, methods, properties | imports, calls, type refs | extends, implements |
995
+ | Scala | `.scala` `.sc` | classes, traits, objects, case classes, functions, val/var, type aliases | imports, calls, `new` | extends, with (trait mixins) |
996
+ | Swift | `.swift` | classes, structs, enums, protocols, functions, methods, properties | imports, calls, type refs | extends, conforms |
997
+ | Dart | `.dart` | classes, mixins, extensions, enums, type aliases, functions, methods, constructors | imports, calls, type refs | extends, implements, with |
998
+ | Visual FoxPro | `.prg` | functions, procedures, classes, methods, properties, constants | DO, SET PROCEDURE/CLASSLIB, CREATEOBJECT, `obj.method()` | DEFINE CLASS ... AS |
999
+ | SQL (DDL) | `.sql` | tables, columns, views, functions, triggers, schemas, types, sequences | foreign keys, view table deps, trigger refs | — |
1000
+ | YAML (CI/CD) | `.yml` `.yaml` | GitLab CI jobs/anchors, GitHub Actions workflows/jobs, generic top-level keys | `extends:`, `needs:`, `!reference`, `uses:` | — |
1001
+ | HCL / Terraform | `.tf` `.tfvars` `.hcl` | `resource`, `data`, `variable`, `output`, `module`, `provider`, `locals` | `var.*`, `module.*`, `data.*`, `local.*` | — |
1002
+ | Vue / Svelte | `.vue` `.svelte` | via `<script>` block extraction (TS/JS) | imports, calls, type refs | extends, implements |
1003
+
1004
+ <details>
1005
+ <summary><strong>Salesforce ecosystem (Tier 1)</strong></summary>
1006
+
1007
+ | Language | Extensions | Symbols | References |
1008
+ |----------|-----------|---------|------------|
1009
+ | Apex | `.cls` `.trigger` | classes, triggers, SOQL, annotations | imports, calls, System.Label, generic type refs |
1010
+ | Aura | `.cmp` `.app` `.evt` `.intf` `.design` | components, attributes, methods, events | controller refs, component refs |
1011
+ | LWC (JavaScript) | `.js` (in LWC dirs) | anonymous class from filename | `@salesforce/apex/`, `@salesforce/schema/`, `@salesforce/label/` |
1012
+ | Visualforce | `.page` `.component` | pages, components | controller/extensions, merge fields, includes |
1013
+ | SF Metadata XML | `*-meta.xml` | objects, fields, rules, layouts | Apex class refs, formula field refs, Flow actionCalls |
1014
+
1015
+ Cross-language edges mean `roam impact AccountService` shows blast radius across Apex, LWC, Aura, Visualforce, and Flows.
1016
+
1017
+ </details>
1018
+
1019
+ Tier 2 languages (and `.jsonc` / `.mdx`) get basic symbol extraction via a generic tree-sitter walker.
1020
+
1021
+ ## Performance
1022
+
1023
+ | Metric | Value |
1024
+ |--------|-------|
1025
+ | Index 200 files | ~3-5s |
1026
+ | Index 3,000 files | ~2 min |
1027
+ | Incremental (no changes) | <1s |
1028
+ | Any query command | <0.5s |
1029
+
1030
+ After the first full index, `roam index` only re-processes changed files (mtime + SHA-256 hash). Detailed indexing benchmarks across Express / Axios / Vue / Laravel / Svelte live in [`benchmarks/`](benchmarks/).
1031
+
1032
+ Compiler A/B results, the per-task gallery, routing stats, and the
1033
+ version-keyed eval history live in [The Compiler](#the-compiler--your-agents-first-token-already-knows-the-answer)
1034
+ section — one home, no duplicate numbers.
1035
+
1036
+ ## How It Works
1037
+
1038
+ ```
1039
+ Codebase
1040
+ |
1041
+ [1] Discovery ──── git ls-files (respects .gitignore + .roamignore)
1042
+ [2] Parse ──────── tree-sitter AST per file (28 languages)
1043
+ [3] Extract ────── symbols + references (calls, imports, inheritance)
1044
+ [4] Resolve ────── match references to definitions → edges
1045
+ [5] Metrics ────── adaptive PageRank, betweenness, cognitive complexity, Halstead
1046
+ [6] Algorithms ── 34-task anti-pattern catalog (O(n^2) loops, N+1, recursion, async)
1047
+ [7] Git ────────── churn, co-change matrix, authorship, Renyi entropy
1048
+ [8] Clusters ───── Louvain community detection
1049
+ [9] Health ─────── per-file scores (7-factor) + composite score (0-100)
1050
+ [10] Store ─────── .roam/index.db (SQLite, WAL mode)
1051
+ ```
1052
+
1053
+ Exclude paths with a `.roamignore` file (full gitignore syntax) or `roam config --exclude "*.proto"`. For the graph algorithms (Personalized PageRank for blast radius, Tarjan SCC, Louvain, Fiedler bisection, Mann-Kendall trend detection, …) and the weighted-geometric-mean health score, see the [Architecture guide](https://roam-code.com/docs/architecture).
1054
+
1055
+ ## How Roam Compares
1056
+
1057
+ roam-code is the only tool that combines graph algorithms (PageRank, Tarjan SCC, Louvain clustering), git archaeology, architecture simulation, and multi-agent partitioning in a single local CLI with zero API keys.
1058
+
1059
+ | Capability | roam-code | AI IDEs (Cursor, Windsurf) | AI Agents (Claude Code, Codex) | SAST (SonarQube, CodeQL) |
1060
+ |---|---|---|---|---|
1061
+ | Persistent local index | SQLite | Cloud embeddings | None | Per-scan |
1062
+ | Call graph analysis | Yes | No | No | Yes (CodeQL) |
1063
+ | PageRank / centrality | Yes | No | No | No |
1064
+ | Cycle detection (Tarjan) | Yes | No | No | Deprecated (SonarQube) |
1065
+ | Community detection (Louvain) | Yes | No | No | No |
1066
+ | Git churn / co-change | Yes | No | No | No |
1067
+ | Architecture simulation | Yes | No | No | No |
1068
+ | Multi-agent partitioning | Yes | No | No | No |
1069
+ | MCP tools for agents | 243 (16 in default core preset) | Client only | Client only | 34 (SonarQube) |
1070
+ | Languages | 28 | 70+ | 50+ | 12-42 |
1071
+ | 100% local, zero API keys | Yes | No | No | Partial |
1072
+ | Open source | Apache 2.0 | No | Partial | Partial |
1073
+ | Interprocedural taint depth | shallow (OpenVEX-shaped) | n/a | n/a | **deep (CodeQL)** |
1074
+ | Built-in rule packs | 10 taint packs, 10 governance rules | n/a | n/a | **2,000+ (Semgrep community)** |
1075
+ | Cross-repo at GitHub scale | workspace overlay (sibling repos) | n/a | n/a | **native (Sourcegraph)** |
1076
+
1077
+ ### Key Differentiators
1078
+
1079
+ - **vs AI IDEs** (Cursor, Windsurf, Augment): roam-code provides deterministic structural analysis. AI IDEs use probabilistic embeddings that can't guarantee reproducible results.
1080
+ - **vs AI Agents** (Claude Code, Codex CLI, Gemini CLI): these agents read files one at a time. roam-code pre-computes relationships so agents get instant answers about architecture, blast radius, and dependencies.
1081
+ - **vs SAST Tools** (SonarQube, CodeQL, Semgrep): SAST tools find bugs and vulnerabilities. roam-code understands architecture — how code is structured, where it's coupled, and what breaks when you change it. Complementary, not competitive.
1082
+ - **vs Code Search** (Sourcegraph/Amp, Greptile): text search finds where code is. roam-code understands why code matters — which functions are central, which modules are tangled, which files are high-risk.
1083
+
1084
+ <details>
1085
+ <summary><strong>For teams — cost comparison</strong></summary>
1086
+
1087
+ | Tool | Annual cost (20-dev team) | Infrastructure | Setup time |
1088
+ |------|--------------------------|----------------|------------|
1089
+ | SonarQube Server (paid tier) | $15,000-$45,000 | Self-hosted server | Days |
1090
+ | CodeScene | $20,000-$60,000 | SaaS or on-prem | Hours |
1091
+ | Code Climate | $12,000-$36,000 | SaaS | Hours |
1092
+ | **Roam (free CLI)** | **$0 (Apache 2.0)** | **None (local)** | **5 minutes** |
1093
+
1094
+ The comparison is against the paid tiers a 20-dev team usually buys, not free Community editions. Roam complements either tier — pipe its SARIF output into the same Code Scanning surface. Rollout: pilot on one repo, add `roam health --gate` to CI as non-blocking, then tighten thresholds and track trajectory with `roam trends`.
1095
+
1096
+ </details>
1097
+
1098
+ ## FAQ
1099
+
1100
+ **Does Roam send any data externally?**
1101
+ No by default — zero telemetry, zero analytics, zero update checks. The single outbound surface is `roam metrics-push`: opt-in, summary metrics only, prints its exact payload locally under `--dry-run`. Source-code bodies never leave the machine.
1102
+
1103
+ **Can Roam run in air-gapped environments?**
1104
+ Yes. Once installed, no internet access is required.
1105
+
1106
+ **Does Roam modify my source code?**
1107
+ Read-only by default. Creates `.roam/` with an index database. `roam mutate` (move/rename/extract) defaults to `--dry-run`; pass `--apply` explicitly to write changes.
1108
+
1109
+ **How does Roam handle monorepos and multi-repo projects?**
1110
+ Monorepos: indexes from the root; batched SQL handles 100k+ symbols. Multi-repo: `roam ws init <repo1> <repo2>` builds a workspace overlay DB for cross-repo API edges, then `roam ws resolve` / `ws context` / `ws trace` work across repos.
1111
+
1112
+ **Is Roam compatible with SonarQube / CodeScene?**
1113
+ Yes — they coexist in the same CI pipeline. SARIF output uploads to GitHub Code Scanning.
1114
+
1115
+ **Does Roam satisfy SOC 2 / ISO 42001 / EU AI Act on its own?**
1116
+ No. Roam **maps to** controls and produces supporting evidence — the signed `ChangeEvidence` packet, HMAC-chained run ledger, and audit-trail records answer the eight evidence questions a reviewer asks after an AI-assisted change. Roam does not certify; your auditor still owns that step.
1117
+
1118
+ **What's the difference between the free CLI and Roam Review / Cloud / PR Replay?**
1119
+ The CLI is Apache 2.0, fully local, and never expires. Roam Review is a hosted PR bot, Roam Cloud is opt-in metrics history with no source upload, PR Replay is a one-shot paid audit. All three are layers on top of the same engine.
1120
+
1121
+ ## Limitations
1122
+
1123
+ - **Static analysis primarily** — can't trace dynamic dispatch, reflection, or eval'd code. Runtime trace ingestion (`roam ingest-trace`) adds production data but requires external trace export.
1124
+ - **Import resolution is heuristic** — complex re-exports or conditional imports may not resolve.
1125
+ - **Limited cross-language edges** — Salesforce, Protobuf, REST API, and multi-repo edges are supported, but not arbitrary FFI.
1126
+ - **Tier 2 languages** get basic symbol extraction only via the generic tree-sitter walker.
1127
+ - **Large monorepos** (100k+ files) may have slow initial indexing.
1128
+
1129
+ ## Troubleshooting
1130
+
1131
+ | Problem | Solution |
1132
+ |---------|----------|
1133
+ | `roam: command not found` | Ensure install location is on PATH. For `uv`: `uv tool update-shell` |
1134
+ | `Another indexing process is running` | Delete `.roam/index.lock` and retry |
1135
+ | `database is locked` | `roam index --force` to rebuild |
1136
+ | Unicode errors on Windows | `chcp 65001` for UTF-8 |
1137
+ | Symbol resolves to wrong file | Use `file:symbol` syntax: `roam symbol myfile:MyFunction` |
1138
+ | Health score seems wrong | `roam --json health` for factor breakdown |
1139
+ | Index stale after `git pull` | `roam index` (incremental). After major refactors: `roam index --force` |
1140
+
1141
+ ## Update / Uninstall
1142
+
1143
+ ```bash
1144
+ # Update
1145
+ pipx upgrade roam-code # or: uv tool upgrade roam-code / pip install --upgrade roam-code
1146
+
1147
+ # Uninstall
1148
+ pipx uninstall roam-code # or: uv tool uninstall roam-code / pip uninstall roam-code
1149
+ ```
1150
+
1151
+ Delete `.roam/` from your project root to clean up local data.
1152
+
1153
+ ## Contributing
1154
+
1155
+ ```bash
1156
+ git clone https://github.com/Cranot/roam-code.git
1157
+ cd roam-code
1158
+ pip install -e ".[dev]" # includes pytest, ruff
1159
+ pytest tests/ # all test cases must pass
1160
+ ```
1161
+
1162
+ Good first contributions: add a [Tier 1 language](src/roam/languages/) (see `go_lang.py` or `php_lang.py` as templates), improve reference resolution, add benchmark repos, extend SARIF converters, add MCP tools. Please open an issue first to discuss larger changes.
1163
+
1164
+ ## License
1165
+
1166
+ [Apache 2.0](LICENSE)