roam-code 13.9.0__tar.gz → 14.0.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 (2546) hide show
  1. roam_code-14.0.0/PKG-INFO +1006 -0
  2. roam_code-14.0.0/README.md +934 -0
  3. roam_code-14.0.0/pyproject.toml +278 -0
  4. roam_code-14.0.0/src/roam/__init__.py +28 -0
  5. roam_code-14.0.0/src/roam/_glob_match.py +196 -0
  6. roam_code-14.0.0/src/roam/agent_opt.py +1272 -0
  7. roam_code-14.0.0/src/roam/analysis/effects.py +793 -0
  8. roam_code-14.0.0/src/roam/atomic_io.py +1401 -0
  9. roam_code-14.0.0/src/roam/attest/cga.py +1157 -0
  10. roam_code-14.0.0/src/roam/attest/vsa.py +527 -0
  11. roam_code-14.0.0/src/roam/capability.py +289 -0
  12. roam_code-14.0.0/src/roam/catalog/clones_rename_invariant.py +514 -0
  13. roam_code-14.0.0/src/roam/catalog/detectors.py +5384 -0
  14. roam_code-14.0.0/src/roam/catalog/smells.py +3756 -0
  15. roam_code-14.0.0/src/roam/cli.py +2319 -0
  16. roam_code-14.0.0/src/roam/command_advice.py +632 -0
  17. roam_code-14.0.0/src/roam/commands/audit_trail_helpers.py +144 -0
  18. roam_code-14.0.0/src/roam/commands/changed_files.py +597 -0
  19. roam_code-14.0.0/src/roam/commands/cmd_adversarial.py +1294 -0
  20. roam_code-14.0.0/src/roam/commands/cmd_agent_opt.py +312 -0
  21. roam_code-14.0.0/src/roam/commands/cmd_agent_plan.py +634 -0
  22. roam_code-14.0.0/src/roam/commands/cmd_agent_score.py +460 -0
  23. roam_code-14.0.0/src/roam/commands/cmd_agents_md.py +247 -0
  24. roam_code-14.0.0/src/roam/commands/cmd_alerts.py +1634 -0
  25. roam_code-14.0.0/src/roam/commands/cmd_api_changes.py +896 -0
  26. roam_code-14.0.0/src/roam/commands/cmd_article_12_check.py +619 -0
  27. roam_code-14.0.0/src/roam/commands/cmd_at.py +302 -0
  28. roam_code-14.0.0/src/roam/commands/cmd_attest.py +1756 -0
  29. roam_code-14.0.0/src/roam/commands/cmd_audit.py +402 -0
  30. roam_code-14.0.0/src/roam/commands/cmd_audit_trail_conformance.py +980 -0
  31. roam_code-14.0.0/src/roam/commands/cmd_audit_trail_export.py +865 -0
  32. roam_code-14.0.0/src/roam/commands/cmd_audit_trail_verify.py +1125 -0
  33. roam_code-14.0.0/src/roam/commands/cmd_auth_gaps.py +2162 -0
  34. roam_code-14.0.0/src/roam/commands/cmd_bench.py +785 -0
  35. roam_code-14.0.0/src/roam/commands/cmd_bisect.py +287 -0
  36. roam_code-14.0.0/src/roam/commands/cmd_boundary.py +704 -0
  37. roam_code-14.0.0/src/roam/commands/cmd_brief.py +862 -0
  38. roam_code-14.0.0/src/roam/commands/cmd_budget.py +654 -0
  39. roam_code-14.0.0/src/roam/commands/cmd_bus_factor.py +1477 -0
  40. roam_code-14.0.0/src/roam/commands/cmd_calc_golden.py +387 -0
  41. roam_code-14.0.0/src/roam/commands/cmd_calc_inventory.py +317 -0
  42. roam_code-14.0.0/src/roam/commands/cmd_calc_probe.py +357 -0
  43. roam_code-14.0.0/src/roam/commands/cmd_capabilities.py +204 -0
  44. roam_code-14.0.0/src/roam/commands/cmd_capsule.py +760 -0
  45. roam_code-14.0.0/src/roam/commands/cmd_cga.py +1039 -0
  46. roam_code-14.0.0/src/roam/commands/cmd_check_rules.py +1093 -0
  47. roam_code-14.0.0/src/roam/commands/cmd_ci_setup.py +904 -0
  48. roam_code-14.0.0/src/roam/commands/cmd_clones.py +978 -0
  49. roam_code-14.0.0/src/roam/commands/cmd_closure.py +601 -0
  50. roam_code-14.0.0/src/roam/commands/cmd_clusters.py +610 -0
  51. roam_code-14.0.0/src/roam/commands/cmd_compatibility.py +1256 -0
  52. roam_code-14.0.0/src/roam/commands/cmd_compile.py +801 -0
  53. roam_code-14.0.0/src/roam/commands/cmd_compile_cache.py +1096 -0
  54. roam_code-14.0.0/src/roam/commands/cmd_compile_daemon.py +323 -0
  55. roam_code-14.0.0/src/roam/commands/cmd_compile_stats.py +951 -0
  56. roam_code-14.0.0/src/roam/commands/cmd_compiler_corpus.py +425 -0
  57. roam_code-14.0.0/src/roam/commands/cmd_compiler_health.py +718 -0
  58. roam_code-14.0.0/src/roam/commands/cmd_complete.py +249 -0
  59. roam_code-14.0.0/src/roam/commands/cmd_complexity.py +1166 -0
  60. roam_code-14.0.0/src/roam/commands/cmd_constitution.py +815 -0
  61. roam_code-14.0.0/src/roam/commands/cmd_context.py +1778 -0
  62. roam_code-14.0.0/src/roam/commands/cmd_conventions.py +1317 -0
  63. roam_code-14.0.0/src/roam/commands/cmd_coverage_gaps.py +854 -0
  64. roam_code-14.0.0/src/roam/commands/cmd_critique.py +1352 -0
  65. roam_code-14.0.0/src/roam/commands/cmd_cut.py +562 -0
  66. roam_code-14.0.0/src/roam/commands/cmd_cycle_break.py +284 -0
  67. roam_code-14.0.0/src/roam/commands/cmd_cycles.py +202 -0
  68. roam_code-14.0.0/src/roam/commands/cmd_dark_matter.py +955 -0
  69. roam_code-14.0.0/src/roam/commands/cmd_dashboard.py +815 -0
  70. roam_code-14.0.0/src/roam/commands/cmd_db_check.py +265 -0
  71. roam_code-14.0.0/src/roam/commands/cmd_dead.py +3176 -0
  72. roam_code-14.0.0/src/roam/commands/cmd_debt.py +1002 -0
  73. roam_code-14.0.0/src/roam/commands/cmd_delete_check.py +704 -0
  74. roam_code-14.0.0/src/roam/commands/cmd_deps.py +563 -0
  75. roam_code-14.0.0/src/roam/commands/cmd_describe.py +1470 -0
  76. roam_code-14.0.0/src/roam/commands/cmd_diagnose.py +1212 -0
  77. roam_code-14.0.0/src/roam/commands/cmd_diff.py +1463 -0
  78. roam_code-14.0.0/src/roam/commands/cmd_dispatch_trace.py +540 -0
  79. roam_code-14.0.0/src/roam/commands/cmd_doctor.py +3147 -0
  80. roam_code-14.0.0/src/roam/commands/cmd_dogfood.py +346 -0
  81. roam_code-14.0.0/src/roam/commands/cmd_duplicates.py +1671 -0
  82. roam_code-14.0.0/src/roam/commands/cmd_envelope_diff.py +1022 -0
  83. roam_code-14.0.0/src/roam/commands/cmd_evidence_diff.py +1048 -0
  84. roam_code-14.0.0/src/roam/commands/cmd_evidence_doctor.py +1552 -0
  85. roam_code-14.0.0/src/roam/commands/cmd_evidence_oscal.py +588 -0
  86. roam_code-14.0.0/src/roam/commands/cmd_fan.py +1360 -0
  87. roam_code-14.0.0/src/roam/commands/cmd_file.py +465 -0
  88. roam_code-14.0.0/src/roam/commands/cmd_findings.py +671 -0
  89. roam_code-14.0.0/src/roam/commands/cmd_fingerprint.py +937 -0
  90. roam_code-14.0.0/src/roam/commands/cmd_fitness.py +1465 -0
  91. roam_code-14.0.0/src/roam/commands/cmd_flag_dead.py +691 -0
  92. roam_code-14.0.0/src/roam/commands/cmd_fleet.py +495 -0
  93. roam_code-14.0.0/src/roam/commands/cmd_forecast.py +676 -0
  94. roam_code-14.0.0/src/roam/commands/cmd_graph_diff.py +421 -0
  95. roam_code-14.0.0/src/roam/commands/cmd_graph_export.py +324 -0
  96. roam_code-14.0.0/src/roam/commands/cmd_grep.py +1444 -0
  97. roam_code-14.0.0/src/roam/commands/cmd_guard_init.py +175 -0
  98. roam_code-14.0.0/src/roam/commands/cmd_guard_pr.py +502 -0
  99. roam_code-14.0.0/src/roam/commands/cmd_health.py +2789 -0
  100. roam_code-14.0.0/src/roam/commands/cmd_help_search.py +129 -0
  101. roam_code-14.0.0/src/roam/commands/cmd_history_grep.py +398 -0
  102. roam_code-14.0.0/src/roam/commands/cmd_hooks.py +3415 -0
  103. roam_code-14.0.0/src/roam/commands/cmd_hotspots.py +1460 -0
  104. roam_code-14.0.0/src/roam/commands/cmd_ignore_drift.py +409 -0
  105. roam_code-14.0.0/src/roam/commands/cmd_index.py +263 -0
  106. roam_code-14.0.0/src/roam/commands/cmd_ingest_trace.py +256 -0
  107. roam_code-14.0.0/src/roam/commands/cmd_init.py +511 -0
  108. roam_code-14.0.0/src/roam/commands/cmd_invariants.py +685 -0
  109. roam_code-14.0.0/src/roam/commands/cmd_laws.py +933 -0
  110. roam_code-14.0.0/src/roam/commands/cmd_llm_smells.py +1182 -0
  111. roam_code-14.0.0/src/roam/commands/cmd_magic_numbers.py +748 -0
  112. roam_code-14.0.0/src/roam/commands/cmd_math.py +927 -0
  113. roam_code-14.0.0/src/roam/commands/cmd_mcp.py +171 -0
  114. roam_code-14.0.0/src/roam/commands/cmd_mcp_setup.py +615 -0
  115. roam_code-14.0.0/src/roam/commands/cmd_mcp_status.py +193 -0
  116. roam_code-14.0.0/src/roam/commands/cmd_memory.py +402 -0
  117. roam_code-14.0.0/src/roam/commands/cmd_metrics_push.py +778 -0
  118. roam_code-14.0.0/src/roam/commands/cmd_migration_plan.py +545 -0
  119. roam_code-14.0.0/src/roam/commands/cmd_minimap.py +794 -0
  120. roam_code-14.0.0/src/roam/commands/cmd_missing_index.py +2278 -0
  121. roam_code-14.0.0/src/roam/commands/cmd_mutate.py +554 -0
  122. roam_code-14.0.0/src/roam/commands/cmd_n1.py +2464 -0
  123. roam_code-14.0.0/src/roam/commands/cmd_next.py +742 -0
  124. roam_code-14.0.0/src/roam/commands/cmd_observability_opt.py +333 -0
  125. roam_code-14.0.0/src/roam/commands/cmd_orchestrate.py +443 -0
  126. roam_code-14.0.0/src/roam/commands/cmd_orphan_imports.py +1316 -0
  127. roam_code-14.0.0/src/roam/commands/cmd_orphan_routes.py +933 -0
  128. roam_code-14.0.0/src/roam/commands/cmd_over_fetch.py +1923 -0
  129. roam_code-14.0.0/src/roam/commands/cmd_partition.py +1174 -0
  130. roam_code-14.0.0/src/roam/commands/cmd_permit.py +794 -0
  131. roam_code-14.0.0/src/roam/commands/cmd_postmortem.py +803 -0
  132. roam_code-14.0.0/src/roam/commands/cmd_pr_analyze.py +2783 -0
  133. roam_code-14.0.0/src/roam/commands/cmd_pr_bundle.py +3685 -0
  134. roam_code-14.0.0/src/roam/commands/cmd_pr_comment_render.py +543 -0
  135. roam_code-14.0.0/src/roam/commands/cmd_pr_prep.py +714 -0
  136. roam_code-14.0.0/src/roam/commands/cmd_pr_replay.py +4942 -0
  137. roam_code-14.0.0/src/roam/commands/cmd_pr_risk.py +2120 -0
  138. roam_code-14.0.0/src/roam/commands/cmd_preflight.py +1829 -0
  139. roam_code-14.0.0/src/roam/commands/cmd_proof_bundle.py +263 -0
  140. roam_code-14.0.0/src/roam/commands/cmd_py_types.py +506 -0
  141. roam_code-14.0.0/src/roam/commands/cmd_pytest_fixtures.py +418 -0
  142. roam_code-14.0.0/src/roam/commands/cmd_reachability_triage.py +406 -0
  143. roam_code-14.0.0/src/roam/commands/cmd_recommend.py +251 -0
  144. roam_code-14.0.0/src/roam/commands/cmd_refs_text.py +618 -0
  145. roam_code-14.0.0/src/roam/commands/cmd_relate.py +860 -0
  146. roam_code-14.0.0/src/roam/commands/cmd_review.py +496 -0
  147. roam_code-14.0.0/src/roam/commands/cmd_rules.py +547 -0
  148. roam_code-14.0.0/src/roam/commands/cmd_rules_validate.py +547 -0
  149. roam_code-14.0.0/src/roam/commands/cmd_runs.py +1554 -0
  150. roam_code-14.0.0/src/roam/commands/cmd_savings.py +285 -0
  151. roam_code-14.0.0/src/roam/commands/cmd_savings_backfill.py +194 -0
  152. roam_code-14.0.0/src/roam/commands/cmd_sbom.py +1038 -0
  153. roam_code-14.0.0/src/roam/commands/cmd_search.py +1179 -0
  154. roam_code-14.0.0/src/roam/commands/cmd_secrets.py +1097 -0
  155. roam_code-14.0.0/src/roam/commands/cmd_service_report.py +3211 -0
  156. roam_code-14.0.0/src/roam/commands/cmd_simulate.py +726 -0
  157. roam_code-14.0.0/src/roam/commands/cmd_skill_generate.py +301 -0
  158. roam_code-14.0.0/src/roam/commands/cmd_smells.py +1370 -0
  159. roam_code-14.0.0/src/roam/commands/cmd_stale_refs.py +3820 -0
  160. roam_code-14.0.0/src/roam/commands/cmd_supply_chain.py +1247 -0
  161. roam_code-14.0.0/src/roam/commands/cmd_suppress.py +378 -0
  162. roam_code-14.0.0/src/roam/commands/cmd_surface.py +318 -0
  163. roam_code-14.0.0/src/roam/commands/cmd_syntax_check.py +326 -0
  164. roam_code-14.0.0/src/roam/commands/cmd_taint.py +1391 -0
  165. roam_code-14.0.0/src/roam/commands/cmd_telemetry.py +112 -0
  166. roam_code-14.0.0/src/roam/commands/cmd_test_hermeticity.py +686 -0
  167. roam_code-14.0.0/src/roam/commands/cmd_test_impact.py +239 -0
  168. roam_code-14.0.0/src/roam/commands/cmd_tour.py +653 -0
  169. roam_code-14.0.0/src/roam/commands/cmd_trace.py +876 -0
  170. roam_code-14.0.0/src/roam/commands/cmd_trends.py +1831 -0
  171. roam_code-14.0.0/src/roam/commands/cmd_triage.py +365 -0
  172. roam_code-14.0.0/src/roam/commands/cmd_understand.py +1551 -0
  173. roam_code-14.0.0/src/roam/commands/cmd_uses.py +730 -0
  174. roam_code-14.0.0/src/roam/commands/cmd_verdict.py +168 -0
  175. roam_code-14.0.0/src/roam/commands/cmd_verify.py +7118 -0
  176. roam_code-14.0.0/src/roam/commands/cmd_verify_imports.py +1658 -0
  177. roam_code-14.0.0/src/roam/commands/cmd_version.py +106 -0
  178. roam_code-14.0.0/src/roam/commands/cmd_vibe_check.py +2407 -0
  179. roam_code-14.0.0/src/roam/commands/cmd_vuln_map.py +185 -0
  180. roam_code-14.0.0/src/roam/commands/cmd_vuln_reach.py +895 -0
  181. roam_code-14.0.0/src/roam/commands/cmd_vulns.py +1627 -0
  182. roam_code-14.0.0/src/roam/commands/dead_public_surface.py +381 -0
  183. roam_code-14.0.0/src/roam/commands/metrics_history.py +500 -0
  184. roam_code-14.0.0/src/roam/commands/pr_analyze/audit_trail.py +176 -0
  185. roam_code-14.0.0/src/roam/commands/pr_analyze/cache.py +292 -0
  186. roam_code-14.0.0/src/roam/commands/pr_analyze/rules.py +374 -0
  187. roam_code-14.0.0/src/roam/commands/resolve.py +955 -0
  188. roam_code-14.0.0/src/roam/competitor_site_data.py +2167 -0
  189. roam_code-14.0.0/src/roam/compile_telemetry.py +296 -0
  190. roam_code-14.0.0/src/roam/constitution/__init__.py +60 -0
  191. roam_code-14.0.0/src/roam/constitution/loader.py +1812 -0
  192. roam_code-14.0.0/src/roam/db/connection.py +1121 -0
  193. roam_code-14.0.0/src/roam/db/schema.py +469 -0
  194. roam_code-14.0.0/src/roam/evidence/profiles.py +483 -0
  195. roam_code-14.0.0/src/roam/graph/builder.py +223 -0
  196. roam_code-14.0.0/src/roam/graph/diff.py +488 -0
  197. roam_code-14.0.0/src/roam/graph/pagerank.py +419 -0
  198. roam_code-14.0.0/src/roam/graph/simulate.py +365 -0
  199. roam_code-14.0.0/src/roam/graph/spectral.py +338 -0
  200. roam_code-14.0.0/src/roam/guard_enums.py +180 -0
  201. roam_code-14.0.0/src/roam/guard_log.py +373 -0
  202. roam_code-14.0.0/src/roam/index/calc_extract.py +418 -0
  203. roam_code-14.0.0/src/roam/index/corpus_state.py +481 -0
  204. roam_code-14.0.0/src/roam/index/golden_calc.py +745 -0
  205. roam_code-14.0.0/src/roam/index/indexer.py +3017 -0
  206. roam_code-14.0.0/src/roam/index/parser.py +518 -0
  207. roam_code-14.0.0/src/roam/index/relations.py +1536 -0
  208. roam_code-14.0.0/src/roam/languages/base.py +255 -0
  209. roam_code-14.0.0/src/roam/languages/foxpro_lang.py +1606 -0
  210. roam_code-14.0.0/src/roam/languages/python_lang.py +1048 -0
  211. roam_code-14.0.0/src/roam/languages/query_engine.py +572 -0
  212. roam_code-14.0.0/src/roam/languages/registry.py +446 -0
  213. roam_code-14.0.0/src/roam/laws/checker.py +932 -0
  214. roam_code-14.0.0/src/roam/laws/miner.py +731 -0
  215. roam_code-14.0.0/src/roam/laws/namespace.py +272 -0
  216. roam_code-14.0.0/src/roam/mcp-server-card.json +168 -0
  217. roam_code-14.0.0/src/roam/mcp_extras/__init__.py +25 -0
  218. roam_code-14.0.0/src/roam/mcp_extras/concurrency.py +325 -0
  219. roam_code-14.0.0/src/roam/mcp_extras/sampling.py +218 -0
  220. roam_code-14.0.0/src/roam/mcp_server.py +20341 -0
  221. roam_code-14.0.0/src/roam/modes/policy.py +809 -0
  222. roam_code-14.0.0/src/roam/output/formatter.py +2399 -0
  223. roam_code-14.0.0/src/roam/output/metric_definitions.py +207 -0
  224. roam_code-14.0.0/src/roam/output/projection.py +144 -0
  225. roam_code-14.0.0/src/roam/output/sarif.py +6624 -0
  226. roam_code-14.0.0/src/roam/output/schema_registry.py +77 -0
  227. roam_code-14.0.0/src/roam/output/source_context.py +136 -0
  228. roam_code-14.0.0/src/roam/parser_pack.py +173 -0
  229. roam_code-14.0.0/src/roam/plan/agent_mode.py +115 -0
  230. roam_code-14.0.0/src/roam/plan/compiler.py +14302 -0
  231. roam_code-14.0.0/src/roam/plan/plan_cache.py +334 -0
  232. roam_code-14.0.0/src/roam/procedure_mining.py +1013 -0
  233. roam_code-14.0.0/src/roam/proof_bundle.py +406 -0
  234. roam_code-14.0.0/src/roam/quality/__init__.py +37 -0
  235. roam_code-14.0.0/src/roam/quality/health_score.py +344 -0
  236. roam_code-14.0.0/src/roam/response_store.py +256 -0
  237. roam_code-14.0.0/src/roam/review_receipt.py +397 -0
  238. roam_code-14.0.0/src/roam/rules/ast_match.py +237 -0
  239. roam_code-14.0.0/src/roam/runs/helpers.py +298 -0
  240. roam_code-14.0.0/src/roam/runs/ledger.py +1049 -0
  241. roam_code-14.0.0/src/roam/savings.py +2549 -0
  242. roam_code-14.0.0/src/roam/search/index_embeddings.py +1144 -0
  243. roam_code-14.0.0/src/roam/security/aibom_extension.py +344 -0
  244. roam_code-14.0.0/src/roam/security/bounded_json.py +87 -0
  245. roam_code-14.0.0/src/roam/security/owner_only.py +934 -0
  246. roam_code-14.0.0/src/roam/security/redact.py +379 -0
  247. roam_code-14.0.0/src/roam/security/taint_classifier.py +252 -0
  248. roam_code-14.0.0/src/roam/security/taint_engine.py +1347 -0
  249. roam_code-14.0.0/src/roam/security/taint_rules_lint.py +127 -0
  250. roam_code-14.0.0/src/roam/security/tenant_scope.py +596 -0
  251. roam_code-14.0.0/src/roam/security/text_views.py +113 -0
  252. roam_code-14.0.0/src/roam/security/vuln_store.py +563 -0
  253. roam_code-14.0.0/src/roam/sibling_patch/replay_gate.py +1270 -0
  254. roam_code-14.0.0/src/roam/surface_counts.py +614 -0
  255. roam_code-14.0.0/src/roam/telemetry.py +195 -0
  256. roam_code-14.0.0/src/roam/templates/ci/Jenkinsfile +299 -0
  257. roam_code-14.0.0/src/roam/templates/ci/agent-review.yml +143 -0
  258. roam_code-14.0.0/src/roam/templates/ci/azure-pipelines.yml +314 -0
  259. roam_code-14.0.0/src/roam/templates/ci/bitbucket-pipelines.yml +244 -0
  260. roam_code-14.0.0/src/roam/templates/ci/gitlab-ci.yml +269 -0
  261. roam_code-14.0.0/src/roam/templates/ci/roam-sarif-with-codeql.yml +61 -0
  262. roam_code-14.0.0/src/roam/templates/ci/slsa-src-l3.yml +132 -0
  263. roam_code-14.0.0/src/roam/testing/ci_xdist.py +130 -0
  264. roam_code-14.0.0/src/roam/transcript_backfill.py +2447 -0
  265. roam_code-14.0.0/src/roam/verdict.py +564 -0
  266. roam_code-14.0.0/src/roam/workspace/aggregator.py +482 -0
  267. roam_code-14.0.0/src/roam_code.egg-info/PKG-INFO +1006 -0
  268. roam_code-14.0.0/src/roam_code.egg-info/SOURCES.txt +2139 -0
  269. roam_code-14.0.0/src/roam_code.egg-info/requires.txt +49 -0
  270. roam_code-14.0.0/tests/test_agent_mode_telemetry.py +194 -0
  271. roam_code-14.0.0/tests/test_agent_modes.py +411 -0
  272. roam_code-14.0.0/tests/test_agents_md.py +316 -0
  273. roam_code-14.0.0/tests/test_aibom_symbol_count_unknown.py +218 -0
  274. roam_code-14.0.0/tests/test_architecture_guardian_workflow.py +46 -0
  275. roam_code-14.0.0/tests/test_article12_high_risk_scan_coverage.py +264 -0
  276. roam_code-14.0.0/tests/test_atomic_writes.py +980 -0
  277. roam_code-14.0.0/tests/test_attest.py +522 -0
  278. roam_code-14.0.0/tests/test_audit_symlink_containment.py +101 -0
  279. roam_code-14.0.0/tests/test_auto_count_script.py +369 -0
  280. roam_code-14.0.0/tests/test_batch_mcp.py +994 -0
  281. roam_code-14.0.0/tests/test_bridges.py +349 -0
  282. roam_code-14.0.0/tests/test_budget_coverage_survey.py +536 -0
  283. roam_code-14.0.0/tests/test_budget_flag.py +523 -0
  284. roam_code-14.0.0/tests/test_budget_zero_uncaps.py +200 -0
  285. roam_code-14.0.0/tests/test_calc_extract_parser_boundary.py +66 -0
  286. roam_code-14.0.0/tests/test_calc_golden.py +631 -0
  287. roam_code-14.0.0/tests/test_calc_inventory.py +300 -0
  288. roam_code-14.0.0/tests/test_calc_probe.py +151 -0
  289. roam_code-14.0.0/tests/test_capability_decoration.py +171 -0
  290. roam_code-14.0.0/tests/test_capability_registry.py +171 -0
  291. roam_code-14.0.0/tests/test_capsule.py +386 -0
  292. roam_code-14.0.0/tests/test_cga.py +841 -0
  293. roam_code-14.0.0/tests/test_cga_graph_builder_drift.py +366 -0
  294. roam_code-14.0.0/tests/test_ci_setup.py +427 -0
  295. roam_code-14.0.0/tests/test_ci_template_family_systemic_hardening.py +232 -0
  296. roam_code-14.0.0/tests/test_cli_cache_atomic.py +182 -0
  297. roam_code-14.0.0/tests/test_cli_responses_write.py +412 -0
  298. roam_code-14.0.0/tests/test_cli_syntaxwarning_suppressed.py +52 -0
  299. roam_code-14.0.0/tests/test_cli_telemetry_exit_code.py +70 -0
  300. roam_code-14.0.0/tests/test_cmd_at.py +120 -0
  301. roam_code-14.0.0/tests/test_cmd_compatibility.py +503 -0
  302. roam_code-14.0.0/tests/test_cmd_compile.py +506 -0
  303. roam_code-14.0.0/tests/test_cmd_db_check.py +107 -0
  304. roam_code-14.0.0/tests/test_cmd_review.py +244 -0
  305. roam_code-14.0.0/tests/test_cmd_verify_imports_sarif.py +274 -0
  306. roam_code-14.0.0/tests/test_cmd_why_fail_exception_scope.py +34 -0
  307. roam_code-14.0.0/tests/test_commands_exploration.py +923 -0
  308. roam_code-14.0.0/tests/test_commands_workflow.py +771 -0
  309. roam_code-14.0.0/tests/test_compat_sweep.py +130 -0
  310. roam_code-14.0.0/tests/test_compile_bare_filename_resolve.py +93 -0
  311. roam_code-14.0.0/tests/test_compile_cache.py +452 -0
  312. roam_code-14.0.0/tests/test_compile_cache_version_key.py +198 -0
  313. roam_code-14.0.0/tests/test_compile_daemon.py +186 -0
  314. roam_code-14.0.0/tests/test_compile_describe_module.py +125 -0
  315. roam_code-14.0.0/tests/test_compile_hook_invariants.py +210 -0
  316. roam_code-14.0.0/tests/test_compile_injection_advice.py +173 -0
  317. roam_code-14.0.0/tests/test_compile_probe_families_w11_w12_w13.py +357 -0
  318. roam_code-14.0.0/tests/test_compile_stats_by_mode.py +147 -0
  319. roam_code-14.0.0/tests/test_compile_stats_schema.py +351 -0
  320. roam_code-14.0.0/tests/test_compile_telemetry_privacy.py +362 -0
  321. roam_code-14.0.0/tests/test_compile_w147_w150.py +108 -0
  322. roam_code-14.0.0/tests/test_compile_w39_tier1.py +274 -0
  323. roam_code-14.0.0/tests/test_compile_w40_polish.py +233 -0
  324. roam_code-14.0.0/tests/test_compile_w43_w45_polish.py +459 -0
  325. roam_code-14.0.0/tests/test_compile_w46_w55_polish.py +514 -0
  326. roam_code-14.0.0/tests/test_compile_w70_cache_safety.py +711 -0
  327. roam_code-14.0.0/tests/test_composite_action_security.py +496 -0
  328. roam_code-14.0.0/tests/test_confidence_triples.py +1064 -0
  329. roam_code-14.0.0/tests/test_constitution.py +855 -0
  330. roam_code-14.0.0/tests/test_count_drift_no_overlap.py +403 -0
  331. roam_code-14.0.0/tests/test_cycles.py +305 -0
  332. roam_code-14.0.0/tests/test_dead_cli_flags_disposition.py +223 -0
  333. roam_code-14.0.0/tests/test_dead_cli_flags_gate.py +130 -0
  334. roam_code-14.0.0/tests/test_dead_code_intra_module_regression.py +91 -0
  335. roam_code-14.0.0/tests/test_dead_higher_order_dispatch.py +203 -0
  336. roam_code-14.0.0/tests/test_dead_public_surface.py +194 -0
  337. roam_code-14.0.0/tests/test_dependabot_cooldown_policy.py +66 -0
  338. roam_code-14.0.0/tests/test_distribution_manifests.py +319 -0
  339. roam_code-14.0.0/tests/test_doc_consistency.py +1122 -0
  340. roam_code-14.0.0/tests/test_doc_hygiene_ci_gate.py +291 -0
  341. roam_code-14.0.0/tests/test_doctor.py +1042 -0
  342. roam_code-14.0.0/tests/test_doctor_ci_parity.py +123 -0
  343. roam_code-14.0.0/tests/test_doctor_env_parity.py +162 -0
  344. roam_code-14.0.0/tests/test_doctor_git_repo_health.py +176 -0
  345. roam_code-14.0.0/tests/test_dogfood_core_behavior.py +503 -0
  346. roam_code-14.0.0/tests/test_dogfood_dedup_check.py +72 -0
  347. roam_code-14.0.0/tests/test_dogfood_dedup_check_e2e.py +114 -0
  348. roam_code-14.0.0/tests/test_dogfood_governance_behavior.py +830 -0
  349. roam_code-14.0.0/tests/test_dogfood_security_behavior.py +432 -0
  350. roam_code-14.0.0/tests/test_dogfood_service_behavior.py +633 -0
  351. roam_code-14.0.0/tests/test_dogfood_skip_marker_gate.py +142 -0
  352. roam_code-14.0.0/tests/test_effects.py +381 -0
  353. roam_code-14.0.0/tests/test_eight_questions_audit.py +582 -0
  354. roam_code-14.0.0/tests/test_evidence_pr_replay.py +2201 -0
  355. roam_code-14.0.0/tests/test_evidence_v0.py +1464 -0
  356. roam_code-14.0.0/tests/test_find_project_root_worktree.py +214 -0
  357. roam_code-14.0.0/tests/test_forecast.py +435 -0
  358. roam_code-14.0.0/tests/test_glob_match.py +272 -0
  359. roam_code-14.0.0/tests/test_graph_cache_project_identity.py +162 -0
  360. roam_code-14.0.0/tests/test_grep_extended.py +435 -0
  361. roam_code-14.0.0/tests/test_guard_log.py +232 -0
  362. roam_code-14.0.0/tests/test_guard_pr_and_github_check.py +696 -0
  363. roam_code-14.0.0/tests/test_health_baseline.py +377 -0
  364. roam_code-14.0.0/tests/test_hermeticity_unparsed_is_unknown.py +242 -0
  365. roam_code-14.0.0/tests/test_hooks_claude_setup.py +1608 -0
  366. roam_code-14.0.0/tests/test_ignore_drift.py +312 -0
  367. roam_code-14.0.0/tests/test_impact_inproc_denylist.py +33 -0
  368. roam_code-14.0.0/tests/test_import_resolves_to_checkout.py +78 -0
  369. roam_code-14.0.0/tests/test_index.py +743 -0
  370. roam_code-14.0.0/tests/test_index_drift_excludes_roam_artifacts.py +73 -0
  371. roam_code-14.0.0/tests/test_index_import_verification.py +504 -0
  372. roam_code-14.0.0/tests/test_index_parser.py +63 -0
  373. roam_code-14.0.0/tests/test_index_recovery_state.py +444 -0
  374. roam_code-14.0.0/tests/test_init_cmd.py +259 -0
  375. roam_code-14.0.0/tests/test_json_contracts.py +643 -0
  376. roam_code-14.0.0/tests/test_l1_rate_floor.py +68 -0
  377. roam_code-14.0.0/tests/test_language_pack_contract.py +113 -0
  378. roam_code-14.0.0/tests/test_law4_lint.py +707 -0
  379. roam_code-14.0.0/tests/test_leak_gate_blind_spots.py +251 -0
  380. roam_code-14.0.0/tests/test_leak_gate_exemplars.py +99 -0
  381. roam_code-14.0.0/tests/test_leak_gate_hashed_terms.py +182 -0
  382. roam_code-14.0.0/tests/test_linkcheck_gate.py +145 -0
  383. roam_code-14.0.0/tests/test_loop_e2e.py +626 -0
  384. roam_code-14.0.0/tests/test_math_fp_fixes.py +496 -0
  385. roam_code-14.0.0/tests/test_mcp_W303_wrappers.py +369 -0
  386. roam_code-14.0.0/tests/test_mcp_W304_wrappers.py +445 -0
  387. roam_code-14.0.0/tests/test_mcp_W305_wrappers.py +383 -0
  388. roam_code-14.0.0/tests/test_mcp_W306_wrappers.py +502 -0
  389. roam_code-14.0.0/tests/test_mcp_architecture_wrappers.py +361 -0
  390. roam_code-14.0.0/tests/test_mcp_exploration_wrappers.py +310 -0
  391. roam_code-14.0.0/tests/test_mcp_health_wrappers.py +420 -0
  392. roam_code-14.0.0/tests/test_mcp_param_aliases.py +674 -0
  393. roam_code-14.0.0/tests/test_mcp_param_aliases_input_path.py +672 -0
  394. roam_code-14.0.0/tests/test_mcp_preset_documentation.py +54 -0
  395. roam_code-14.0.0/tests/test_mcp_readonly_security_receipts.py +313 -0
  396. roam_code-14.0.0/tests/test_mcp_receipt_emitter.py +766 -0
  397. roam_code-14.0.0/tests/test_mcp_redaction_keys.py +143 -0
  398. roam_code-14.0.0/tests/test_mcp_refactoring_wrappers.py +371 -0
  399. roam_code-14.0.0/tests/test_mcp_server.py +1808 -0
  400. roam_code-14.0.0/tests/test_mcp_server_card_hash.py +84 -0
  401. roam_code-14.0.0/tests/test_mcp_setup.py +136 -0
  402. roam_code-14.0.0/tests/test_mcp_setup_write.py +425 -0
  403. roam_code-14.0.0/tests/test_mcp_tool_side_effect_metadata.py +140 -0
  404. roam_code-14.0.0/tests/test_mcp_tool_telemetry.py +217 -0
  405. roam_code-14.0.0/tests/test_mode_classification_coverage.py +669 -0
  406. roam_code-14.0.0/tests/test_mode_enforcement_dispatch.py +460 -0
  407. roam_code-14.0.0/tests/test_mutate_dry_run_wins.py +205 -0
  408. roam_code-14.0.0/tests/test_network_boundary_contract.py +88 -0
  409. roam_code-14.0.0/tests/test_no_internal_language.py +170 -0
  410. roam_code-14.0.0/tests/test_non_idempotent_tools_derived.py +272 -0
  411. roam_code-14.0.0/tests/test_non_read_only_tools_derived.py +205 -0
  412. roam_code-14.0.0/tests/test_output_projection.py +106 -0
  413. roam_code-14.0.0/tests/test_owner_only_posix_cleanup.py +121 -0
  414. roam_code-14.0.0/tests/test_owner_only_windows_cleanup.py +169 -0
  415. roam_code-14.0.0/tests/test_parser_pack_retry.py +236 -0
  416. roam_code-14.0.0/tests/test_pattern1_envelope_shape.py +127 -0
  417. roam_code-14.0.0/tests/test_perf_harness.py +58 -0
  418. roam_code-14.0.0/tests/test_pin_github_actions.py +91 -0
  419. roam_code-14.0.0/tests/test_plugin_discovery.py +194 -0
  420. roam_code-14.0.0/tests/test_plugin_dogfood_rails.py +302 -0
  421. roam_code-14.0.0/tests/test_pr_analyze_glob_scope.py +64 -0
  422. roam_code-14.0.0/tests/test_pr_bundle_sign_usage.py +34 -0
  423. roam_code-14.0.0/tests/test_pr_prep_commit_range_forwarding.py +149 -0
  424. roam_code-14.0.0/tests/test_pr_replay.py +764 -0
  425. roam_code-14.0.0/tests/test_prepush_gate_wired.py +495 -0
  426. roam_code-14.0.0/tests/test_prepush_worker_budget.py +200 -0
  427. roam_code-14.0.0/tests/test_procedure_mining.py +259 -0
  428. roam_code-14.0.0/tests/test_procedure_registry_lint.py +191 -0
  429. roam_code-14.0.0/tests/test_progressive_disclosure.py +627 -0
  430. roam_code-14.0.0/tests/test_proof_bundle.py +564 -0
  431. roam_code-14.0.0/tests/test_public_allowlist.py +76 -0
  432. roam_code-14.0.0/tests/test_publish_provenance_workflow.py +351 -0
  433. roam_code-14.0.0/tests/test_python_idioms_e2e.py +277 -0
  434. roam_code-14.0.0/tests/test_r3_taint_cooccurrence_disclosure.py +148 -0
  435. roam_code-14.0.0/tests/test_readme_surface_consistency.py +246 -0
  436. roam_code-14.0.0/tests/test_release_artifacts.py +604 -0
  437. roam_code-14.0.0/tests/test_replay_gate_containment.py +297 -0
  438. roam_code-14.0.0/tests/test_repo_description_drift.py +232 -0
  439. roam_code-14.0.0/tests/test_response_store.py +178 -0
  440. roam_code-14.0.0/tests/test_retired_claims_lint.py +153 -0
  441. roam_code-14.0.0/tests/test_retrieve_cross_repo.py +250 -0
  442. roam_code-14.0.0/tests/test_review_receipt.py +353 -0
  443. roam_code-14.0.0/tests/test_roam_ci_dependency_lock.py +153 -0
  444. roam_code-14.0.0/tests/test_roam_guard_non_github_templates_security.py +193 -0
  445. roam_code-14.0.0/tests/test_rules_validate.py +360 -0
  446. roam_code-14.0.0/tests/test_runs_ledger.py +379 -0
  447. roam_code-14.0.0/tests/test_runs_status_provenance.py +447 -0
  448. roam_code-14.0.0/tests/test_sarif_flag.py +1198 -0
  449. roam_code-14.0.0/tests/test_savings.py +1199 -0
  450. roam_code-14.0.0/tests/test_secret_scan_hook.py +1136 -0
  451. roam_code-14.0.0/tests/test_secrets_ai_provider_keys.py +91 -0
  452. roam_code-14.0.0/tests/test_secrets_v2.py +574 -0
  453. roam_code-14.0.0/tests/test_seed_hook_body_shas.py +61 -0
  454. roam_code-14.0.0/tests/test_service_report.py +1498 -0
  455. roam_code-14.0.0/tests/test_sibling_patch_network.py +282 -0
  456. roam_code-14.0.0/tests/test_smells.py +3516 -0
  457. roam_code-14.0.0/tests/test_snake_case_function_lint.py +118 -0
  458. roam_code-14.0.0/tests/test_source_context.py +61 -0
  459. roam_code-14.0.0/tests/test_stale_refs.py +4065 -0
  460. roam_code-14.0.0/tests/test_subprocess_entrypoint_hygiene.py +98 -0
  461. roam_code-14.0.0/tests/test_suppress_store_unreadable.py +236 -0
  462. roam_code-14.0.0/tests/test_surface_counts_wheel_layout.py +179 -0
  463. roam_code-14.0.0/tests/test_synergy_next_mode.py +143 -0
  464. roam_code-14.0.0/tests/test_syntax_check.py +526 -0
  465. roam_code-14.0.0/tests/test_taint_evidence_honesty.py +284 -0
  466. roam_code-14.0.0/tests/test_telemetry_schema_version.py +120 -0
  467. roam_code-14.0.0/tests/test_transcript_backfill.py +1248 -0
  468. roam_code-14.0.0/tests/test_understand_health_band_parity.py +206 -0
  469. roam_code-14.0.0/tests/test_user_version_discipline.py +117 -0
  470. roam_code-14.0.0/tests/test_v2_integration.py +245 -0
  471. roam_code-14.0.0/tests/test_verification_contract_and_verdict.py +479 -0
  472. roam_code-14.0.0/tests/test_verify.py +883 -0
  473. roam_code-14.0.0/tests/test_verify_autofire_hardening.py +368 -0
  474. roam_code-14.0.0/tests/test_verify_calc_divergence.py +88 -0
  475. roam_code-14.0.0/tests/test_verify_empty_is_not_scored.py +176 -0
  476. roam_code-14.0.0/tests/test_verify_imports_unreadable_unknown.py +225 -0
  477. roam_code-14.0.0/tests/test_verify_reindexes_stale_targets.py +130 -0
  478. roam_code-14.0.0/tests/test_verify_release_script.py +31 -0
  479. roam_code-14.0.0/tests/test_verify_secrets_gate.py +289 -0
  480. roam_code-14.0.0/tests/test_verify_suppressions.py +106 -0
  481. roam_code-14.0.0/tests/test_verify_uv_runtime.py +83 -0
  482. roam_code-14.0.0/tests/test_w1030_followup_a_alerts_budget_load_status.py +396 -0
  483. roam_code-14.0.0/tests/test_w1311_describe_understand_minimap_resolver.py +278 -0
  484. roam_code-14.0.0/tests/test_w1317_envelope_floor_schema_version_drift.py +441 -0
  485. roam_code-14.0.0/tests/test_w1320_false_clean_signal_disclosure.py +391 -0
  486. roam_code-14.0.0/tests/test_w1331_disclosure_branch_symmetry.py +683 -0
  487. roam_code-14.0.0/tests/test_w1331_migration_plan_text_disclosure.py +220 -0
  488. roam_code-14.0.0/tests/test_w1331_supply_chain_sarif_disclosure_once.py +186 -0
  489. roam_code-14.0.0/tests/test_w1332_uncomputable_signal_floor.py +469 -0
  490. roam_code-14.0.0/tests/test_w1333_secret_gate_encoding_blind_spot.py +154 -0
  491. roam_code-14.0.0/tests/test_w1334_secret_scan_unindexed_blind_spot.py +204 -0
  492. roam_code-14.0.0/tests/test_w1439_laws_import_law_src_layout.py +142 -0
  493. roam_code-14.0.0/tests/test_w1440_laws_namespace_contract.py +502 -0
  494. roam_code-14.0.0/tests/test_w1446_taint_scan_prefilter.py +142 -0
  495. roam_code-14.0.0/tests/test_w1447_verdict_status_allowlist.py +198 -0
  496. roam_code-14.0.0/tests/test_w1448_health_list_cap_disclosure.py +166 -0
  497. roam_code-14.0.0/tests/test_w1449_preflight_checker_exception.py +364 -0
  498. roam_code-14.0.0/tests/test_w1450_fitness_unknown_rule_type.py +415 -0
  499. roam_code-14.0.0/tests/test_w1451_health_score_single_source.py +414 -0
  500. roam_code-14.0.0/tests/test_w1452_betweenness_determinism.py +324 -0
  501. roam_code-14.0.0/tests/test_w1453_diff_fitness_dispatch.py +523 -0
  502. roam_code-14.0.0/tests/test_w1453_preflight_unknown_rule_type.py +353 -0
  503. roam_code-14.0.0/tests/test_w1454_githooks_posix.py +149 -0
  504. roam_code-14.0.0/tests/test_w1455_scanner_fails_closed.py +485 -0
  505. roam_code-14.0.0/tests/test_w1456_casefold_fallback_language_guard.py +248 -0
  506. roam_code-14.0.0/tests/test_w1459_uncounted_analysis_caps.py +535 -0
  507. roam_code-14.0.0/tests/test_w1460_baseline_regenerate_self_truncation.py +455 -0
  508. roam_code-14.0.0/tests/test_w1460_credential_gate_wide_bom_misroute.py +239 -0
  509. roam_code-14.0.0/tests/test_w1460_snapshot_metrics_version.py +970 -0
  510. roam_code-14.0.0/tests/test_w1461_metrics_graph_floor_disclosure.py +412 -0
  511. roam_code-14.0.0/tests/test_w1462_cga_dirty_probe_unknown.py +291 -0
  512. roam_code-14.0.0/tests/test_w1463_laws_diff_file_decode.py +266 -0
  513. roam_code-14.0.0/tests/test_w1464_pr_analyze_cache_producer_key.py +217 -0
  514. roam_code-14.0.0/tests/test_w1471_ratchet_mark_field_reset.py +328 -0
  515. roam_code-14.0.0/tests/test_w1491_compatibility_gate_wired.py +742 -0
  516. roam_code-14.0.0/tests/test_w1501_release_version_pins.py +492 -0
  517. roam_code-14.0.0/tests/test_w1502_init_zero_symbol_refusal.py +267 -0
  518. roam_code-14.0.0/tests/test_w1502_install_targets_exist.py +507 -0
  519. roam_code-14.0.0/tests/test_w1510_light_reindex_fts_sync.py +178 -0
  520. roam_code-14.0.0/tests/test_w1511_test_dir_component_anchoring.py +252 -0
  521. roam_code-14.0.0/tests/test_w1512_test_dir_segment_qualifier.py +472 -0
  522. roam_code-14.0.0/tests/test_w350_doctor_replay_permits_authority.py +367 -0
  523. roam_code-14.0.0/tests/test_w365_tool_metadata_annotations_parity.py +653 -0
  524. roam_code-14.0.0/tests/test_w420_surface_count_plugin_invariant.py +155 -0
  525. roam_code-14.0.0/tests/test_w452_python_taint_indexer_gap.py +273 -0
  526. roam_code-14.0.0/tests/test_w462_landing_page_tool_count_drift.py +383 -0
  527. roam_code-14.0.0/tests/test_w489_a_followup_cga_qualified_only.py +263 -0
  528. roam_code-14.0.0/tests/test_w603_open_db_warnings_out.py +871 -0
  529. roam_code-14.0.0/tests/test_w604_findings_readers_warnings_out.py +750 -0
  530. roam_code-14.0.0/tests/test_w605_index_embeddings_warnings_out.py +992 -0
  531. roam_code-14.0.0/tests/test_w606_framework_packs_warnings_out.py +813 -0
  532. roam_code-14.0.0/tests/test_w607_ba_cmd_health_warnings_out_envelope.py +622 -0
  533. roam_code-14.0.0/tests/test_w607_co_cmd_audit_trail_conformance_warnings_out_envelope.py +973 -0
  534. roam_code-14.0.0/tests/test_w607_do_cmd_graph_export_warnings_out_envelope.py +1001 -0
  535. roam_code-14.0.0/tests/test_w693_suppression_cross_loader.py +1080 -0
  536. roam_code-14.0.0/tests/test_w805_ddd_cmd_constitution_empty_corpus.py +424 -0
  537. roam_code-14.0.0/tests/test_w805_eeeee_cmd_verify_shared_helper_silent_safe.py +369 -0
  538. roam_code-14.0.0/tests/test_w805_hhhhh_cmd_syntax_check_shared_helper_silent_safe.py +455 -0
  539. roam_code-14.0.0/tests/test_w805_jjjjj_cmd_suggest_reviewers_shared_helper_silent_safe.py +459 -0
  540. roam_code-14.0.0/tests/test_w805_kkkk_cmd_taint_cross_lang_scoring.py +384 -0
  541. roam_code-14.0.0/tests/test_w805_mmmmm_cmd_coupling_shared_helper_silent_safe.py +502 -0
  542. roam_code-14.0.0/tests/test_w805_oo_cmd_dogfood_empty_corpus.py +467 -0
  543. roam_code-14.0.0/tests/test_w805_yyyy_cmd_pr_replay_q17_harvester_coverage.py +534 -0
  544. roam_code-14.0.0/tests/test_w825_taint_empty_corpus.py +168 -0
  545. roam_code-14.0.0/tests/test_w844_card_hash_auto_rotate.py +203 -0
  546. roam_code-14.0.0/tests/test_w933_typeddict_boundary_audit.py +348 -0
  547. roam_code-14.0.0/tests/test_w_mcp_injection_marker_egress.py +271 -0
  548. roam_code-14.0.0/tests/test_w_mcp_mode_enforcement.py +847 -0
  549. roam_code-14.0.0/tests/test_w_mcp_receipt_hmac_link.py +634 -0
  550. roam_code-14.0.0/tests/test_w_mcp_redact_egress.py +332 -0
  551. roam_code-14.0.0/tests/test_w_mcp_shadow_mode.py +466 -0
  552. roam_code-14.0.0/tests/test_workflow_dependency_lock_policy.py +255 -0
  553. roam_code-13.9.0/PKG-INFO +0 -1207
  554. roam_code-13.9.0/README.md +0 -1140
  555. roam_code-13.9.0/pyproject.toml +0 -211
  556. roam_code-13.9.0/src/roam/__init__.py +0 -8
  557. roam_code-13.9.0/src/roam/_glob_match.py +0 -88
  558. roam_code-13.9.0/src/roam/agent_opt.py +0 -1268
  559. roam_code-13.9.0/src/roam/analysis/effects.py +0 -793
  560. roam_code-13.9.0/src/roam/atomic_io.py +0 -222
  561. roam_code-13.9.0/src/roam/attest/cga.py +0 -746
  562. roam_code-13.9.0/src/roam/attest/vsa.py +0 -472
  563. roam_code-13.9.0/src/roam/capability.py +0 -280
  564. roam_code-13.9.0/src/roam/catalog/clones_rename_invariant.py +0 -506
  565. roam_code-13.9.0/src/roam/catalog/detectors.py +0 -5396
  566. roam_code-13.9.0/src/roam/catalog/smells.py +0 -3669
  567. roam_code-13.9.0/src/roam/cli.py +0 -1847
  568. roam_code-13.9.0/src/roam/command_advice.py +0 -632
  569. roam_code-13.9.0/src/roam/commands/audit_trail_helpers.py +0 -62
  570. roam_code-13.9.0/src/roam/commands/changed_files.py +0 -311
  571. roam_code-13.9.0/src/roam/commands/cmd_adversarial.py +0 -1289
  572. roam_code-13.9.0/src/roam/commands/cmd_agent_opt.py +0 -312
  573. roam_code-13.9.0/src/roam/commands/cmd_agent_plan.py +0 -634
  574. roam_code-13.9.0/src/roam/commands/cmd_agent_score.py +0 -458
  575. roam_code-13.9.0/src/roam/commands/cmd_agents_md.py +0 -247
  576. roam_code-13.9.0/src/roam/commands/cmd_alerts.py +0 -1600
  577. roam_code-13.9.0/src/roam/commands/cmd_api_changes.py +0 -891
  578. roam_code-13.9.0/src/roam/commands/cmd_article_12_check.py +0 -446
  579. roam_code-13.9.0/src/roam/commands/cmd_at.py +0 -212
  580. roam_code-13.9.0/src/roam/commands/cmd_attest.py +0 -1756
  581. roam_code-13.9.0/src/roam/commands/cmd_audit.py +0 -401
  582. roam_code-13.9.0/src/roam/commands/cmd_audit_trail_conformance.py +0 -969
  583. roam_code-13.9.0/src/roam/commands/cmd_audit_trail_export.py +0 -863
  584. roam_code-13.9.0/src/roam/commands/cmd_audit_trail_verify.py +0 -1026
  585. roam_code-13.9.0/src/roam/commands/cmd_auth_gaps.py +0 -2077
  586. roam_code-13.9.0/src/roam/commands/cmd_bench.py +0 -776
  587. roam_code-13.9.0/src/roam/commands/cmd_bisect.py +0 -248
  588. roam_code-13.9.0/src/roam/commands/cmd_boundary.py +0 -704
  589. roam_code-13.9.0/src/roam/commands/cmd_brief.py +0 -861
  590. roam_code-13.9.0/src/roam/commands/cmd_budget.py +0 -575
  591. roam_code-13.9.0/src/roam/commands/cmd_bus_factor.py +0 -1477
  592. roam_code-13.9.0/src/roam/commands/cmd_capabilities.py +0 -202
  593. roam_code-13.9.0/src/roam/commands/cmd_capsule.py +0 -628
  594. roam_code-13.9.0/src/roam/commands/cmd_cga.py +0 -994
  595. roam_code-13.9.0/src/roam/commands/cmd_check_rules.py +0 -1093
  596. roam_code-13.9.0/src/roam/commands/cmd_ci_setup.py +0 -898
  597. roam_code-13.9.0/src/roam/commands/cmd_clones.py +0 -955
  598. roam_code-13.9.0/src/roam/commands/cmd_closure.py +0 -599
  599. roam_code-13.9.0/src/roam/commands/cmd_clusters.py +0 -598
  600. roam_code-13.9.0/src/roam/commands/cmd_compatibility.py +0 -565
  601. roam_code-13.9.0/src/roam/commands/cmd_compile.py +0 -748
  602. roam_code-13.9.0/src/roam/commands/cmd_compile_cache.py +0 -911
  603. roam_code-13.9.0/src/roam/commands/cmd_compile_stats.py +0 -466
  604. roam_code-13.9.0/src/roam/commands/cmd_compiler_corpus.py +0 -423
  605. roam_code-13.9.0/src/roam/commands/cmd_compiler_health.py +0 -718
  606. roam_code-13.9.0/src/roam/commands/cmd_complete.py +0 -248
  607. roam_code-13.9.0/src/roam/commands/cmd_complexity.py +0 -1166
  608. roam_code-13.9.0/src/roam/commands/cmd_constitution.py +0 -592
  609. roam_code-13.9.0/src/roam/commands/cmd_context.py +0 -1773
  610. roam_code-13.9.0/src/roam/commands/cmd_conventions.py +0 -1315
  611. roam_code-13.9.0/src/roam/commands/cmd_coverage_gaps.py +0 -854
  612. roam_code-13.9.0/src/roam/commands/cmd_critique.py +0 -1345
  613. roam_code-13.9.0/src/roam/commands/cmd_cut.py +0 -561
  614. roam_code-13.9.0/src/roam/commands/cmd_cycle_break.py +0 -277
  615. roam_code-13.9.0/src/roam/commands/cmd_cycles.py +0 -153
  616. roam_code-13.9.0/src/roam/commands/cmd_dark_matter.py +0 -941
  617. roam_code-13.9.0/src/roam/commands/cmd_dashboard.py +0 -814
  618. roam_code-13.9.0/src/roam/commands/cmd_db_check.py +0 -215
  619. roam_code-13.9.0/src/roam/commands/cmd_dead.py +0 -3123
  620. roam_code-13.9.0/src/roam/commands/cmd_debt.py +0 -1001
  621. roam_code-13.9.0/src/roam/commands/cmd_delete_check.py +0 -697
  622. roam_code-13.9.0/src/roam/commands/cmd_deps.py +0 -555
  623. roam_code-13.9.0/src/roam/commands/cmd_describe.py +0 -1468
  624. roam_code-13.9.0/src/roam/commands/cmd_diagnose.py +0 -1209
  625. roam_code-13.9.0/src/roam/commands/cmd_diff.py +0 -1344
  626. roam_code-13.9.0/src/roam/commands/cmd_dispatch_trace.py +0 -533
  627. roam_code-13.9.0/src/roam/commands/cmd_doctor.py +0 -2455
  628. roam_code-13.9.0/src/roam/commands/cmd_dogfood.py +0 -345
  629. roam_code-13.9.0/src/roam/commands/cmd_duplicates.py +0 -1650
  630. roam_code-13.9.0/src/roam/commands/cmd_envelope_diff.py +0 -1019
  631. roam_code-13.9.0/src/roam/commands/cmd_evidence_diff.py +0 -1039
  632. roam_code-13.9.0/src/roam/commands/cmd_evidence_doctor.py +0 -1543
  633. roam_code-13.9.0/src/roam/commands/cmd_evidence_oscal.py +0 -588
  634. roam_code-13.9.0/src/roam/commands/cmd_fan.py +0 -1330
  635. roam_code-13.9.0/src/roam/commands/cmd_file.py +0 -445
  636. roam_code-13.9.0/src/roam/commands/cmd_findings.py +0 -663
  637. roam_code-13.9.0/src/roam/commands/cmd_fingerprint.py +0 -935
  638. roam_code-13.9.0/src/roam/commands/cmd_fitness.py +0 -1266
  639. roam_code-13.9.0/src/roam/commands/cmd_flag_dead.py +0 -686
  640. roam_code-13.9.0/src/roam/commands/cmd_fleet.py +0 -494
  641. roam_code-13.9.0/src/roam/commands/cmd_forecast.py +0 -589
  642. roam_code-13.9.0/src/roam/commands/cmd_graph_diff.py +0 -421
  643. roam_code-13.9.0/src/roam/commands/cmd_graph_export.py +0 -323
  644. roam_code-13.9.0/src/roam/commands/cmd_grep.py +0 -1136
  645. roam_code-13.9.0/src/roam/commands/cmd_guard_init.py +0 -174
  646. roam_code-13.9.0/src/roam/commands/cmd_guard_pr.py +0 -442
  647. roam_code-13.9.0/src/roam/commands/cmd_health.py +0 -2649
  648. roam_code-13.9.0/src/roam/commands/cmd_help_search.py +0 -127
  649. roam_code-13.9.0/src/roam/commands/cmd_history_grep.py +0 -397
  650. roam_code-13.9.0/src/roam/commands/cmd_hooks.py +0 -1247
  651. roam_code-13.9.0/src/roam/commands/cmd_hotspots.py +0 -1460
  652. roam_code-13.9.0/src/roam/commands/cmd_index.py +0 -192
  653. roam_code-13.9.0/src/roam/commands/cmd_ingest_trace.py +0 -256
  654. roam_code-13.9.0/src/roam/commands/cmd_init.py +0 -397
  655. roam_code-13.9.0/src/roam/commands/cmd_invariants.py +0 -682
  656. roam_code-13.9.0/src/roam/commands/cmd_laws.py +0 -904
  657. roam_code-13.9.0/src/roam/commands/cmd_llm_smells.py +0 -1175
  658. roam_code-13.9.0/src/roam/commands/cmd_magic_numbers.py +0 -746
  659. roam_code-13.9.0/src/roam/commands/cmd_math.py +0 -917
  660. roam_code-13.9.0/src/roam/commands/cmd_mcp.py +0 -171
  661. roam_code-13.9.0/src/roam/commands/cmd_mcp_setup.py +0 -361
  662. roam_code-13.9.0/src/roam/commands/cmd_mcp_status.py +0 -192
  663. roam_code-13.9.0/src/roam/commands/cmd_memory.py +0 -402
  664. roam_code-13.9.0/src/roam/commands/cmd_metrics_push.py +0 -776
  665. roam_code-13.9.0/src/roam/commands/cmd_migration_plan.py +0 -533
  666. roam_code-13.9.0/src/roam/commands/cmd_minimap.py +0 -792
  667. roam_code-13.9.0/src/roam/commands/cmd_missing_index.py +0 -2278
  668. roam_code-13.9.0/src/roam/commands/cmd_mutate.py +0 -539
  669. roam_code-13.9.0/src/roam/commands/cmd_n1.py +0 -2454
  670. roam_code-13.9.0/src/roam/commands/cmd_next.py +0 -761
  671. roam_code-13.9.0/src/roam/commands/cmd_observability_opt.py +0 -333
  672. roam_code-13.9.0/src/roam/commands/cmd_orchestrate.py +0 -441
  673. roam_code-13.9.0/src/roam/commands/cmd_orphan_imports.py +0 -1308
  674. roam_code-13.9.0/src/roam/commands/cmd_orphan_routes.py +0 -916
  675. roam_code-13.9.0/src/roam/commands/cmd_over_fetch.py +0 -1913
  676. roam_code-13.9.0/src/roam/commands/cmd_partition.py +0 -1174
  677. roam_code-13.9.0/src/roam/commands/cmd_permit.py +0 -793
  678. roam_code-13.9.0/src/roam/commands/cmd_postmortem.py +0 -797
  679. roam_code-13.9.0/src/roam/commands/cmd_pr_analyze.py +0 -2662
  680. roam_code-13.9.0/src/roam/commands/cmd_pr_bundle.py +0 -3676
  681. roam_code-13.9.0/src/roam/commands/cmd_pr_comment_render.py +0 -543
  682. roam_code-13.9.0/src/roam/commands/cmd_pr_prep.py +0 -582
  683. roam_code-13.9.0/src/roam/commands/cmd_pr_replay.py +0 -4850
  684. roam_code-13.9.0/src/roam/commands/cmd_pr_risk.py +0 -2110
  685. roam_code-13.9.0/src/roam/commands/cmd_preflight.py +0 -1655
  686. roam_code-13.9.0/src/roam/commands/cmd_proof_bundle.py +0 -258
  687. roam_code-13.9.0/src/roam/commands/cmd_py_types.py +0 -473
  688. roam_code-13.9.0/src/roam/commands/cmd_pytest_fixtures.py +0 -418
  689. roam_code-13.9.0/src/roam/commands/cmd_reachability_triage.py +0 -404
  690. roam_code-13.9.0/src/roam/commands/cmd_recommend.py +0 -247
  691. roam_code-13.9.0/src/roam/commands/cmd_refs_text.py +0 -615
  692. roam_code-13.9.0/src/roam/commands/cmd_relate.py +0 -853
  693. roam_code-13.9.0/src/roam/commands/cmd_rules.py +0 -547
  694. roam_code-13.9.0/src/roam/commands/cmd_rules_validate.py +0 -506
  695. roam_code-13.9.0/src/roam/commands/cmd_runs.py +0 -1516
  696. roam_code-13.9.0/src/roam/commands/cmd_sbom.py +0 -1025
  697. roam_code-13.9.0/src/roam/commands/cmd_search.py +0 -1176
  698. roam_code-13.9.0/src/roam/commands/cmd_secrets.py +0 -751
  699. roam_code-13.9.0/src/roam/commands/cmd_service_report.py +0 -1165
  700. roam_code-13.9.0/src/roam/commands/cmd_simulate.py +0 -724
  701. roam_code-13.9.0/src/roam/commands/cmd_skill_generate.py +0 -301
  702. roam_code-13.9.0/src/roam/commands/cmd_smells.py +0 -1351
  703. roam_code-13.9.0/src/roam/commands/cmd_stale_refs.py +0 -3818
  704. roam_code-13.9.0/src/roam/commands/cmd_supply_chain.py +0 -1224
  705. roam_code-13.9.0/src/roam/commands/cmd_suppress.py +0 -306
  706. roam_code-13.9.0/src/roam/commands/cmd_surface.py +0 -316
  707. roam_code-13.9.0/src/roam/commands/cmd_syntax_check.py +0 -324
  708. roam_code-13.9.0/src/roam/commands/cmd_taint.py +0 -1174
  709. roam_code-13.9.0/src/roam/commands/cmd_telemetry.py +0 -95
  710. roam_code-13.9.0/src/roam/commands/cmd_test_hermeticity.py +0 -607
  711. roam_code-13.9.0/src/roam/commands/cmd_test_impact.py +0 -234
  712. roam_code-13.9.0/src/roam/commands/cmd_tour.py +0 -653
  713. roam_code-13.9.0/src/roam/commands/cmd_trace.py +0 -873
  714. roam_code-13.9.0/src/roam/commands/cmd_trends.py +0 -1813
  715. roam_code-13.9.0/src/roam/commands/cmd_triage.py +0 -365
  716. roam_code-13.9.0/src/roam/commands/cmd_understand.py +0 -1542
  717. roam_code-13.9.0/src/roam/commands/cmd_uses.py +0 -729
  718. roam_code-13.9.0/src/roam/commands/cmd_verdict.py +0 -160
  719. roam_code-13.9.0/src/roam/commands/cmd_verify.py +0 -6052
  720. roam_code-13.9.0/src/roam/commands/cmd_verify_imports.py +0 -1535
  721. roam_code-13.9.0/src/roam/commands/cmd_version.py +0 -106
  722. roam_code-13.9.0/src/roam/commands/cmd_vibe_check.py +0 -2406
  723. roam_code-13.9.0/src/roam/commands/cmd_vuln_map.py +0 -170
  724. roam_code-13.9.0/src/roam/commands/cmd_vuln_reach.py +0 -891
  725. roam_code-13.9.0/src/roam/commands/cmd_vulns.py +0 -1521
  726. roam_code-13.9.0/src/roam/commands/dead_public_surface.py +0 -267
  727. roam_code-13.9.0/src/roam/commands/metrics_history.py +0 -364
  728. roam_code-13.9.0/src/roam/commands/pr_analyze/audit_trail.py +0 -153
  729. roam_code-13.9.0/src/roam/commands/pr_analyze/cache.py +0 -191
  730. roam_code-13.9.0/src/roam/commands/pr_analyze/rules.py +0 -255
  731. roam_code-13.9.0/src/roam/commands/resolve.py +0 -812
  732. roam_code-13.9.0/src/roam/competitor_site_data.py +0 -2167
  733. roam_code-13.9.0/src/roam/constitution/__init__.py +0 -44
  734. roam_code-13.9.0/src/roam/constitution/loader.py +0 -1396
  735. roam_code-13.9.0/src/roam/db/connection.py +0 -996
  736. roam_code-13.9.0/src/roam/db/schema.py +0 -463
  737. roam_code-13.9.0/src/roam/evidence/profiles.py +0 -483
  738. roam_code-13.9.0/src/roam/graph/builder.py +0 -94
  739. roam_code-13.9.0/src/roam/graph/diff.py +0 -479
  740. roam_code-13.9.0/src/roam/graph/pagerank.py +0 -386
  741. roam_code-13.9.0/src/roam/graph/simulate.py +0 -354
  742. roam_code-13.9.0/src/roam/graph/spectral.py +0 -322
  743. roam_code-13.9.0/src/roam/guard_enums.py +0 -146
  744. roam_code-13.9.0/src/roam/guard_log.py +0 -210
  745. roam_code-13.9.0/src/roam/index/indexer.py +0 -2436
  746. roam_code-13.9.0/src/roam/index/parser.py +0 -459
  747. roam_code-13.9.0/src/roam/index/relations.py +0 -1504
  748. roam_code-13.9.0/src/roam/languages/base.py +0 -242
  749. roam_code-13.9.0/src/roam/languages/foxpro_lang.py +0 -1600
  750. roam_code-13.9.0/src/roam/languages/python_lang.py +0 -909
  751. roam_code-13.9.0/src/roam/languages/query_engine.py +0 -572
  752. roam_code-13.9.0/src/roam/languages/registry.py +0 -425
  753. roam_code-13.9.0/src/roam/laws/checker.py +0 -719
  754. roam_code-13.9.0/src/roam/laws/miner.py +0 -677
  755. roam_code-13.9.0/src/roam/mcp-server-card.json +0 -167
  756. roam_code-13.9.0/src/roam/mcp_extras/__init__.py +0 -25
  757. roam_code-13.9.0/src/roam/mcp_extras/concurrency.py +0 -310
  758. roam_code-13.9.0/src/roam/mcp_extras/sampling.py +0 -218
  759. roam_code-13.9.0/src/roam/mcp_server.py +0 -18928
  760. roam_code-13.9.0/src/roam/modes/policy.py +0 -533
  761. roam_code-13.9.0/src/roam/output/formatter.py +0 -1991
  762. roam_code-13.9.0/src/roam/output/metric_definitions.py +0 -192
  763. roam_code-13.9.0/src/roam/output/sarif.py +0 -6475
  764. roam_code-13.9.0/src/roam/output/schema_registry.py +0 -62
  765. roam_code-13.9.0/src/roam/output/source_context.py +0 -75
  766. roam_code-13.9.0/src/roam/plan/compiler.py +0 -13795
  767. roam_code-13.9.0/src/roam/plan/plan_cache.py +0 -269
  768. roam_code-13.9.0/src/roam/proof_bundle.py +0 -393
  769. roam_code-13.9.0/src/roam/quality/__init__.py +0 -30
  770. roam_code-13.9.0/src/roam/rules/ast_match.py +0 -238
  771. roam_code-13.9.0/src/roam/runs/helpers.py +0 -270
  772. roam_code-13.9.0/src/roam/runs/ledger.py +0 -737
  773. roam_code-13.9.0/src/roam/search/index_embeddings.py +0 -1051
  774. roam_code-13.9.0/src/roam/security/aibom_extension.py +0 -284
  775. roam_code-13.9.0/src/roam/security/redact.py +0 -362
  776. roam_code-13.9.0/src/roam/security/taint_classifier.py +0 -240
  777. roam_code-13.9.0/src/roam/security/taint_engine.py +0 -757
  778. roam_code-13.9.0/src/roam/security/taint_rules_lint.py +0 -95
  779. roam_code-13.9.0/src/roam/security/tenant_scope.py +0 -568
  780. roam_code-13.9.0/src/roam/security/vuln_store.py +0 -517
  781. roam_code-13.9.0/src/roam/sibling_patch/replay_gate.py +0 -312
  782. roam_code-13.9.0/src/roam/surface_counts.py +0 -521
  783. roam_code-13.9.0/src/roam/telemetry.py +0 -140
  784. roam_code-13.9.0/src/roam/templates/ci/Jenkinsfile +0 -191
  785. roam_code-13.9.0/src/roam/templates/ci/agent-review.yml +0 -117
  786. roam_code-13.9.0/src/roam/templates/ci/azure-pipelines.yml +0 -167
  787. roam_code-13.9.0/src/roam/templates/ci/bitbucket-pipelines.yml +0 -181
  788. roam_code-13.9.0/src/roam/templates/ci/gitlab-ci.yml +0 -140
  789. roam_code-13.9.0/src/roam/templates/ci/roam-sarif-with-codeql.yml +0 -55
  790. roam_code-13.9.0/src/roam/templates/ci/slsa-src-l3.yml +0 -109
  791. roam_code-13.9.0/src/roam/testing/ci_xdist.py +0 -121
  792. roam_code-13.9.0/src/roam/verdict.py +0 -304
  793. roam_code-13.9.0/src/roam/workspace/aggregator.py +0 -431
  794. roam_code-13.9.0/src/roam_code.egg-info/PKG-INFO +0 -1207
  795. roam_code-13.9.0/src/roam_code.egg-info/SOURCES.txt +0 -1992
  796. roam_code-13.9.0/src/roam_code.egg-info/requires.txt +0 -43
  797. roam_code-13.9.0/tests/test_agent_modes.py +0 -411
  798. roam_code-13.9.0/tests/test_agents_md.py +0 -319
  799. roam_code-13.9.0/tests/test_atomic_writes.py +0 -278
  800. roam_code-13.9.0/tests/test_attest.py +0 -469
  801. roam_code-13.9.0/tests/test_audit_symlink_containment.py +0 -93
  802. roam_code-13.9.0/tests/test_auto_count_script.py +0 -369
  803. roam_code-13.9.0/tests/test_batch_mcp.py +0 -879
  804. roam_code-13.9.0/tests/test_bridges.py +0 -335
  805. roam_code-13.9.0/tests/test_budget_coverage_survey.py +0 -532
  806. roam_code-13.9.0/tests/test_budget_flag.py +0 -480
  807. roam_code-13.9.0/tests/test_capability_decoration.py +0 -170
  808. roam_code-13.9.0/tests/test_capability_registry.py +0 -165
  809. roam_code-13.9.0/tests/test_capsule.py +0 -319
  810. roam_code-13.9.0/tests/test_cga.py +0 -832
  811. roam_code-13.9.0/tests/test_ci_setup.py +0 -416
  812. roam_code-13.9.0/tests/test_cli_cache_atomic.py +0 -145
  813. roam_code-13.9.0/tests/test_cli_responses_write.py +0 -391
  814. roam_code-13.9.0/tests/test_cmd_at.py +0 -61
  815. roam_code-13.9.0/tests/test_cmd_compatibility.py +0 -289
  816. roam_code-13.9.0/tests/test_cmd_compile.py +0 -356
  817. roam_code-13.9.0/tests/test_cmd_db_check.py +0 -74
  818. roam_code-13.9.0/tests/test_cmd_verify_imports_sarif.py +0 -260
  819. roam_code-13.9.0/tests/test_cmd_why_fail_exception_scope.py +0 -29
  820. roam_code-13.9.0/tests/test_commands_exploration.py +0 -918
  821. roam_code-13.9.0/tests/test_commands_workflow.py +0 -766
  822. roam_code-13.9.0/tests/test_compat_sweep.py +0 -130
  823. roam_code-13.9.0/tests/test_compile_bare_filename_resolve.py +0 -84
  824. roam_code-13.9.0/tests/test_compile_cache.py +0 -368
  825. roam_code-13.9.0/tests/test_compile_describe_module.py +0 -126
  826. roam_code-13.9.0/tests/test_compile_injection_advice.py +0 -123
  827. roam_code-13.9.0/tests/test_compile_probe_families_w11_w12_w13.py +0 -357
  828. roam_code-13.9.0/tests/test_compile_stats_by_mode.py +0 -144
  829. roam_code-13.9.0/tests/test_compile_stats_schema.py +0 -112
  830. roam_code-13.9.0/tests/test_compile_w147_w150.py +0 -95
  831. roam_code-13.9.0/tests/test_compile_w39_tier1.py +0 -264
  832. roam_code-13.9.0/tests/test_compile_w40_polish.py +0 -219
  833. roam_code-13.9.0/tests/test_compile_w43_w45_polish.py +0 -455
  834. roam_code-13.9.0/tests/test_compile_w46_w55_polish.py +0 -405
  835. roam_code-13.9.0/tests/test_compile_w70_cache_safety.py +0 -685
  836. roam_code-13.9.0/tests/test_confidence_triples.py +0 -1045
  837. roam_code-13.9.0/tests/test_constitution.py +0 -568
  838. roam_code-13.9.0/tests/test_count_drift_no_overlap.py +0 -392
  839. roam_code-13.9.0/tests/test_cycles.py +0 -207
  840. roam_code-13.9.0/tests/test_dead_code_intra_module_regression.py +0 -95
  841. roam_code-13.9.0/tests/test_dead_public_surface.py +0 -91
  842. roam_code-13.9.0/tests/test_doc_consistency.py +0 -896
  843. roam_code-13.9.0/tests/test_doc_hygiene_ci_gate.py +0 -211
  844. roam_code-13.9.0/tests/test_doctor.py +0 -1029
  845. roam_code-13.9.0/tests/test_dogfood_dedup_check.py +0 -77
  846. roam_code-13.9.0/tests/test_dogfood_dedup_check_e2e.py +0 -115
  847. roam_code-13.9.0/tests/test_effects.py +0 -338
  848. roam_code-13.9.0/tests/test_eight_questions_audit.py +0 -581
  849. roam_code-13.9.0/tests/test_evidence_pr_replay.py +0 -2163
  850. roam_code-13.9.0/tests/test_evidence_v0.py +0 -1461
  851. roam_code-13.9.0/tests/test_find_project_root_worktree.py +0 -113
  852. roam_code-13.9.0/tests/test_forecast.py +0 -428
  853. roam_code-13.9.0/tests/test_glob_match.py +0 -202
  854. roam_code-13.9.0/tests/test_grep_extended.py +0 -341
  855. roam_code-13.9.0/tests/test_guard_log.py +0 -159
  856. roam_code-13.9.0/tests/test_guard_pr_and_github_check.py +0 -540
  857. roam_code-13.9.0/tests/test_health_baseline.py +0 -361
  858. roam_code-13.9.0/tests/test_hooks_claude_setup.py +0 -338
  859. roam_code-13.9.0/tests/test_index.py +0 -733
  860. roam_code-13.9.0/tests/test_index_import_verification.py +0 -492
  861. roam_code-13.9.0/tests/test_index_parser.py +0 -40
  862. roam_code-13.9.0/tests/test_init_cmd.py +0 -239
  863. roam_code-13.9.0/tests/test_json_contracts.py +0 -598
  864. roam_code-13.9.0/tests/test_l1_rate_floor.py +0 -62
  865. roam_code-13.9.0/tests/test_law4_lint.py +0 -658
  866. roam_code-13.9.0/tests/test_leak_gate_exemplars.py +0 -94
  867. roam_code-13.9.0/tests/test_loop_e2e.py +0 -602
  868. roam_code-13.9.0/tests/test_math_fp_fixes.py +0 -440
  869. roam_code-13.9.0/tests/test_mcp_W303_wrappers.py +0 -368
  870. roam_code-13.9.0/tests/test_mcp_W304_wrappers.py +0 -444
  871. roam_code-13.9.0/tests/test_mcp_W305_wrappers.py +0 -381
  872. roam_code-13.9.0/tests/test_mcp_W306_wrappers.py +0 -501
  873. roam_code-13.9.0/tests/test_mcp_architecture_wrappers.py +0 -354
  874. roam_code-13.9.0/tests/test_mcp_exploration_wrappers.py +0 -287
  875. roam_code-13.9.0/tests/test_mcp_health_wrappers.py +0 -419
  876. roam_code-13.9.0/tests/test_mcp_param_aliases.py +0 -664
  877. roam_code-13.9.0/tests/test_mcp_param_aliases_input_path.py +0 -662
  878. roam_code-13.9.0/tests/test_mcp_receipt_emitter.py +0 -432
  879. roam_code-13.9.0/tests/test_mcp_refactoring_wrappers.py +0 -364
  880. roam_code-13.9.0/tests/test_mcp_server.py +0 -1795
  881. roam_code-13.9.0/tests/test_mcp_server_card_hash.py +0 -86
  882. roam_code-13.9.0/tests/test_mcp_setup.py +0 -132
  883. roam_code-13.9.0/tests/test_mcp_setup_write.py +0 -239
  884. roam_code-13.9.0/tests/test_mcp_tool_side_effect_metadata.py +0 -32
  885. roam_code-13.9.0/tests/test_mcp_tool_telemetry.py +0 -168
  886. roam_code-13.9.0/tests/test_mode_classification_coverage.py +0 -436
  887. roam_code-13.9.0/tests/test_mode_enforcement_dispatch.py +0 -258
  888. roam_code-13.9.0/tests/test_no_internal_language.py +0 -134
  889. roam_code-13.9.0/tests/test_non_idempotent_tools_derived.py +0 -248
  890. roam_code-13.9.0/tests/test_non_read_only_tools_derived.py +0 -188
  891. roam_code-13.9.0/tests/test_pattern1_envelope_shape.py +0 -106
  892. roam_code-13.9.0/tests/test_plugin_discovery.py +0 -153
  893. roam_code-13.9.0/tests/test_plugin_dogfood_rails.py +0 -302
  894. roam_code-13.9.0/tests/test_pr_replay.py +0 -761
  895. roam_code-13.9.0/tests/test_prepush_gate_wired.py +0 -155
  896. roam_code-13.9.0/tests/test_procedure_registry_lint.py +0 -161
  897. roam_code-13.9.0/tests/test_progressive_disclosure.py +0 -545
  898. roam_code-13.9.0/tests/test_proof_bundle.py +0 -560
  899. roam_code-13.9.0/tests/test_public_allowlist.py +0 -73
  900. roam_code-13.9.0/tests/test_python_idioms_e2e.py +0 -274
  901. roam_code-13.9.0/tests/test_readme_surface_consistency.py +0 -215
  902. roam_code-13.9.0/tests/test_retired_claims_lint.py +0 -146
  903. roam_code-13.9.0/tests/test_retrieve_cross_repo.py +0 -249
  904. roam_code-13.9.0/tests/test_rules_validate.py +0 -325
  905. roam_code-13.9.0/tests/test_runs_ledger.py +0 -326
  906. roam_code-13.9.0/tests/test_sarif_flag.py +0 -1040
  907. roam_code-13.9.0/tests/test_secret_scan_hook.py +0 -64
  908. roam_code-13.9.0/tests/test_secrets_v2.py +0 -537
  909. roam_code-13.9.0/tests/test_service_report.py +0 -553
  910. roam_code-13.9.0/tests/test_sibling_patch_network.py +0 -255
  911. roam_code-13.9.0/tests/test_smells.py +0 -3427
  912. roam_code-13.9.0/tests/test_snake_case_function_lint.py +0 -146
  913. roam_code-13.9.0/tests/test_source_context.py +0 -38
  914. roam_code-13.9.0/tests/test_stale_refs.py +0 -4062
  915. roam_code-13.9.0/tests/test_surface_counts_wheel_layout.py +0 -176
  916. roam_code-13.9.0/tests/test_synergy_next_mode.py +0 -139
  917. roam_code-13.9.0/tests/test_syntax_check.py +0 -501
  918. roam_code-13.9.0/tests/test_understand_health_band_parity.py +0 -197
  919. roam_code-13.9.0/tests/test_user_version_discipline.py +0 -111
  920. roam_code-13.9.0/tests/test_v2_integration.py +0 -243
  921. roam_code-13.9.0/tests/test_verification_contract_and_verdict.py +0 -245
  922. roam_code-13.9.0/tests/test_verify.py +0 -876
  923. roam_code-13.9.0/tests/test_verify_reindexes_stale_targets.py +0 -130
  924. roam_code-13.9.0/tests/test_verify_secrets_gate.py +0 -254
  925. roam_code-13.9.0/tests/test_verify_suppressions.py +0 -66
  926. roam_code-13.9.0/tests/test_w1030_followup_a_alerts_budget_load_status.py +0 -376
  927. roam_code-13.9.0/tests/test_w1311_describe_understand_minimap_resolver.py +0 -289
  928. roam_code-13.9.0/tests/test_w350_doctor_replay_permits_authority.py +0 -381
  929. roam_code-13.9.0/tests/test_w365_tool_metadata_annotations_parity.py +0 -425
  930. roam_code-13.9.0/tests/test_w420_surface_count_plugin_invariant.py +0 -149
  931. roam_code-13.9.0/tests/test_w452_python_taint_indexer_gap.py +0 -271
  932. roam_code-13.9.0/tests/test_w462_landing_page_tool_count_drift.py +0 -272
  933. roam_code-13.9.0/tests/test_w489_a_followup_cga_qualified_only.py +0 -258
  934. roam_code-13.9.0/tests/test_w603_open_db_warnings_out.py +0 -871
  935. roam_code-13.9.0/tests/test_w604_findings_readers_warnings_out.py +0 -750
  936. roam_code-13.9.0/tests/test_w605_index_embeddings_warnings_out.py +0 -992
  937. roam_code-13.9.0/tests/test_w606_framework_packs_warnings_out.py +0 -813
  938. roam_code-13.9.0/tests/test_w607_ba_cmd_health_warnings_out_envelope.py +0 -622
  939. roam_code-13.9.0/tests/test_w607_co_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -940
  940. roam_code-13.9.0/tests/test_w607_do_cmd_graph_export_warnings_out_envelope.py +0 -997
  941. roam_code-13.9.0/tests/test_w693_suppression_cross_loader.py +0 -1073
  942. roam_code-13.9.0/tests/test_w805_ddd_cmd_constitution_empty_corpus.py +0 -417
  943. roam_code-13.9.0/tests/test_w805_eeeee_cmd_verify_shared_helper_silent_safe.py +0 -392
  944. roam_code-13.9.0/tests/test_w805_hhhhh_cmd_syntax_check_shared_helper_silent_safe.py +0 -464
  945. roam_code-13.9.0/tests/test_w805_jjjjj_cmd_suggest_reviewers_shared_helper_silent_safe.py +0 -468
  946. roam_code-13.9.0/tests/test_w805_kkkk_cmd_taint_cross_lang_scoring.py +0 -392
  947. roam_code-13.9.0/tests/test_w805_mmmmm_cmd_coupling_shared_helper_silent_safe.py +0 -511
  948. roam_code-13.9.0/tests/test_w805_oo_cmd_dogfood_empty_corpus.py +0 -467
  949. roam_code-13.9.0/tests/test_w805_yyyy_cmd_pr_replay_q17_harvester_coverage.py +0 -545
  950. roam_code-13.9.0/tests/test_w825_taint_empty_corpus.py +0 -162
  951. roam_code-13.9.0/tests/test_w844_card_hash_auto_rotate.py +0 -187
  952. roam_code-13.9.0/tests/test_w933_typeddict_boundary_audit.py +0 -343
  953. roam_code-13.9.0/tests/test_w_mcp_injection_marker_egress.py +0 -257
  954. roam_code-13.9.0/tests/test_w_mcp_mode_enforcement.py +0 -376
  955. roam_code-13.9.0/tests/test_w_mcp_receipt_hmac_link.py +0 -332
  956. roam_code-13.9.0/tests/test_w_mcp_redact_egress.py +0 -203
  957. roam_code-13.9.0/tests/test_w_mcp_shadow_mode.py +0 -468
  958. {roam_code-13.9.0 → roam_code-14.0.0}/LICENSE +0 -0
  959. {roam_code-13.9.0 → roam_code-14.0.0}/setup.cfg +0 -0
  960. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/__main__.py +0 -0
  961. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/_signature_utils.py +0 -0
  962. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/agents_md/__init__.py +0 -0
  963. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/agents_md/generator.py +0 -0
  964. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/analysis/__init__.py +0 -0
  965. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/analysis/framework_entrypoints.py +0 -0
  966. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/analysis/taint.py +0 -0
  967. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/api.py +0 -0
  968. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/ask/__init__.py +0 -0
  969. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/ask/classifier.py +0 -0
  970. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/ask/recipes.py +0 -0
  971. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/ask/runner.py +0 -0
  972. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/ask/workflow.py +0 -0
  973. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/attest/__init__.py +0 -0
  974. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/attest/emit_vsa.py +0 -0
  975. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/__init__.py +0 -0
  976. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/base.py +0 -0
  977. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/bridge_config.py +0 -0
  978. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/bridge_django.py +0 -0
  979. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/bridge_protobuf.py +0 -0
  980. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/bridge_rest_api.py +0 -0
  981. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/bridge_salesforce.py +0 -0
  982. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/bridge_template.py +0 -0
  983. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/bridges/registry.py +0 -0
  984. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/__init__.py +0 -0
  985. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/_shared.py +0 -0
  986. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/clones_cross_layer.py +0 -0
  987. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/fixes.py +0 -0
  988. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/js_idioms.py +0 -0
  989. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/parallel_hierarchy.py +0 -0
  990. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/python_idioms.py +0 -0
  991. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/registry.py +0 -0
  992. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/tasks.py +0 -0
  993. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/type_switch.py +0 -0
  994. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/catalog/versions.py +0 -0
  995. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/command_graph.py +0 -0
  996. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/__init__.py +0 -0
  997. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/_command_utils.py +0 -0
  998. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/_yaml_loader.py +0 -0
  999. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/actor_helpers.py +0 -0
  1000. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/batch_search_core.py +0 -0
  1001. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/boundary_helpers.py +0 -0
  1002. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_adrs.py +0 -0
  1003. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_affected.py +0 -0
  1004. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_affected_tests.py +0 -0
  1005. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_agent_context.py +0 -0
  1006. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_agent_export.py +0 -0
  1007. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_ai_ratio.py +0 -0
  1008. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_ai_readiness.py +0 -0
  1009. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_annotate.py +0 -0
  1010. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_api.py +0 -0
  1011. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_api_drift.py +0 -0
  1012. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_architecture_drift.py +0 -0
  1013. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_ask.py +0 -0
  1014. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_batch_search.py +0 -0
  1015. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_blame_reviewers.py +0 -0
  1016. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_breaking.py +0 -0
  1017. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_causal_graph.py +0 -0
  1018. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_changelog.py +0 -0
  1019. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_clean.py +0 -0
  1020. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_codeowners.py +0 -0
  1021. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_commands.py +0 -0
  1022. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_compare.py +0 -0
  1023. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_config.py +0 -0
  1024. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_congestion.py +0 -0
  1025. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_coupling.py +0 -0
  1026. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_dev_profile.py +0 -0
  1027. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_dict_consistency.py +0 -0
  1028. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_disambiguate.py +0 -0
  1029. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_doc_staleness.py +0 -0
  1030. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_docs_coverage.py +0 -0
  1031. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_docs_index.py +0 -0
  1032. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_dogfood_aggregate.py +0 -0
  1033. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_drift.py +0 -0
  1034. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_effects.py +0 -0
  1035. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_endpoints.py +0 -0
  1036. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_entry_points.py +0 -0
  1037. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_eval_retrieve.py +0 -0
  1038. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_exit_codes.py +0 -0
  1039. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_explain_command.py +0 -0
  1040. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_fn_coupling.py +0 -0
  1041. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_graph_stats.py +0 -0
  1042. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_guard.py +0 -0
  1043. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_guard_clean.py +0 -0
  1044. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_guard_diff.py +0 -0
  1045. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_guard_doctor.py +0 -0
  1046. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_guard_history.py +0 -0
  1047. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_guard_rules.py +0 -0
  1048. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_hover.py +0 -0
  1049. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_idempotency.py +0 -0
  1050. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_impact.py +0 -0
  1051. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_index_bundle.py +0 -0
  1052. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_index_stats.py +0 -0
  1053. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_intent.py +0 -0
  1054. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_intent_check.py +0 -0
  1055. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_layers.py +0 -0
  1056. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_lease.py +0 -0
  1057. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_lsp.py +0 -0
  1058. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_map.py +0 -0
  1059. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_metrics.py +0 -0
  1060. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_migration_safety.py +0 -0
  1061. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_mode.py +0 -0
  1062. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_module.py +0 -0
  1063. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_oracle.py +0 -0
  1064. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_owner.py +0 -0
  1065. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_path_coverage.py +0 -0
  1066. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_patterns.py +0 -0
  1067. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_plan.py +0 -0
  1068. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_plan_refactor.py +0 -0
  1069. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_plugins.py +0 -0
  1070. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_pr_diff.py +0 -0
  1071. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_pre_commit.py +0 -0
  1072. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_profile_import.py +0 -0
  1073. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_py_modern.py +0 -0
  1074. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_recipes.py +0 -0
  1075. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_repair_siblings.py +0 -0
  1076. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_replay.py +0 -0
  1077. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_report.py +0 -0
  1078. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_reset.py +0 -0
  1079. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_retrieve.py +0 -0
  1080. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_risk.py +0 -0
  1081. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_rules_suggest.py +0 -0
  1082. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_safe_delete.py +0 -0
  1083. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_safe_zones.py +0 -0
  1084. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_schema.py +0 -0
  1085. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_search_semantic.py +0 -0
  1086. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_semantic_diff.py +0 -0
  1087. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_sibling_patch.py +0 -0
  1088. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_side_effects.py +0 -0
  1089. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_simulate_departure.py +0 -0
  1090. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_sketch.py +0 -0
  1091. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_spectral.py +0 -0
  1092. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_split.py +0 -0
  1093. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_stats.py +0 -0
  1094. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_suggest_refactoring.py +0 -0
  1095. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_suggest_reviewers.py +0 -0
  1096. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_surface_gaps.py +0 -0
  1097. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_symbol.py +0 -0
  1098. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_test_gaps.py +0 -0
  1099. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_test_pyramid.py +0 -0
  1100. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_test_scaffold.py +0 -0
  1101. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_testmap.py +0 -0
  1102. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_timeline.py +0 -0
  1103. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_tx_boundaries.py +0 -0
  1104. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_verification_contract.py +0 -0
  1105. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_visualize.py +0 -0
  1106. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_vue_emits.py +0 -0
  1107. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_watch.py +0 -0
  1108. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_weather.py +0 -0
  1109. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_why.py +0 -0
  1110. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_why_fail.py +0 -0
  1111. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_why_slow.py +0 -0
  1112. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_workflow.py +0 -0
  1113. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_ws.py +0 -0
  1114. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/cmd_xlang.py +0 -0
  1115. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/codeowners_helpers.py +0 -0
  1116. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/context_helpers.py +0 -0
  1117. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/conventions_helper.py +0 -0
  1118. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/conventions_primitives.py +0 -0
  1119. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/finding_suppress.py +0 -0
  1120. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/gate_presets.py +0 -0
  1121. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/git_helpers.py +0 -0
  1122. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/graph_helpers.py +0 -0
  1123. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/grep_helpers.py +0 -0
  1124. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/next_steps.py +0 -0
  1125. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/php_source_scan.py +0 -0
  1126. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/pr_analyze/__init__.py +0 -0
  1127. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/smells_suppress.py +0 -0
  1128. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/stale_index.py +0 -0
  1129. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/stale_refs_anchors.py +0 -0
  1130. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/stale_refs_hints.py +0 -0
  1131. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/commands/suppression.py +0 -0
  1132. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/config.py +0 -0
  1133. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/coverage_reports.py +0 -0
  1134. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/critique/__init__.py +0 -0
  1135. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/critique/aggregator.py +0 -0
  1136. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/critique/checks.py +0 -0
  1137. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/db/__init__.py +0 -0
  1138. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/db/edge_kinds.py +0 -0
  1139. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/db/findings.py +0 -0
  1140. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/db/fs_detect.py +0 -0
  1141. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/db/queries.py +0 -0
  1142. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/eval/__init__.py +0 -0
  1143. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/eval/harness.py +0 -0
  1144. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/__init__.py +0 -0
  1145. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/_vocabulary.py +0 -0
  1146. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/actor_trust.py +0 -0
  1147. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/approval.py +0 -0
  1148. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/artifact.py +0 -0
  1149. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/banner.py +0 -0
  1150. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/change_evidence.py +0 -0
  1151. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/collector.py +0 -0
  1152. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/completeness_compat.py +0 -0
  1153. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/config_hashes.py +0 -0
  1154. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/config_hashes_producer.py +0 -0
  1155. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/consumer_fixtures/__init__.py +0 -0
  1156. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/consumer_fixtures/consumer_assured.json +0 -0
  1157. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/consumer_fixtures/consumer_minimal.json +0 -0
  1158. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/consumer_fixtures/consumer_stale.json +0 -0
  1159. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/control_mapping_vocab.py +0 -0
  1160. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/env_refs.py +0 -0
  1161. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/feedback.py +0 -0
  1162. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/github_reviews.py +0 -0
  1163. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/link.py +0 -0
  1164. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/mcp_receipt.py +0 -0
  1165. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/mcp_receipt_schema.py +0 -0
  1166. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/oscal.py +0 -0
  1167. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/policy.py +0 -0
  1168. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/provenance.py +0 -0
  1169. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/refs.py +0 -0
  1170. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/evidence/subject.py +0 -0
  1171. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/exit_codes.py +0 -0
  1172. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/fleet/__init__.py +0 -0
  1173. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/fleet/adapters.py +0 -0
  1174. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/fleet/manifest.py +0 -0
  1175. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/git_utils.py +0 -0
  1176. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/github_check.py +0 -0
  1177. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/__init__.py +0 -0
  1178. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/anomaly.py +0 -0
  1179. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/clone_detect.py +0 -0
  1180. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/clusters.py +0 -0
  1181. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/coupling_patterns.py +0 -0
  1182. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/cycles.py +0 -0
  1183. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/dark_matter.py +0 -0
  1184. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/fingerprint.py +0 -0
  1185. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/layers.py +0 -0
  1186. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/partition.py +0 -0
  1187. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/pathfinding.py +0 -0
  1188. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/propagation.py +0 -0
  1189. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/spectral_forecast.py +0 -0
  1190. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/stats.py +0 -0
  1191. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/graph/versioning.py +0 -0
  1192. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/guard_errors.py +0 -0
  1193. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/guard_rules.py +0 -0
  1194. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/__init__.py +0 -0
  1195. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/_containing_symbol.py +0 -0
  1196. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/complexity.py +0 -0
  1197. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/complexity_extract.py +0 -0
  1198. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/discovery.py +0 -0
  1199. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/django_post.py +0 -0
  1200. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/file_roles.py +0 -0
  1201. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/git_stats.py +0 -0
  1202. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/gitignore.py +0 -0
  1203. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/incremental.py +0 -0
  1204. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/laravel_post.py +0 -0
  1205. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/manifest.py +0 -0
  1206. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/pytest_fixtures.py +0 -0
  1207. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/registry_dispatch.py +0 -0
  1208. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/symbols.py +0 -0
  1209. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/index/test_conventions.py +0 -0
  1210. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/knowledge/__init__.py +0 -0
  1211. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/knowledge/knowledge_claim.py +0 -0
  1212. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/__init__.py +0 -0
  1213. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/apex_lang.py +0 -0
  1214. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/aura_lang.py +0 -0
  1215. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/c_lang.py +0 -0
  1216. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/csharp_lang.py +0 -0
  1217. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/dart_lang.py +0 -0
  1218. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/extractor_schema.py +0 -0
  1219. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/extractors/__init__.py +0 -0
  1220. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/extractors/kotlin.yaml +0 -0
  1221. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/generic_lang.py +0 -0
  1222. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/go_lang.py +0 -0
  1223. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/hcl_lang.py +0 -0
  1224. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/java_lang.py +0 -0
  1225. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/javascript_lang.py +0 -0
  1226. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/kotlin_lang.py +0 -0
  1227. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/php_lang.py +0 -0
  1228. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/ruby_lang.py +0 -0
  1229. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/rust_lang.py +0 -0
  1230. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/scala_lang.py +0 -0
  1231. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/sfxml_lang.py +0 -0
  1232. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/sql_lang.py +0 -0
  1233. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/swift_lang.py +0 -0
  1234. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/typescript_lang.py +0 -0
  1235. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/visualforce_lang.py +0 -0
  1236. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/languages/yaml_lang.py +0 -0
  1237. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/laws/__init__.py +0 -0
  1238. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/laws/serializer.py +0 -0
  1239. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/leases/__init__.py +0 -0
  1240. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/leases/store.py +0 -0
  1241. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/mcp_extras/adversarial_compress.py +0 -0
  1242. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/mcp_extras/completions.py +0 -0
  1243. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/mcp_extras/preflight.py +0 -0
  1244. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/mcp_extras/progress.py +0 -0
  1245. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/mcp_extras/session.py +0 -0
  1246. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/mcp_extras/watcher.py +0 -0
  1247. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/memory/__init__.py +0 -0
  1248. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/memory/store.py +0 -0
  1249. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/modes/__init__.py +0 -0
  1250. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/observability.py +0 -0
  1251. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/observability_opt.py +0 -0
  1252. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/__init__.py +0 -0
  1253. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/_severity.py +0 -0
  1254. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/confidence.py +0 -0
  1255. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/errors.py +0 -0
  1256. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/file_role_hints.py +0 -0
  1257. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/framework_filter.py +0 -0
  1258. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/mermaid.py +0 -0
  1259. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/project_shape.py +0 -0
  1260. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/risk.py +0 -0
  1261. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/output/structured_unknowns.py +0 -0
  1262. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/permits/__init__.py +0 -0
  1263. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/permits/store.py +0 -0
  1264. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/plan/__init__.py +0 -0
  1265. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/plan/calibration.py +0 -0
  1266. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/plan/envelope_introspect.py +0 -0
  1267. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/plan/import_audit.py +0 -0
  1268. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/plugins/__init__.py +0 -0
  1269. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/plugins/registry.py +0 -0
  1270. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/policy/__init__.py +0 -0
  1271. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/policy/graph_clauses.py +0 -0
  1272. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/policy/suppression_v2.py +0 -0
  1273. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/pr_bundle_primitives.py +0 -0
  1274. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/proof_bundle_render.py +0 -0
  1275. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/quality/ai_rot.py +0 -0
  1276. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/quality/cycles.py +0 -0
  1277. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/quality/god_components.py +0 -0
  1278. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/quality/health_band.py +0 -0
  1279. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/quality/public_symbols.py +0 -0
  1280. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/refactor/__init__.py +0 -0
  1281. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/refactor/codegen.py +0 -0
  1282. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/refactor/transforms.py +0 -0
  1283. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/resilience.py +0 -0
  1284. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/retrieve/__init__.py +0 -0
  1285. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/retrieve/learned_ranker.py +0 -0
  1286. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/retrieve/pipeline.py +0 -0
  1287. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/retrieve/repair_intent.py +0 -0
  1288. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/retrieve/rerank.py +0 -0
  1289. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/retrieve/seeds.py +0 -0
  1290. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/retrieve/semantic.py +0 -0
  1291. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/rules/__init__.py +0 -0
  1292. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/rules/builtin.py +0 -0
  1293. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/rules/dataflow.py +0 -0
  1294. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/rules/engine.py +0 -0
  1295. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runs/__init__.py +0 -0
  1296. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runs/signing.py +0 -0
  1297. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runtime/__init__.py +0 -0
  1298. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runtime/daemon.py +0 -0
  1299. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runtime/graph_backend.py +0 -0
  1300. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runtime/hotspots.py +0 -0
  1301. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runtime/lock_modes.py +0 -0
  1302. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runtime/lockmgr.py +0 -0
  1303. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runtime/profile_ingest.py +0 -0
  1304. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/runtime/trace_ingest.py +0 -0
  1305. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/search/__init__.py +0 -0
  1306. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/search/framework_packs.py +0 -0
  1307. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/search/onnx_embeddings.py +0 -0
  1308. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/search/tfidf.py +0 -0
  1309. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/__init__.py +0 -0
  1310. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/import_reachability.py +0 -0
  1311. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/sbom_reachability.py +0 -0
  1312. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/__init__.py +0 -0
  1313. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/api_error_leak.yaml +0 -0
  1314. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/java_deserialization.yaml +0 -0
  1315. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/java_fileupload_path_traversal.yaml +0 -0
  1316. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/java_sqli.yaml +0 -0
  1317. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/js_insecure_jwt_decode.yaml +0 -0
  1318. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/js_localstorage_secrets.yaml +0 -0
  1319. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/js_prototype_pollution.yaml +0 -0
  1320. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/js_ssrf.yaml +0 -0
  1321. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/js_xss.yaml +0 -0
  1322. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/php_command_injection.yaml +0 -0
  1323. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/php_laravel_open_redirect.yaml +0 -0
  1324. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/php_laravel_sqli.yaml +0 -0
  1325. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/php_laravel_xss.yaml +0 -0
  1326. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/php_path_traversal.yaml +0 -0
  1327. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/python_basic.yaml +0 -0
  1328. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/python_deserialization.yaml +0 -0
  1329. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/python_path_traversal.yaml +0 -0
  1330. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/python_socketio_remote_source.yaml +0 -0
  1331. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/python_sqli.yaml +0 -0
  1332. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/python_ssti.yaml +0 -0
  1333. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/python_urllib_open_redirect.yaml +0 -0
  1334. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/taint_rules/vue_v_html.yaml +0 -0
  1335. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/security/vuln_reach.py +0 -0
  1336. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/sibling_patch/__init__.py +0 -0
  1337. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/sibling_patch/repair_scorer.py +0 -0
  1338. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/templates/__init__.py +0 -0
  1339. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/templates/audit_report/__init__.py +0 -0
  1340. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/templates/audit_report/control-mapping.yaml +0 -0
  1341. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/templates/ci/__init__.py +0 -0
  1342. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/testing/__init__.py +0 -0
  1343. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/verification_contract.py +0 -0
  1344. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/workspace/__init__.py +0 -0
  1345. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/workspace/api_scanner.py +0 -0
  1346. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/workspace/config.py +0 -0
  1347. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/workspace/db.py +0 -0
  1348. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/__init__.py +0 -0
  1349. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/causal_graph.py +0 -0
  1350. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/fabricated_success.py +0 -0
  1351. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/idempotency.py +0 -0
  1352. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/none_eq_comparison.py +0 -0
  1353. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/redundant_boolean_return.py +0 -0
  1354. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/restore_loss.py +0 -0
  1355. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/return_in_finally.py +0 -0
  1356. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/self_comparison.py +0 -0
  1357. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/side_effects.py +0 -0
  1358. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/tx_boundaries.py +0 -0
  1359. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/unchecked_result.py +0 -0
  1360. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/unreachable_after_return.py +0 -0
  1361. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam/world_model/unreachable_except.py +0 -0
  1362. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam_code.egg-info/dependency_links.txt +0 -0
  1363. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam_code.egg-info/entry_points.txt +0 -0
  1364. {roam_code-13.9.0 → roam_code-14.0.0}/src/roam_code.egg-info/top_level.txt +0 -0
  1365. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_actor_refs_provenance.py +0 -0
  1366. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_actor_trust.py +0 -0
  1367. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_adrs.py +0 -0
  1368. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_adrs_helpers.py +0 -0
  1369. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_adversarial.py +0 -0
  1370. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_adversarial_pattern2_guard.py +0 -0
  1371. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_adversarial_runner.py +0 -0
  1372. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_affected.py +0 -0
  1373. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_agent_export.py +0 -0
  1374. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_agent_mode.py +0 -0
  1375. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_agent_opt.py +0 -0
  1376. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_agent_plan_context.py +0 -0
  1377. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_agent_score.py +0 -0
  1378. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ai_ratio.py +0 -0
  1379. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ai_readiness.py +0 -0
  1380. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ai_rot_reconciliation.py +0 -0
  1381. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_alerts_cmd.py +0 -0
  1382. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_algo_nested_lookup_dataflow.py +0 -0
  1383. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_algo_scoped_and_wired.py +0 -0
  1384. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_alias_deprecation.py +0 -0
  1385. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_always_on_budget_cap.py +0 -0
  1386. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_annotations.py +0 -0
  1387. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_anomaly.py +0 -0
  1388. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_api_changes.py +0 -0
  1389. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_api_drift.py +0 -0
  1390. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_approvals_provenance.py +0 -0
  1391. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_architecture_drift.py +0 -0
  1392. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ask.py +0 -0
  1393. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_atomic_io_consolidation.py +0 -0
  1394. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_attest_vsa.py +0 -0
  1395. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_audit_trail_aggregate.py +0 -0
  1396. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_audit_trail_conformance.py +0 -0
  1397. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_audit_trail_sequence.py +0 -0
  1398. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_audit_trail_verify.py +0 -0
  1399. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_auth_gaps.py +0 -0
  1400. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_auth_gaps_helper_indirection.py +0 -0
  1401. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_authority_refs_provenance.py +0 -0
  1402. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_authority_refs_source.py +0 -0
  1403. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_authority_run_ledger_corroboration.py +0 -0
  1404. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_b6_adversarial_compress.py +0 -0
  1405. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_b8_spectral_forecast.py +0 -0
  1406. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_backend_fixes_round2.py +0 -0
  1407. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_backend_fixes_round3.py +0 -0
  1408. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_bare_callers_loop8.py +0 -0
  1409. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_basic.py +0 -0
  1410. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_batch_search_core.py +0 -0
  1411. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_batch_search_paths.py +0 -0
  1412. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_bench_compile.py +0 -0
  1413. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_bench_ground_truth.py +0 -0
  1414. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_bisect.py +0 -0
  1415. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_blame_cache.py +0 -0
  1416. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_blame_reviewers.py +0 -0
  1417. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_bridge_django.py +0 -0
  1418. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_bridges_extended.py +0 -0
  1419. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_brief.py +0 -0
  1420. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_budget.py +0 -0
  1421. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_budget_phase2.py +0 -0
  1422. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_bus_factor.py +0 -0
  1423. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_bus_factor_excludes.py +0 -0
  1424. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_calibration_route_fallback.py +0 -0
  1425. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_calibration_warning_once.py +0 -0
  1426. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_caller_metric_definition.py +0 -0
  1427. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_canonical_constant_citations.py +0 -0
  1428. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_canonical_demo_fixture.py +0 -0
  1429. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_catalog_registry.py +0 -0
  1430. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_catalog_shared.py +0 -0
  1431. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_causal_graph.py +0 -0
  1432. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cga_dirty_hash_binding.py +0 -0
  1433. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cga_edge_digest_sort_stability.py +0 -0
  1434. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cga_fail_closed.py +0 -0
  1435. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_changed_files_none_guard.py +0 -0
  1436. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_changelog_phantoms.py +0 -0
  1437. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_check_rules.py +0 -0
  1438. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ci_auto_xdist.py +0 -0
  1439. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ci_gate_eval.py +0 -0
  1440. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ci_sarif_guard.py +0 -0
  1441. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_classifier_diagnostics_lockstep.py +0 -0
  1442. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cli_contract.py +0 -0
  1443. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cli_deprecated_commands_schema.py +0 -0
  1444. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_clones.py +0 -0
  1445. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_closure.py +0 -0
  1446. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cloud_sync_detection.py +0 -0
  1447. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_affected_helpers.py +0 -0
  1448. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_affected_tests_resolution.py +0 -0
  1449. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_affected_tests_sarif.py +0 -0
  1450. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_agent_context.py +0 -0
  1451. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_auth_gaps_sarif.py +0 -0
  1452. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_boundary.py +0 -0
  1453. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_budget_warnings_out.py +0 -0
  1454. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_bus_factor_sarif.py +0 -0
  1455. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_check_rules_warnings_out.py +0 -0
  1456. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_clones_sarif.py +0 -0
  1457. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_closure_resolution.py +0 -0
  1458. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_compiler_corpus.py +0 -0
  1459. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_compiler_health.py +0 -0
  1460. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_complexity_warnings_out.py +0 -0
  1461. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_context_resolution.py +0 -0
  1462. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_critique_sarif.py +0 -0
  1463. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_dark_matter_sarif.py +0 -0
  1464. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_dead_resolution.py +0 -0
  1465. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_delete_check_sarif.py +0 -0
  1466. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_diagnose_resolution.py +0 -0
  1467. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_dispatch_trace.py +0 -0
  1468. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_dogfood_aggregate_frontmatter.py +0 -0
  1469. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_duplicates_sarif.py +0 -0
  1470. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_envelope_diff.py +0 -0
  1471. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_fan_sarif.py +0 -0
  1472. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_findings.py +0 -0
  1473. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_fitness_warnings_out.py +0 -0
  1474. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_flag_dead_sarif.py +0 -0
  1475. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_flag_dead_warnings_out.py +0 -0
  1476. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_guard_resolution.py +0 -0
  1477. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_guard_unresolved.py +0 -0
  1478. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_health_warnings_out.py +0 -0
  1479. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_hotspots_resolution.py +0 -0
  1480. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_hotspots_sarif.py +0 -0
  1481. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_hover_resolution.py +0 -0
  1482. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_idempotency_exception_guard.py +0 -0
  1483. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_impact_resolution.py +0 -0
  1484. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_impact_sarif.py +0 -0
  1485. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_init_no_self_advisory.py +0 -0
  1486. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_invariants_resolution.py +0 -0
  1487. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_laws_sarif.py +0 -0
  1488. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_llm_smells_sarif.py +0 -0
  1489. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_magic_numbers.py +0 -0
  1490. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_magic_numbers_treesitter.py +0 -0
  1491. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_mcp_fast_startup.py +0 -0
  1492. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_mcp_status_cold_start.py +0 -0
  1493. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_metrics_resolution.py +0 -0
  1494. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_missing_index_sarif.py +0 -0
  1495. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_n1_sarif.py +0 -0
  1496. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_orphan_imports_sarif.py +0 -0
  1497. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_orphan_routes_sarif.py +0 -0
  1498. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_over_fetch_sarif.py +0 -0
  1499. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_partition_sarif.py +0 -0
  1500. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_permit_persist.py +0 -0
  1501. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_permit_persist_redteam.py +0 -0
  1502. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_plan_refactor_resolution.py +0 -0
  1503. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_plan_refactor_unresolved.py +0 -0
  1504. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_plan_resolution.py +0 -0
  1505. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_pr_bundle_resolution.py +0 -0
  1506. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_preflight_resolution.py +0 -0
  1507. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_pytest_fixtures_resolution.py +0 -0
  1508. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_relate_resolution.py +0 -0
  1509. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_safe_delete_resolution.py +0 -0
  1510. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_safe_zones_resolution.py +0 -0
  1511. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_smells_only_pushdown.py +0 -0
  1512. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_smells_resolution.py +0 -0
  1513. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_smells_sarif.py +0 -0
  1514. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_stats.py +0 -0
  1515. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_symbol_resolution.py +0 -0
  1516. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_telemetry.py +0 -0
  1517. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_test_hermeticity.py +0 -0
  1518. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_test_impact_sarif.py +0 -0
  1519. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_test_scaffold_resolution.py +0 -0
  1520. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_testmap_resolution.py +0 -0
  1521. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_timeline.py +0 -0
  1522. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_trace_resolution.py +0 -0
  1523. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_understand_tour_graph_errors.py +0 -0
  1524. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_visualize_resolution.py +0 -0
  1525. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cmd_why_resolution.py +0 -0
  1526. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_codeowners.py +0 -0
  1527. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_command_advice.py +0 -0
  1528. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_command_graph.py +0 -0
  1529. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_command_help_template.py +0 -0
  1530. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_command_utils.py +0 -0
  1531. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_commands_architecture.py +0 -0
  1532. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_commands_doc_synced.py +0 -0
  1533. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_commands_health.py +0 -0
  1534. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_commands_refactoring.py +0 -0
  1535. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compare_cli.py +0 -0
  1536. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_competitor_site_data.py +0 -0
  1537. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_bug_site_slice.py +0 -0
  1538. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_config_forbidden_paths.py +0 -0
  1539. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_consumers_callers.py +0 -0
  1540. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_declared_entry.py +0 -0
  1541. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_describe_what_for.py +0 -0
  1542. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_entity_grounding.py +0 -0
  1543. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_env_vars_probe.py +0 -0
  1544. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_file_history.py +0 -0
  1545. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_freeform_size_cap.py +0 -0
  1546. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_grep_option_injection.py +0 -0
  1547. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_grep_private_root.py +0 -0
  1548. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_import_audit_no_exec.py +0 -0
  1549. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_index_staleness.py +0 -0
  1550. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_inproc_lock.py +0 -0
  1551. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_intent_probes.py +0 -0
  1552. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_known_findings.py +0 -0
  1553. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_l10_batch_dedupe.py +0 -0
  1554. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_likely_files_rerank.py +0 -0
  1555. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_owner_pathspec.py +0 -0
  1556. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_parallel_impl_guard.py +0 -0
  1557. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_path_extraction.py +0 -0
  1558. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_repo_structure.py +0 -0
  1559. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_safe_argv.py +0 -0
  1560. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_search_semantic_dashdash.py +0 -0
  1561. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_self_contained.py +0 -0
  1562. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_session_meta.py +0 -0
  1563. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_structural_subtype_order.py +0 -0
  1564. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_symbol_rank_source_first.py +0 -0
  1565. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_synth_target_extraction.py +0 -0
  1566. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_top_n_vs_structural_precedence.py +0 -0
  1567. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_trace_leading_dash.py +0 -0
  1568. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w101_w106_probes.py +0 -0
  1569. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w132_w141.py +0 -0
  1570. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w142_w146.py +0 -0
  1571. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w151_w154.py +0 -0
  1572. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w155_w158.py +0 -0
  1573. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w160_w161.py +0 -0
  1574. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w28_compare.py +0 -0
  1575. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w35_user_probes.py +0 -0
  1576. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w36_more_probes.py +0 -0
  1577. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w468_persist_secret_skip.py +0 -0
  1578. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compile_w57_canonicalize_and_symcache.py +0 -0
  1579. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compiler_guard_bridge.py +0 -0
  1580. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_complete_prefix.py +0 -0
  1581. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_complexity_extract.py +0 -0
  1582. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compound_recipe_registry.py +0 -0
  1583. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_compound_registry.py +0 -0
  1584. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_comprehensive.py +0 -0
  1585. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_config.py +0 -0
  1586. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_config_state_uniform_vocabulary.py +0 -0
  1587. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_congestion.py +0 -0
  1588. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_context_propagation.py +0 -0
  1589. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_conventions_cmd.py +0 -0
  1590. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_conventions_consolidation.py +0 -0
  1591. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_corpus_routing_lock.py +0 -0
  1592. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_count_drift_hook.py +0 -0
  1593. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_coverage_gaps_cmd.py +0 -0
  1594. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_coverage_ingestion.py +0 -0
  1595. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_critique.py +0 -0
  1596. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cut.py +0 -0
  1597. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_cycle_break.py +0 -0
  1598. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dark_matter.py +0 -0
  1599. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dark_matter_helpers.py +0 -0
  1600. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dart.py +0 -0
  1601. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dashboard.py +0 -0
  1602. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dashboard_unique_signals.py +0 -0
  1603. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dataflow_dead.py +0 -0
  1604. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_db_tuning.py +0 -0
  1605. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_db_user_version.py +0 -0
  1606. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dead_aging.py +0 -0
  1607. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dead_mcp_seeding.py +0 -0
  1608. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dead_vue_consumers.py +0 -0
  1609. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_decorator_registry_parity.py +0 -0
  1610. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_defer_loading.py +0 -0
  1611. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_demo_fixtures.py +0 -0
  1612. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_demo_gif_asset.py +0 -0
  1613. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_deps_importer_list_envelope.py +0 -0
  1614. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_describe.py +0 -0
  1615. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_describe_stack_leak.py +0 -0
  1616. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_destructive_tools_derived.py +0 -0
  1617. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detail_flag.py +0 -0
  1618. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detail_flag_hints.py +0 -0
  1619. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detail_flag_regressions.py +0 -0
  1620. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detail_semantics.py +0 -0
  1621. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_file_scope.py +0 -0
  1622. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_precision.py +0 -0
  1623. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_precision_auth_gaps.py +0 -0
  1624. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_precision_llm_smells.py +0 -0
  1625. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_precision_missing_index.py +0 -0
  1626. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_precision_orphan_routes.py +0 -0
  1627. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_precision_over_fetch.py +0 -0
  1628. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_precision_secrets.py +0 -0
  1629. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_detector_registry.py +0 -0
  1630. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_deterministic_output.py +0 -0
  1631. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dev_profile.py +0 -0
  1632. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dev_profile_exception_handling.py +0 -0
  1633. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_diff_empty_state.py +0 -0
  1634. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_difficulty_scoring.py +0 -0
  1635. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dispatch_trace_counterfactual.py +0 -0
  1636. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_doc_link_anchors.py +0 -0
  1637. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_doc_no_phantom_cli.py +0 -0
  1638. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_doc_staleness.py +0 -0
  1639. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_docker_assets.py +0 -0
  1640. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_docs_coverage.py +0 -0
  1641. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_docs_index.py +0 -0
  1642. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_docs_site_quality.py +0 -0
  1643. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_doctor_breadcrumb.py +0 -0
  1644. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_doctor_ci_workflow_drift.py +0 -0
  1645. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_doctor_hints_in_errors.py +0 -0
  1646. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_doctor_refresh_install.py +0 -0
  1647. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_doctor_stale_signal_advisory.py +0 -0
  1648. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dogfood.py +0 -0
  1649. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_dogfood_aggregate.py +0 -0
  1650. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_drift.py +0 -0
  1651. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_drift_by_team.py +0 -0
  1652. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_duplicates.py +0 -0
  1653. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_duplicates_bounded.py +0 -0
  1654. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_effects_propagation.py +0 -0
  1655. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_empty_state_framing.py +0 -0
  1656. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_endpoints.py +0 -0
  1657. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_entry_points_cmd.py +0 -0
  1658. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_env_refs_helper.py +0 -0
  1659. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_envelope_diff_baseline.py +0 -0
  1660. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_envelope_introspect.py +0 -0
  1661. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_envelope_meta_roam_version.py +0 -0
  1662. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_envelope_section_budget.py +0 -0
  1663. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_envelope_size_budget.py +0 -0
  1664. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_eval_retrieve.py +0 -0
  1665. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_banner.py +0 -0
  1666. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_collector.py +0 -0
  1667. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_consumer_fixtures.py +0 -0
  1668. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_diff_cmd.py +0 -0
  1669. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_doctor.py +0 -0
  1670. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_feedback.py +0 -0
  1671. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_limitations.py +0 -0
  1672. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_oscal.py +0 -0
  1673. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_oscal_ar.py +0 -0
  1674. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_packet_size.py +0 -0
  1675. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_policy.py +0 -0
  1676. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_profiles.py +0 -0
  1677. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_provenance.py +0 -0
  1678. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_redaction_snapshots.py +0 -0
  1679. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_schema_migration.py +0 -0
  1680. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_evidence_stale_producer.py +0 -0
  1681. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_exclude_patterns.py +0 -0
  1682. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_exit_codes.py +0 -0
  1683. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_extension_constant_consolidation.py +0 -0
  1684. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_extension_versioning.py +0 -0
  1685. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_extract_mode_usage.py +0 -0
  1686. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_extract_regen_signal.py +0 -0
  1687. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_extract_typed.py +0 -0
  1688. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_extractor_grammar_drift.py +0 -0
  1689. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_extractor_smoke.py +0 -0
  1690. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fabricated_success.py +0 -0
  1691. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fallback_contracts.py +0 -0
  1692. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fan_test_prod_split.py +0 -0
  1693. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fetch_handle_chunked.py +0 -0
  1694. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_file_roles.py +0 -0
  1695. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_find_symbol_tier_stamp.py +0 -0
  1696. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_finding_suppress.py +0 -0
  1697. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_audit_trail_conformance.py +0 -0
  1698. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_audit_trail_verify.py +0 -0
  1699. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_auth_gaps.py +0 -0
  1700. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_bus_factor.py +0 -0
  1701. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_canonical_detectors.py +0 -0
  1702. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_clones.py +0 -0
  1703. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_complexity.py +0 -0
  1704. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_conventions.py +0 -0
  1705. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_critique.py +0 -0
  1706. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_dark_matter.py +0 -0
  1707. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_dead.py +0 -0
  1708. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_detector_count_drift.py +0 -0
  1709. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_doctor.py +0 -0
  1710. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_duplicates.py +0 -0
  1711. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_fan.py +0 -0
  1712. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_fingerprint.py +0 -0
  1713. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_health.py +0 -0
  1714. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_hotspots.py +0 -0
  1715. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_laws.py +0 -0
  1716. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_missing_index.py +0 -0
  1717. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_n1.py +0 -0
  1718. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_orphan_imports.py +0 -0
  1719. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_over_fetch.py +0 -0
  1720. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_pr_risk.py +0 -0
  1721. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_registry.py +0 -0
  1722. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_smells.py +0 -0
  1723. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_taint.py +0 -0
  1724. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_vibe_check.py +0 -0
  1725. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_findings_vulns.py +0 -0
  1726. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fingerprint.py +0 -0
  1727. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_first_error_message_preserved.py +0 -0
  1728. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fixes.py +0 -0
  1729. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_flag_dead.py +0 -0
  1730. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fleet.py +0 -0
  1731. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fn_coupling.py +0 -0
  1732. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_formatter_agent_contract.py +0 -0
  1733. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_formatter_preserved_list_fields.py +0 -0
  1734. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_formatters.py +0 -0
  1735. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_foxpro.py +0 -0
  1736. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_framework_detection.py +0 -0
  1737. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_framework_pack_language_gating.py +0 -0
  1738. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_freeform_history_literal_pathspec.py +0 -0
  1739. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fts5_docstring.py +0 -0
  1740. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_fts5_incremental.py +0 -0
  1741. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_gate_presets.py +0 -0
  1742. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_git_cochange_literal_pathspec.py +0 -0
  1743. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_git_helpers.py +0 -0
  1744. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_git_stats_skip.py +0 -0
  1745. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_git_utils.py +0 -0
  1746. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_github_reviews_parser.py +0 -0
  1747. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_global_ci_mode.py +0 -0
  1748. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_god_components_kind_guard.py +0 -0
  1749. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_graph_layers.py +0 -0
  1750. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_graph_versioning.py +0 -0
  1751. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_grep_integration.py +0 -0
  1752. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_grep_performance.py +0 -0
  1753. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_grep_xlang.py +0 -0
  1754. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard.py +0 -0
  1755. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard_clean.py +0 -0
  1756. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard_diff.py +0 -0
  1757. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard_doctor.py +0 -0
  1758. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard_errors.py +0 -0
  1759. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard_history.py +0 -0
  1760. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard_init.py +0 -0
  1761. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard_rules.py +0 -0
  1762. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_guard_rules_cli.py +0 -0
  1763. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_health_betweenness_percentiles.py +0 -0
  1764. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_health_gate.py +0 -0
  1765. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_hooks.py +0 -0
  1766. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_hostile_markdown_inputs.py +0 -0
  1767. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_hotspots.py +0 -0
  1768. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_hover.py +0 -0
  1769. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_idempotency.py +0 -0
  1770. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_idiom_precision.py +0 -0
  1771. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ignore_findings_warnings_out.py +0 -0
  1772. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_impact_bounded.py +0 -0
  1773. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_import_reachability.py +0 -0
  1774. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_index_bundle.py +0 -0
  1775. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_index_light_mode.py +0 -0
  1776. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_index_step_manifest.py +0 -0
  1777. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_init_no_unsolicited_writes.py +0 -0
  1778. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_install_check.py +0 -0
  1779. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_intent.py +0 -0
  1780. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_invariants.py +0 -0
  1781. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_iri_migration.py +0 -0
  1782. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_is_excluded_path_none_guard.py +0 -0
  1783. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_is_test_path.py +0 -0
  1784. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_js_idioms.py +0 -0
  1785. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_json_error_envelope.py +0 -0
  1786. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_json_usage_path_envelope.py +0 -0
  1787. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_kotlin_swift_extractors.py +0 -0
  1788. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_language_corpus.py +0 -0
  1789. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_languages.py +0 -0
  1790. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_laravel_dead_idioms.py +0 -0
  1791. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_laravel_fp_fixes.py +0 -0
  1792. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_law4_anchor_counts.py +0 -0
  1793. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_law4_anchoring.py +0 -0
  1794. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_law4_residual.py +0 -0
  1795. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_law4_stragglers.py +0 -0
  1796. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_laws_mining.py +0 -0
  1797. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_lease_system.py +0 -0
  1798. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ledger_signing.py +0 -0
  1799. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_library_api.py +0 -0
  1800. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_llm_smells.py +0 -0
  1801. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_load_suppressions_warnings_out.py +0 -0
  1802. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_load_yaml_with_warnings.py +0 -0
  1803. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_loop_performance.py +0 -0
  1804. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_loud_fallback_no_new_silent_except.py +0 -0
  1805. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_main_module_entrypoint.py +0 -0
  1806. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_manifest.py +0 -0
  1807. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_math.py +0 -0
  1808. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_math_tips.py +0 -0
  1809. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_batch_search_complete_parity.py +0 -0
  1810. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_cold_start_guard.py +0 -0
  1811. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_compat_profile.py +0 -0
  1812. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_contract_enforcement.py +0 -0
  1813. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_decision_receipt.py +0 -0
  1814. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_error_envelope_status.py +0 -0
  1815. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_extras.py +0 -0
  1816. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_guard_wrappers_dispatch.py +0 -0
  1817. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_handle_off.py +0 -0
  1818. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_json_parse_defense.py +0 -0
  1819. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_outputschema_wave_b1.py +0 -0
  1820. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_outputschema_wave_b2.py +0 -0
  1821. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_outputschema_wave_b3.py +0 -0
  1822. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_outputschema_wave_b4.py +0 -0
  1823. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_outputschema_wave_b5.py +0 -0
  1824. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_outputschema_wave_b5b.py +0 -0
  1825. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_param_names.py +0 -0
  1826. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_pattern1_variant_b.py +0 -0
  1827. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_receipt_json_schema.py +0 -0
  1828. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_receipt_schema_in_wheel.py +0 -0
  1829. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_retrieve_leading_dash.py +0 -0
  1830. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_tool_metadata_completeness.py +0 -0
  1831. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_tool_side_effects.py +0 -0
  1832. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_tool_versioning.py +0 -0
  1833. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mcp_wrapper_coverage.py +0 -0
  1834. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_memory_substrate.py +0 -0
  1835. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mermaid.py +0 -0
  1836. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_metric_definition_sidecars.py +0 -0
  1837. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_metrics_cmd.py +0 -0
  1838. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_metrics_push.py +0 -0
  1839. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_migration_plan.py +0 -0
  1840. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_migration_safety.py +0 -0
  1841. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_minimap.py +0 -0
  1842. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_missing_index.py +0 -0
  1843. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_missing_index_unconditional.py +0 -0
  1844. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_missing_index_unconditional_first.py +0 -0
  1845. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mode_bootstrap_allowlist.py +0 -0
  1846. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mutate.py +0 -0
  1847. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_mutate_apply.py +0 -0
  1848. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_n1.py +0 -0
  1849. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_n1_fixes.py +0 -0
  1850. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_naming_convention_sampling.py +0 -0
  1851. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_next_router.py +0 -0
  1852. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_next_steps.py +0 -0
  1853. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_none_eq_comparison.py +0 -0
  1854. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_observability_opt.py +0 -0
  1855. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_observability_opt_harvester_reuse.py +0 -0
  1856. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_onboard.py +0 -0
  1857. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_optional_imports_guarded.py +0 -0
  1858. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_oracle.py +0 -0
  1859. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_oracle_batch_resilience.py +0 -0
  1860. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_orchestrate.py +0 -0
  1861. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_orphan_imports_filters.py +0 -0
  1862. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_orphan_routes.py +0 -0
  1863. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_oss_bench_harness.py +0 -0
  1864. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_over_fetch.py +0 -0
  1865. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_over_fetch_three_state.py +0 -0
  1866. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_owner_batched_in.py +0 -0
  1867. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_owner_path_not_found.py +0 -0
  1868. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_package_data_wheel_drift.py +0 -0
  1869. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pagerank_scipy_core.py +0 -0
  1870. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pagerank_truncation.py +0 -0
  1871. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_parallel_analyzers.py +0 -0
  1872. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_parallel_impl_guard.py +0 -0
  1873. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_parallel_probe_dispatch.py +0 -0
  1874. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_partition.py +0 -0
  1875. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_path_coverage.py +0 -0
  1876. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_path_coverage_classify.py +0 -0
  1877. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pattern2_silent_success_disclosure.py +0 -0
  1878. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pattern3c_reconciliation.py +0 -0
  1879. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pattern_1_variant_d_resolver_audit.py +0 -0
  1880. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_patterns_cmd.py +0 -0
  1881. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_per_finding_suppressions_warnings_out.py +0 -0
  1882. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_performance.py +0 -0
  1883. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_personalized_pagerank.py +0 -0
  1884. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_phase0_commands.py +0 -0
  1885. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_php_class_constant_refs.py +0 -0
  1886. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_php_source_scan.py +0 -0
  1887. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_plan.py +0 -0
  1888. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_plan_artifact_selector.py +0 -0
  1889. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_plugin_substrate.py +0 -0
  1890. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_policy_decisions_provenance.py +0 -0
  1891. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_policy_graph_clauses.py +0 -0
  1892. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_analyze.py +0 -0
  1893. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_analyze_cache.py +0 -0
  1894. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_analyze_diff_failure_propagation.py +0 -0
  1895. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_analyze_edge_cases.py +0 -0
  1896. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_analyze_helpers.py +0 -0
  1897. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_analyze_v2_signals.py +0 -0
  1898. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_bundle.py +0 -0
  1899. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_bundle_causal_diff.py +0 -0
  1900. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_bundle_nonexistent_symbol.py +0 -0
  1901. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_bundle_r28_integration.py +0 -0
  1902. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_comment_render.py +0 -0
  1903. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_comment_script.py +0 -0
  1904. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_diff.py +0 -0
  1905. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_prep_pattern2_guard.py +0 -0
  1906. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_replay_github_reviews.py +0 -0
  1907. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pr_risk_author.py +0 -0
  1908. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_preflight_fitness_sibling_names.py +0 -0
  1909. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_probe_persist_batch.py +0 -0
  1910. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_producer_collector_contracts.py +0 -0
  1911. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_profile_import.py +0 -0
  1912. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_progress.py +0 -0
  1913. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_properties.py +0 -0
  1914. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_pytest_fixtures.py +0 -0
  1915. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_python_extractor_docstring_safety.py +0 -0
  1916. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_python_extractor_v2.py +0 -0
  1917. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_python_pivot.py +0 -0
  1918. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_quality_dashboard.py +0 -0
  1919. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_reachability_triage.py +0 -0
  1920. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_realworld_feedback.py +0 -0
  1921. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_redundant_boolean_return.py +0 -0
  1922. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_refactoring_intelligence.py +0 -0
  1923. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_registered_tool_side_effects.py +0 -0
  1924. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_registry_dispatch.py +0 -0
  1925. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_regression_fp_corpus.py +0 -0
  1926. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_relate.py +0 -0
  1927. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_relations.py +0 -0
  1928. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rename_edge_recovery.py +0 -0
  1929. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_repair_intent_frozen.py +0 -0
  1930. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_repair_siblings_lens.py +0 -0
  1931. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_replay.py +0 -0
  1932. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_repo_root_helper.py +0 -0
  1933. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_report.py +0 -0
  1934. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_reset_clean.py +0 -0
  1935. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_resilience.py +0 -0
  1936. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_resolution_disclosure.py +0 -0
  1937. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_resolve.py +0 -0
  1938. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_resolve_file_symbols_substrate.py +0 -0
  1939. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_resolver_import_target_preference.py +0 -0
  1940. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_response_volume_handles.py +0 -0
  1941. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_restore_loss.py +0 -0
  1942. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_retrieve.py +0 -0
  1943. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_retrieve_error_hardening.py +0 -0
  1944. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_retrieve_seeds.py +0 -0
  1945. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_return_in_finally.py +0 -0
  1946. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_risk.py +0 -0
  1947. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_roam_diff_schema_validation.py +0 -0
  1948. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_roam_full_coupling.py +0 -0
  1949. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ruby.py +0 -0
  1950. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rule_profiles.py +0 -0
  1951. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rules.py +0 -0
  1952. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rules_ast_match.py +0 -0
  1953. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rules_community_pack.py +0 -0
  1954. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rules_dataflow.py +0 -0
  1955. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rules_engine_warnings_out.py +0 -0
  1956. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rules_suggest.py +0 -0
  1957. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_rules_symbol_requirements.py +0 -0
  1958. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_runs_auto_log.py +0 -0
  1959. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_runs_end_with_bundle.py +0 -0
  1960. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_runtime.py +0 -0
  1961. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_runtime_score.py +0 -0
  1962. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_salesforce.py +0 -0
  1963. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_consumer_list.py +0 -0
  1964. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_consumers_schema.py +0 -0
  1965. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_disclosure_coverage.py +0 -0
  1966. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_enrichment.py +0 -0
  1967. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_runtime_notifications.py +0 -0
  1968. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_runtime_overrides_followup.py +0 -0
  1969. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_runtime_overrides_helper.py +0 -0
  1970. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_suppressions_warnings_out.py +0 -0
  1971. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sarif_tag_coverage.py +0 -0
  1972. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sbom.py +0 -0
  1973. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sbom_fp_categories.py +0 -0
  1974. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_scala.py +0 -0
  1975. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_schema_versioning.py +0 -0
  1976. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_search_enrichment_loop3.py +0 -0
  1977. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_search_explain.py +0 -0
  1978. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_secrets.py +0 -0
  1979. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_security_redact.py +0 -0
  1980. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_self_comparison.py +0 -0
  1981. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_semantic_diff.py +0 -0
  1982. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_semantic_onnx.py +0 -0
  1983. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_semantic_search.py +0 -0
  1984. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_side_effects.py +0 -0
  1985. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_side_effects_typescript.py +0 -0
  1986. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_signature_utils.py +0 -0
  1987. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_simulate.py +0 -0
  1988. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_simulate_departure.py +0 -0
  1989. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_situation_compounds.py +0 -0
  1990. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sketch.py +0 -0
  1991. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_skill_generate.py +0 -0
  1992. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_smells_confidence_mapping_parity.py +0 -0
  1993. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_smells_detector_count_drift.py +0 -0
  1994. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_smoke.py +0 -0
  1995. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sna_metrics.py +0 -0
  1996. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_spectral.py +0 -0
  1997. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_spectral_bounded.py +0 -0
  1998. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_split_cmd.py +0 -0
  1999. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sql.py +0 -0
  2000. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_sql_like_escape_discipline.py +0 -0
  2001. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_staged_rollout_readiness.py +0 -0
  2002. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_stale_db_dir_error.py +0 -0
  2003. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_stale_refs_corruption.py +0 -0
  2004. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_stale_refs_dogfood_fixes.py +0 -0
  2005. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_state_family_aliases.py +0 -0
  2006. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_stranger_precision_harness.py +0 -0
  2007. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_strip_list_payloads_preserves_warnings_out.py +0 -0
  2008. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_structured_unknown_filter.py +0 -0
  2009. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_suggest_refactoring.py +0 -0
  2010. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_suggest_reviewers.py +0 -0
  2011. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_supply_chain.py +0 -0
  2012. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_suppression_adversarial.py +0 -0
  2013. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_suppression_append_only.py +0 -0
  2014. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_suppression_v2.py +0 -0
  2015. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_suppressions_unified_schema.py +0 -0
  2016. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_surface_consistency.py +0 -0
  2017. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_surface_counts.py +0 -0
  2018. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_surface_gaps.py +0 -0
  2019. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_surface_top_level_keys.py +0 -0
  2020. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_synergy_agents_md_mode.py +0 -0
  2021. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_synergy_pr_bundle_mode.py +0 -0
  2022. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_synergy_runs_mode.py +0 -0
  2023. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint.py +0 -0
  2024. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_analysis.py +0 -0
  2025. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_classifier.py +0 -0
  2026. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_intraprocedural.py +0 -0
  2027. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_java_deserialization.py +0 -0
  2028. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_java_sqli.py +0 -0
  2029. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_owasp_top10.py +0 -0
  2030. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_php_laravel.py +0 -0
  2031. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_rule_hygiene.py +0 -0
  2032. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_taint_ssti.py +0 -0
  2033. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_task_optional_tools_derived.py +0 -0
  2034. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_task_required_tools_derived.py +0 -0
  2035. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tenant_scope.py +0 -0
  2036. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_test_conventions.py +0 -0
  2037. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_test_detection_consolidation.py +0 -0
  2038. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_test_gaps.py +0 -0
  2039. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_test_scaffold.py +0 -0
  2040. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_testmap.py +0 -0
  2041. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_metadata_completeness.py +0 -0
  2042. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_metadata_coverage.py +0 -0
  2043. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_metadata_flags.py +0 -0
  2044. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_metadata_side_effect_coverage.py +0 -0
  2045. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_metadata_side_effects.py +0 -0
  2046. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_metadata_side_effects_complete.py +0 -0
  2047. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_metadata_side_effects_coverage.py +0 -0
  2048. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_side_effect_metadata.py +0 -0
  2049. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_side_effect_metadata_coverage.py +0 -0
  2050. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tool_side_effect_metadata_declared.py +0 -0
  2051. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_top_flag_consistency.py +0 -0
  2052. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_top_n_vs_structural_arbiter.py +0 -0
  2053. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tour_cmd.py +0 -0
  2054. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_trace_bounded.py +0 -0
  2055. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_trends.py +0 -0
  2056. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_trends_cohort.py +0 -0
  2057. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_triage.py +0 -0
  2058. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_tx_boundaries.py +0 -0
  2059. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_unchecked_result.py +0 -0
  2060. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_unreachable_after_return.py +0 -0
  2061. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_unreachable_except.py +0 -0
  2062. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_uses_call_line_loop5.py +0 -0
  2063. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_uses_cmd.py +0 -0
  2064. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_uses_framework_entrypoint.py +0 -0
  2065. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1215_passes.py +0 -0
  2066. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1216_passes.py +0 -0
  2067. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1216_passes_41_50.py +0 -0
  2068. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1216_passes_51_60.py +0 -0
  2069. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1217_passes_61_80.py +0 -0
  2070. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1218_passes_81_90.py +0 -0
  2071. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1219_passes_91_100.py +0 -0
  2072. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1220_passes_101_110.py +0 -0
  2073. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1221_query_timeout.py +0 -0
  2074. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v1221_untested_commands.py +0 -0
  2075. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v12_2.py +0 -0
  2076. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v2_edge_cases.py +0 -0
  2077. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v6_features.py +0 -0
  2078. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v71_features.py +0 -0
  2079. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v7_features.py +0 -0
  2080. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_v82_features.py +0 -0
  2081. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_validate_plan.py +0 -0
  2082. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_baseline.py +0 -0
  2083. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_changed_lines.py +0 -0
  2084. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_claims.py +0 -0
  2085. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_command_examples.py +0 -0
  2086. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_command_mirrors.py +0 -0
  2087. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_deep.py +0 -0
  2088. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_dir_target.py +0 -0
  2089. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_dogfood_fps.py +0 -0
  2090. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_dup_precision.py +0 -0
  2091. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_imports.py +0 -0
  2092. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_mode.py +0 -0
  2093. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_noqa.py +0 -0
  2094. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_planted_recall.py +0 -0
  2095. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_self_dogfood_lock.py +0 -0
  2096. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_verify_summary.py +0 -0
  2097. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_version_stamps.py +0 -0
  2098. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vibe_check.py +0 -0
  2099. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vibe_check_framework_hooks.py +0 -0
  2100. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_visualize.py +0 -0
  2101. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vocabulary_drift_w198.py +0 -0
  2102. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vue_emits.py +0 -0
  2103. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vue_sfc_imports.py +0 -0
  2104. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vue_vitest_detection.py +0 -0
  2105. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vuln.py +0 -0
  2106. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vuln_match_import_sites.py +0 -0
  2107. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vuln_store_ingest.py +0 -0
  2108. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_vulns_cmd.py +0 -0
  2109. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_followup_b_adversarial_severity.py +0 -0
  2110. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_followup_c_severity_parity.py +0 -0
  2111. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_followup_d_severity_parity.py +0 -0
  2112. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_followup_f_api_changes_severity.py +0 -0
  2113. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_followup_g_severity_shortcode_parity.py +0 -0
  2114. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_followup_h_api_drift_severity.py +0 -0
  2115. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_followup_j_laws_confidence_vocab.py +0 -0
  2116. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_smells_severity_5tier.py +0 -0
  2117. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1005_smells_severity_parity.py +0 -0
  2118. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1030_followup_b_health_load_status.py +0 -0
  2119. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1030_followup_c_check_rules_load_status.py +0 -0
  2120. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1030_followup_d_fitness_load_status.py +0 -0
  2121. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1030_followup_f_rules_load_status.py +0 -0
  2122. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1030_load_status.py +0 -0
  2123. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1038_extract_typed_integration.py +0 -0
  2124. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1057_math_unknown_detectors.py +0 -0
  2125. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1060_sarif_runtime_notifications_extension.py +0 -0
  2126. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1068_search_unknown_kind.py +0 -0
  2127. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1069_endpoints_unknown_framework.py +0 -0
  2128. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1070_test_scaffold_unknown_framework.py +0 -0
  2129. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1074_workflow_explain_unknown.py +0 -0
  2130. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1075_endpoints_unknown_method.py +0 -0
  2131. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1079_oracle_unknown.py +0 -0
  2132. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1083_followup_2_cli_difflib.py +0 -0
  2133. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1083_followup_3_multi_value.py +0 -0
  2134. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1083_followup_adopters.py +0 -0
  2135. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1083_to_summary_payload.py +0 -0
  2136. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1084_denominator_clamp.py +0 -0
  2137. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1085_fingerprint_cap.py +0 -0
  2138. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1086_cmd_cut_cap.py +0 -0
  2139. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1088_overall_risk_case_insensitive.py +0 -0
  2140. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1100_schema_violation_partial_success.py +0 -0
  2141. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1101_list_counts_symmetric.py +0 -0
  2142. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1102_preserved_truncations_symmetric.py +0 -0
  2143. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1111_click_argument_name_lint.py +0 -0
  2144. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1121_click_argument_file_lint.py +0 -0
  2145. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1121_click_argument_input_path_lint.py +0 -0
  2146. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1121_click_argument_pattern_lint.py +0 -0
  2147. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1121_click_argument_target_lint.py +0 -0
  2148. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1136_click_option_input_path_dest_lint.py +0 -0
  2149. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1142_followup_b_cap_disclosure.py +0 -0
  2150. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1142_followup_cap_disclosure.py +0 -0
  2151. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1142_limit_top_aliases.py +0 -0
  2152. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1253_hash_drift.py +0 -0
  2153. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1254_evidence_stale_consumer.py +0 -0
  2154. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1255_config_hashes.py +0 -0
  2155. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1261_vsa_stale_consumer.py +0 -0
  2156. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1262_evidence_doctor_stale_banner.py +0 -0
  2157. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1266_completeness_compat.py +0 -0
  2158. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1272_unresolved_exit_convention.py +0 -0
  2159. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1279_producer_integration.py +0 -0
  2160. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w12_dimension_real_names.py +0 -0
  2161. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w1310_tier_discard_preflight_plan.py +0 -0
  2162. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w201_prefetched_injection_boundary.py +0 -0
  2163. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w211_refs_extensions.py +0 -0
  2164. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w251_ci_env_detection.py +0 -0
  2165. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w350_drive_by_oscal_authority.py +0 -0
  2166. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w365_followup_2_capability_invariants.py +0 -0
  2167. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w365_followup_capability_side_effect.py +0 -0
  2168. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w420_no_runtime_count_headline.py +0 -0
  2169. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w421_regex_toggle.py +0 -0
  2170. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w43_deps_multi.py +0 -0
  2171. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w444_mcp_tool_names_no_dedupe.py +0 -0
  2172. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w484_templates_ci_reachable.py +0 -0
  2173. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w489_a_taint_qualified_only_lint.py +0 -0
  2174. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w512_edge_kinds_drift.py +0 -0
  2175. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w543_edge_kind_canonical.py +0 -0
  2176. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w543_followup_c_migration.py +0 -0
  2177. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w543_followup_migration.py +0 -0
  2178. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w547_severity_drift.py +0 -0
  2179. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w588_fragile_path_drift.py +0 -0
  2180. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w589_release_lease_warnings_out.py +0 -0
  2181. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w590_lease_policy_no_project_root.py +0 -0
  2182. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w591_permit_policy_no_project_root.py +0 -0
  2183. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w592_gc_expired_leases_warnings_out.py +0 -0
  2184. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w593_permits_silent_fails.py +0 -0
  2185. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w595_read_permit_warnings_out.py +0 -0
  2186. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w596_read_run_meta_warnings_out.py +0 -0
  2187. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w597_daemon_read_warnings_out.py +0 -0
  2188. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w598_pr_analyze_cache_warnings_out.py +0 -0
  2189. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w599_trace_ingest_warnings_out.py +0 -0
  2190. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w600_config_hashes_warnings_out.py +0 -0
  2191. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w601_signing_warnings_out.py +0 -0
  2192. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w602_metrics_push_warnings_out.py +0 -0
  2193. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_a_cmd_search_semantic_warnings_out_envelope.py +0 -0
  2194. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_aa_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  2195. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ab_cmd_pr_risk_warnings_out_envelope.py +0 -0
  2196. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ac_cmd_pr_prep_warnings_out_envelope.py +0 -0
  2197. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ad_cmd_attest_warnings_out_envelope.py +0 -0
  2198. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ae_cmd_pr_bundle_warnings_out_envelope.py +0 -0
  2199. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_af_cmd_cga_warnings_out_envelope.py +0 -0
  2200. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ag_cmd_for_refactor_warnings_out_envelope.py +0 -0
  2201. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ah_cmd_pr_replay_warnings_out_envelope.py +0 -0
  2202. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ai_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  2203. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_aj_for_security_review_warnings_out_envelope.py +0 -0
  2204. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ak_cmd_supply_chain_warnings_out_envelope.py +0 -0
  2205. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_al_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -0
  2206. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_am_cmd_sbom_warnings_out_envelope.py +0 -0
  2207. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_an_cmd_postmortem_warnings_out_envelope.py +0 -0
  2208. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ao_for_bug_fix_warnings_out_envelope.py +0 -0
  2209. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ap_cmd_audit_trail_export_warnings_out_envelope.py +0 -0
  2210. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_aq_cmd_vulns_warnings_out_envelope.py +0 -0
  2211. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ar_for_new_feature_warnings_out_envelope.py +0 -0
  2212. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_as_cmd_runs_warnings_out_envelope.py +0 -0
  2213. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_at_cmd_evidence_doctor_warnings_out_envelope.py +0 -0
  2214. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_au_cmd_vuln_reach_warnings_out_envelope.py +0 -0
  2215. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_av_cmd_dogfood_warnings_out_envelope.py +0 -0
  2216. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_aw_cmd_preflight_warnings_out_envelope.py +0 -0
  2217. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ax_cmd_evidence_diff_warnings_out_envelope.py +0 -0
  2218. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ay_cmd_taint_warnings_out_envelope.py +0 -0
  2219. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_az_cmd_minimap_warnings_out_envelope.py +0 -0
  2220. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_b_cmd_retrieve_warnings_out_envelope.py +0 -0
  2221. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bb_cmd_impact_warnings_out_envelope.py +0 -0
  2222. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bc_cmd_understand_warnings_out_envelope.py +0 -0
  2223. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bd_cmd_capsule_warnings_out_envelope.py +0 -0
  2224. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_be_cmd_doctor_warnings_out_envelope.py +0 -0
  2225. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bf_cmd_context_warnings_out_envelope.py +0 -0
  2226. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bg_cmd_debt_warnings_out_envelope.py +0 -0
  2227. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bh_cmd_diagnose_warnings_out_envelope.py +0 -0
  2228. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bi_cmd_retrieve_warnings_out_envelope.py +0 -0
  2229. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bj_cmd_complexity_warnings_out_envelope.py +0 -0
  2230. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bk_cmd_dark_matter_warnings_out_envelope.py +0 -0
  2231. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bl_cmd_critique_warnings_out_envelope.py +0 -0
  2232. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bm_cmd_duplicates_warnings_out_envelope.py +0 -0
  2233. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bn_cmd_smells_warnings_out_envelope.py +0 -0
  2234. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bo_cmd_search_semantic_warnings_out_envelope.py +0 -0
  2235. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bp_cmd_diff_warnings_out_envelope.py +0 -0
  2236. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bq_cmd_clones_warnings_out_envelope.py +0 -0
  2237. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_br_cmd_search_warnings_out_envelope.py +0 -0
  2238. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bs_cmd_vibe_check_warnings_out_envelope.py +0 -0
  2239. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bt_cmd_attest_warnings_out_envelope.py +0 -0
  2240. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bu_cmd_pr_risk_warnings_out_envelope.py +0 -0
  2241. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bv_cmd_grep_warnings_out_envelope.py +0 -0
  2242. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bw_cmd_pr_bundle_warnings_out_envelope.py +0 -0
  2243. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bx_cmd_dead_warnings_out_envelope.py +0 -0
  2244. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_by_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  2245. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_bz_cmd_cga_warnings_out_envelope.py +0 -0
  2246. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_c_cmd_findings_warnings_out_envelope.py +0 -0
  2247. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ca_cmd_pr_replay_warnings_out_envelope.py +0 -0
  2248. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cb_cmd_n1_warnings_out_envelope.py +0 -0
  2249. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cc_cmd_pr_prep_warnings_out_envelope.py +0 -0
  2250. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cd_cmd_supply_chain_warnings_out_envelope.py +0 -0
  2251. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ce_cmd_over_fetch_warnings_out_envelope.py +0 -0
  2252. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cf_cmd_evidence_doctor_warnings_out_envelope.py +0 -0
  2253. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cg_cmd_sbom_warnings_out_envelope.py +0 -0
  2254. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ch_cmd_vulns_warnings_out_envelope.py +0 -0
  2255. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ci_cmd_missing_index_warnings_out_envelope.py +0 -0
  2256. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cj_cmd_taint_warnings_out_envelope.py +0 -0
  2257. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ck_cmd_evidence_diff_warnings_out_envelope.py +0 -0
  2258. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cl_cmd_vuln_reach_warnings_out_envelope.py +0 -0
  2259. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cm_cmd_auth_gaps_warnings_out_envelope.py +0 -0
  2260. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cn_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  2261. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cp_cmd_hotspots_warnings_out_envelope.py +0 -0
  2262. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cq_cmd_bus_factor_warnings_out_envelope.py +0 -0
  2263. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cr_cmd_audit_trail_export_warnings_out_envelope.py +0 -0
  2264. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cr_cmd_orphan_imports_warnings_out_envelope.py +0 -0
  2265. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ct_cmd_runs_warnings_out_envelope.py +0 -0
  2266. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cu_cmd_invariants_warnings_out_envelope.py +0 -0
  2267. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cv_cmd_postmortem_warnings_out_envelope.py +0 -0
  2268. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cw_cmd_conventions_warnings_out_envelope.py +0 -0
  2269. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cx_cmd_alerts_warnings_out_envelope.py +0 -0
  2270. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cy_cmd_fan_warnings_out_envelope.py +0 -0
  2271. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_cz_cmd_dark_matter_warnings_out_envelope.py +0 -0
  2272. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_d_cmd_dogfood_warnings_out_envelope.py +0 -0
  2273. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_da_cmd_relate_warnings_out_envelope.py +0 -0
  2274. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_db_cmd_deps_warnings_out_envelope.py +0 -0
  2275. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dc_cmd_clones_warnings_out_envelope.py +0 -0
  2276. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dd_cmd_duplicates_warnings_out_envelope.py +0 -0
  2277. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_de_cmd_uses_warnings_out_envelope.py +0 -0
  2278. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_df_cmd_smells_warnings_out_envelope.py +0 -0
  2279. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dg_cmd_describe_warnings_out_envelope.py +0 -0
  2280. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dh_cmd_fingerprint_warnings_out_envelope.py +0 -0
  2281. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_di_cmd_metrics_push_warnings_out_envelope.py +0 -0
  2282. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dj_cmd_fan_score_classify_extension.py +0 -0
  2283. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dk_cmd_capsule_warnings_out_envelope.py +0 -0
  2284. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dl_cmd_dead_warnings_out_envelope.py +0 -0
  2285. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dm_cmd_audit_warnings_out_envelope.py +0 -0
  2286. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dn_cmd_diagnose_warnings_out_envelope.py +0 -0
  2287. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dp_cmd_dashboard_warnings_out_envelope.py +0 -0
  2288. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dq_cmd_n1_warnings_out_envelope.py +0 -0
  2289. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dr_cmd_postmortem_warnings_out_envelope.py +0 -0
  2290. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ds_cmd_orchestrate_warnings_out_envelope.py +0 -0
  2291. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dt_cmd_over_fetch_warnings_out_envelope.py +0 -0
  2292. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_du_cmd_partition_warnings_out_envelope.py +0 -0
  2293. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dv_cmd_pr_replay_warnings_out_envelope.py +0 -0
  2294. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dw_cmd_doctor_warnings_out_envelope.py +0 -0
  2295. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dx_cmd_missing_index_warnings_out_envelope.py +0 -0
  2296. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dy_cmd_agent_plan_warnings_out_envelope.py +0 -0
  2297. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_dz_cmd_taint_warnings_out_envelope.py +0 -0
  2298. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_e_cmd_search_warnings_out_envelope.py +0 -0
  2299. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ea_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  2300. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_eb_cmd_fleet_warnings_out_envelope.py +0 -0
  2301. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ec_cmd_preflight_warnings_out_envelope.py +0 -0
  2302. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ed_cmd_auth_gaps_warnings_out_envelope.py +0 -0
  2303. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ee_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -0
  2304. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ef_cmd_simulate_warnings_out_envelope.py +0 -0
  2305. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_eg_cmd_mutate_warnings_out_envelope.py +0 -0
  2306. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_eh_cmd_bus_factor_warnings_out_envelope.py +0 -0
  2307. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ei_cmd_cut_warnings_out_envelope.py +0 -0
  2308. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ej_cmd_critique_warnings_out_envelope.py +0 -0
  2309. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ek_cmd_adversarial_warnings_out_envelope.py +0 -0
  2310. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_el_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  2311. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_em_cmd_closure_warnings_out_envelope.py +0 -0
  2312. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_en_cmd_hotspots_warnings_out_envelope.py +0 -0
  2313. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_eo_cmd_pr_prep_warnings_out_envelope.py +0 -0
  2314. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_ep_cmd_for_refactor_warnings_out_envelope.py +0 -0
  2315. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_eq_cmd_trace_warnings_out_envelope.py +0 -0
  2316. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_es_cmd_grep_warnings_out_envelope.py +0 -0
  2317. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_f_cmd_complete_warnings_out_envelope.py +0 -0
  2318. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_g_cmd_grep_warnings_out_envelope.py +0 -0
  2319. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_h_cmd_history_grep_warnings_out_envelope.py +0 -0
  2320. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_i_cmd_refs_text_warnings_out_envelope.py +0 -0
  2321. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_j_cmd_delete_check_warnings_out_envelope.py +0 -0
  2322. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_k_cmd_describe_warnings_out_envelope.py +0 -0
  2323. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_l_cmd_minimap_warnings_out_envelope.py +0 -0
  2324. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_m_cmd_health_warnings_out_envelope.py +0 -0
  2325. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_n_cmd_doctor_warnings_out_envelope.py +0 -0
  2326. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_o_cmd_dashboard_warnings_out_envelope.py +0 -0
  2327. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_p_cmd_audit_warnings_out_envelope.py +0 -0
  2328. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_q_cmd_pr_risk_warnings_out_envelope.py +0 -0
  2329. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_r_cmd_preflight_warnings_out_envelope.py +0 -0
  2330. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_s_cmd_diagnose_warnings_out_envelope.py +0 -0
  2331. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_t_cmd_impact_warnings_out_envelope.py +0 -0
  2332. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_u_cmd_uses_warnings_out_envelope.py +0 -0
  2333. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_v_cmd_deps_warnings_out_envelope.py +0 -0
  2334. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_w_cmd_relate_warnings_out_envelope.py +0 -0
  2335. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_x_cmd_fan_warnings_out_envelope.py +0 -0
  2336. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_y_cmd_critique_warnings_out_envelope.py +0 -0
  2337. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w607_z_cmd_diff_warnings_out_envelope.py +0 -0
  2338. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w639_detector_smoke.py +0 -0
  2339. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_a_impact_risk_level.py +0 -0
  2340. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_b_critique_risk_level.py +0 -0
  2341. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_c_pr_bundle_risk_level.py +0 -0
  2342. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_d_attest_risk_level.py +0 -0
  2343. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_e_diff_risk_level.py +0 -0
  2344. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_f_collector_canonical_risk.py +0 -0
  2345. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_g_dark_matter_risk_level.py +0 -0
  2346. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_h_migration_plan_risk_level.py +0 -0
  2347. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_followup_i_exporter_risk_vocab.py +0 -0
  2348. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w641_pr_risk_risk_level_emit.py +0 -0
  2349. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w661_algo_detector_smoke.py +0 -0
  2350. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w662_bare_except_drift.py +0 -0
  2351. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w664_package_data_init_drift.py +0 -0
  2352. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w668_as_file_pattern_drift.py +0 -0
  2353. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w675_example_smells_suppress.py +0 -0
  2354. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w676_followup_example_files.py +0 -0
  2355. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w680_world_model_empty_corpus.py +0 -0
  2356. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w681_taint_engine_positive_smoke.py +0 -0
  2357. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w703_comment_syntax_coverage.py +0 -0
  2358. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w711_mcp_card_error_branches.py +0 -0
  2359. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w712_mcp_list_tools_smoke.py +0 -0
  2360. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w725_comment_density_foxpro_scss.py +0 -0
  2361. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w738_suppression_wire_format.py +0 -0
  2362. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w759_preflight_lowercase.py +0 -0
  2363. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w761_critique_severity_vocab.py +0 -0
  2364. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w761_invariants_bus_factor_complexity_lowercase.py +0 -0
  2365. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w761_vulns_secrets_severity_vocab.py +0 -0
  2366. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w762_severity_upper_drift.py +0 -0
  2367. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w792_well_known_card_mirrors.py +0 -0
  2368. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w801_endpoints_empty_corpus.py +0 -0
  2369. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w802_dead_empty_corpus.py +0 -0
  2370. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w803_n1_empty_corpus.py +0 -0
  2371. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_a_cmd_owner_empty_corpus.py +0 -0
  2372. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_aaa_cmd_mode_empty_corpus.py +0 -0
  2373. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_aaaa_cmd_delete_check_empty_corpus.py +0 -0
  2374. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_aaaaa_cmd_boundary_shared_helper_silent_safe.py +0 -0
  2375. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_b_cmd_minimap_empty_corpus.py +0 -0
  2376. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_bb_cmd_clusters_empty_corpus.py +0 -0
  2377. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_bbb_cmd_memory_empty_corpus.py +0 -0
  2378. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_bbbb_cmd_simulate_empty_corpus.py +0 -0
  2379. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_bbbbb_cmd_pr_bundle_validate_identity_skip.py +0 -0
  2380. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_bcluster_debt_alerts_empty_corpus.py +0 -0
  2381. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_c_cmd_oracle_empty_corpus.py +0 -0
  2382. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_cc_cmd_spectral_empty_corpus.py +0 -0
  2383. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ccc_cmd_attest_empty_corpus.py +0 -0
  2384. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_cccc_cmd_clones_below_threshold_collapse.py +0 -0
  2385. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ccccc_cmd_why_slow_shared_helper_silent_safe.py +0 -0
  2386. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_consolidate_cross_artifact_drift_table.py +0 -0
  2387. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_d_cmd_workflow_empty_corpus.py +0 -0
  2388. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_dd_cmd_history_grep_empty_corpus.py +0 -0
  2389. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_dddd_cmd_orchestrate_target_resolution.py +0 -0
  2390. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ddddd_cmd_evidence_doctor_q17_asymmetry.py +0 -0
  2391. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_diff_empty_corpus.py +0 -0
  2392. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_e_cmd_path_coverage_empty_corpus.py +0 -0
  2393. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ee_cmd_simulate_empty_corpus.py +0 -0
  2394. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_eee_cmd_agent_score_empty_corpus.py +0 -0
  2395. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_eeee_cmd_diff_resolution_disclosure.py +0 -0
  2396. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_empty_state_pattern_2.py +0 -0
  2397. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_f_cmd_for_bug_fix_empty_corpus.py +0 -0
  2398. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_fan_empty_corpus.py +0 -0
  2399. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_fff_cmd_cga_empty_corpus.py +0 -0
  2400. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ffff_cmd_smells_below_threshold_collapse.py +0 -0
  2401. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_fffff_cmd_pr_replay_verify_identity_skip.py +0 -0
  2402. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_fingerprint_empty_corpus.py +0 -0
  2403. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_followup_pattern_2.py +0 -0
  2404. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_g_cmd_pr_prep_empty_corpus.py +0 -0
  2405. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_gg_cmd_mutate_empty_corpus.py +0 -0
  2406. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ggg_cmd_for_new_feature_empty_corpus.py +0 -0
  2407. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_gggg_cmd_capsule_snapshot_state.py +0 -0
  2408. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ggggg_cmd_attest_signing_surface_producer_coverage.py +0 -0
  2409. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_h_cmd_explain_command_empty_corpus.py +0 -0
  2410. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_hh_cmd_test_impact_empty_corpus.py +0 -0
  2411. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_hhh_cmd_capsule_empty_corpus.py +0 -0
  2412. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_hhhh_cmd_critique_shared_helper_silent_safe.py +0 -0
  2413. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_i_cmd_describe_empty_corpus.py +0 -0
  2414. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ii_cmd_relate_empty_corpus.py +0 -0
  2415. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_iii_cmd_evidence_diff_empty_corpus.py +0 -0
  2416. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_iiii_cmd_fingerprint_snapshot_state.py +0 -0
  2417. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_iiiii_cmd_postmortem_verifier_identity_skip.py +0 -0
  2418. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_j_cmd_understand_empty_corpus.py +0 -0
  2419. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_jj_cmd_hover_empty_corpus.py +0 -0
  2420. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_jjj_cmd_tour_empty_corpus.py +0 -0
  2421. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_jjjj_cmd_pr_diff_shared_helper_silent_safe.py +0 -0
  2422. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_k_cmd_module_empty_corpus.py +0 -0
  2423. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_kk_cmd_for_refactor_empty_corpus.py +0 -0
  2424. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_kkk_diagnose_issue_empty_corpus.py +0 -0
  2425. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_kkkkk_cga_vsa_sibling_consistency.py +0 -0
  2426. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_l_cmd_preflight_empty_corpus.py +0 -0
  2427. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ll_cmd_for_security_review_empty_corpus.py +0 -0
  2428. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_lll_cmd_evidence_doctor_empty_corpus.py +0 -0
  2429. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_llll_cmd_runs_replay_lineage.py +0 -0
  2430. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_lllll_cmd_attest_verify_identity_skip.py +0 -0
  2431. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_m_cmd_diagnose_empty_corpus.py +0 -0
  2432. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_mm_cmd_pr_analyze_empty_corpus.py +0 -0
  2433. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_mmm_cmd_pr_replay_empty_corpus.py +0 -0
  2434. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_mmmm_cmd_workspace_shared_helper_silent_safe.py +0 -0
  2435. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_n_cmd_file_empty_corpus.py +0 -0
  2436. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_nn_cmd_pr_bundle_empty_corpus.py +0 -0
  2437. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_nnn_cmd_evidence_oscal_empty_corpus.py +0 -0
  2438. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_nnnn_cmd_vuln_reach_cross_lang.py +0 -0
  2439. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_nnnnn_compound_cross_subcommand_identity_drift.py +0 -0
  2440. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_o_cmd_why_empty_corpus.py +0 -0
  2441. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ooo_prepare_change_empty_corpus.py +0 -0
  2442. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_oooo_cmd_attest_disclosure.py +0 -0
  2443. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ooooo_pr_bundle_slsa_l3_three_artifact_identity_coherence.py +0 -0
  2444. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_p_cmd_impact_empty_corpus.py +0 -0
  2445. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_pp_cmd_dashboard_empty_corpus.py +0 -0
  2446. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_pppp_cmd_cga_attestation_lineage.py +0 -0
  2447. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ppppp_pr_bundle_cosign_four_artifact_identity_coherence.py +0 -0
  2448. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_pr_analyze_empty_corpus.py +0 -0
  2449. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_q_cmd_deps_empty_corpus.py +0 -0
  2450. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_qq_cmd_visualize_empty_corpus.py +0 -0
  2451. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_qqq_review_change_empty_corpus.py +0 -0
  2452. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_qqqq_cmd_supply_chain_cross_eco.py +0 -0
  2453. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_qqqqq_compound_recipe_shape_axis_drift.py +0 -0
  2454. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_r_cmd_adversarial_empty_corpus.py +0 -0
  2455. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_rr_cmd_audit_empty_corpus.py +0 -0
  2456. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_rrr_cmd_postmortem_empty_corpus.py +0 -0
  2457. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_rrrr_cmd_test_gaps_shared_helper_silent_safe.py +0 -0
  2458. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_rrrrr_pr_bundle_rekor_five_artifact_identity_coherence.py +0 -0
  2459. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_s_cmd_fan_empty_corpus.py +0 -0
  2460. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_sss_cmd_triage_empty_corpus.py +0 -0
  2461. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ssss_cmd_affected_tests_shared_helper_silent_safe.py +0 -0
  2462. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_sssss_pr_bundle_fulcio_six_artifact_identity_coherence.py +0 -0
  2463. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_t_cmd_uses_empty_corpus.py +0 -0
  2464. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_tt_cmd_brief_empty_corpus.py +0 -0
  2465. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ttt_cmd_ai_readiness_empty_corpus.py +0 -0
  2466. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_tttt_cmd_pr_bundle_q18_coverage_axis.py +0 -0
  2467. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ttttt_octet_trimmed_iserror_axis_sweep.py +0 -0
  2468. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_u_cmd_orchestrate_empty_corpus.py +0 -0
  2469. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_uu_cmd_replay_empty_corpus.py +0 -0
  2470. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_uuu_cmd_grep_reachability_empty_corpus.py +0 -0
  2471. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_uuuu_cmd_audit_trail_verify_identity_skip.py +0 -0
  2472. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_uuuuu_error_storm_coalescer_trim_variant_sweep.py +0 -0
  2473. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_v_cmd_trace_empty_corpus.py +0 -0
  2474. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_vv_cmd_next_empty_corpus.py +0 -0
  2475. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_vvv_explore_compound_empty_corpus.py +0 -0
  2476. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_vvvv_cmd_affected_shared_helper_silent_safe.py +0 -0
  2477. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_w_cmd_refs_text_empty_corpus.py +0 -0
  2478. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_ww_cmd_runs_empty_corpus.py +0 -0
  2479. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_www_cmd_dark_matter_empty_corpus.py +0 -0
  2480. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_wwww_vsa_verifier_identity_skip.py +0 -0
  2481. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_x_cmd_layers_empty_corpus.py +0 -0
  2482. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_xx_cmd_lease_empty_corpus.py +0 -0
  2483. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_xxx_cmd_refs_text_reachability_empty_corpus.py +0 -0
  2484. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_xxxx_cmd_adversarial_shared_helper_silent_safe.py +0 -0
  2485. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_y_cmd_partition_empty_corpus.py +0 -0
  2486. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_yy_cmd_intent_check_empty_corpus.py +0 -0
  2487. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_yyy_cmd_n1_post_mod_empty_corpus.py +0 -0
  2488. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_z_cmd_delete_check_empty_corpus.py +0 -0
  2489. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_zzz_cmd_duplicates_post_mod_empty_corpus.py +0 -0
  2490. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w805_zzzz_cmd_evidence_diff_cross_repo_identity.py +0 -0
  2491. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w806_complexity_empty_corpus.py +0 -0
  2492. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w807_missing_index_empty_corpus.py +0 -0
  2493. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w808_clones_empty_corpus.py +0 -0
  2494. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w809_over_fetch_empty_corpus.py +0 -0
  2495. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w811_bus_factor_empty_corpus.py +0 -0
  2496. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w812_orphan_imports_empty_corpus.py +0 -0
  2497. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w815_auth_gaps_empty_corpus.py +0 -0
  2498. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w816_hotspots_empty_corpus.py +0 -0
  2499. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w820_smells_empty_corpus.py +0 -0
  2500. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w821_duplicates_empty_corpus.py +0 -0
  2501. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w823_vulns_empty_corpus.py +0 -0
  2502. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w824_invariants_empty_corpus.py +0 -0
  2503. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w827_audit_trail_conformance_empty_corpus.py +0 -0
  2504. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w828_pr_risk_empty_corpus.py +0 -0
  2505. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w829_audit_trail_verify_empty_corpus.py +0 -0
  2506. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w830_audit_trail_verify_gate.py +0 -0
  2507. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w831_critique_empty_corpus.py +0 -0
  2508. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w833_health_empty_corpus.py +0 -0
  2509. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w835_doctor_empty_corpus.py +0 -0
  2510. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w837_coverage_gaps_empty_corpus.py +0 -0
  2511. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w837_forecast_empty_corpus.py +0 -0
  2512. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w852_type_switch.py +0 -0
  2513. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w853_speculative_generality.py +0 -0
  2514. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w855_rename_invariant_clones.py +0 -0
  2515. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w856_cross_layer_clones.py +0 -0
  2516. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w857_parallel_hierarchy.py +0 -0
  2517. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w870_detector_version_stamp_parity.py +0 -0
  2518. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w898_followup_b_laws_checker.py +0 -0
  2519. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w898_followup_is_test_path_clone_sweep.py +0 -0
  2520. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w898_is_test_path_delegation.py +0 -0
  2521. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w907_cycle_hedge_audit.py +0 -0
  2522. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w910_alerts_threshold_parity.py +0 -0
  2523. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w911_confidence_tier_parity.py +0 -0
  2524. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w912_detector_metadata_coverage.py +0 -0
  2525. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w918_alerts_silent_fallback.py +0 -0
  2526. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w937_no_mojibake_em_dashes.py +0 -0
  2527. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w954_core_tools_capability_drift.py +0 -0
  2528. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w962_w963_w964_alerts_pattern2.py +0 -0
  2529. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w985_followup_head_unchanged_info_log.py +0 -0
  2530. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w985_incremental_skip_info_log.py +0 -0
  2531. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w985_shallow_history_info_log.py +0 -0
  2532. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w987_smells_pattern2.py +0 -0
  2533. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w989_pr_risk_pattern2.py +0 -0
  2534. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w994_w995_suppress_yaml.py +0 -0
  2535. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w_json_mode_no_stdout_warnings.py +0 -0
  2536. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_w_mcp_security_pipeline_e2e.py +0 -0
  2537. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_watch.py +0 -0
  2538. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_why.py +0 -0
  2539. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_why_slow.py +0 -0
  2540. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_workspace.py +0 -0
  2541. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_world_model_classifier_fidelity.py +0 -0
  2542. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ws_resolve_fixes.py +0 -0
  2543. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_ws_resolve_unmatched.py +0 -0
  2544. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_x_lang_scope.py +0 -0
  2545. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_xlang.py +0 -0
  2546. {roam_code-13.9.0 → roam_code-14.0.0}/tests/test_yaml_hcl.py +0 -0
@@ -0,0 +1,1006 @@
1
+ Metadata-Version: 2.4
2
+ Name: roam-code
3
+ Version: 14.0.0
4
+ Summary: Local codebase intelligence for AI coding agents: structural repo map, change-safety gates, MCP security receipts, and tamper-evident ChangeEvidence packets. Local analysis, zero API keys, no source-code 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.14,>=1.13.3
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
+ Requires-Dist: mcp>=1.28.1; extra == "mcp"
41
+ Provides-Extra: metrics
42
+ Requires-Dist: numpy>=1.24; extra == "metrics"
43
+ Requires-Dist: scipy>=1.11; extra == "metrics"
44
+ Provides-Extra: semantic
45
+ Requires-Dist: numpy>=1.24; extra == "semantic"
46
+ Requires-Dist: onnxruntime>=1.16; extra == "semantic"
47
+ Requires-Dist: tokenizers>=0.15; extra == "semantic"
48
+ Provides-Extra: leiden
49
+ Requires-Dist: igraph>=0.11; extra == "leiden"
50
+ Requires-Dist: leidenalg>=0.10; extra == "leiden"
51
+ Provides-Extra: graph-fast
52
+ Requires-Dist: rustworkx>=0.14; extra == "graph-fast"
53
+ Provides-Extra: sbom
54
+ Requires-Dist: cyclonedx-python-lib>=8.0; extra == "sbom"
55
+ Provides-Extra: learned
56
+ Requires-Dist: lightgbm>=4.0; extra == "learned"
57
+ Provides-Extra: typecheck
58
+ Requires-Dist: mypy>=1.10; extra == "typecheck"
59
+ Provides-Extra: dev
60
+ Requires-Dist: pytest>=7.0; extra == "dev"
61
+ Requires-Dist: pytest-xdist>=3.0; extra == "dev"
62
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
63
+ Requires-Dist: scipy>=1.11; extra == "dev"
64
+ Requires-Dist: fastmcp>=2.0; extra == "dev"
65
+ Requires-Dist: mcp>=1.28.1; extra == "dev"
66
+ Requires-Dist: pyyaml>=6.0; extra == "dev"
67
+ Requires-Dist: ruff>=0.4; extra == "dev"
68
+ Requires-Dist: build>=1.0; extra == "dev"
69
+ Requires-Dist: twine>=5.0; extra == "dev"
70
+ Requires-Dist: pillow>=12.3.0; extra == "dev"
71
+ Dynamic: license-file
72
+
73
+ <div align="center">
74
+
75
+ # roam-code
76
+
77
+ **The local codebase intelligence layer that lets AI coding agents earn the right to change code — with evidence for what was checked.**
78
+
79
+ [![PyPI version](https://img.shields.io/pypi/v/roam-code?style=flat-square&color=blue)](https://pypi.org/project/roam-code/)
80
+ [![GitHub stars](https://img.shields.io/github/stars/Cranot/roam-code?style=flat-square)](https://github.com/Cranot/roam-code/stargazers)
81
+ [![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)
82
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-3776AB?logo=python&logoColor=white)](https://www.python.org/downloads/)
83
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
84
+
85
+ <sub>Credential-free · local analysis with no automatic source-code or telemetry upload · tamper-evident `ChangeEvidence` packets · Apache 2.0 · runs on your machine</sub>
86
+
87
+ <!-- BEGIN auto-count:readme-headline-counts -->
88
+ <sub>285 commands · 244 MCP tools (17 in the default `core` preset) · 28 languages</sub>
89
+ <!-- END auto-count:readme-headline-counts -->
90
+
91
+ <sub><a href="https://roam-code.com/pricing"><b>Paid layers →</b></a> &nbsp;<b>PR Replay</b> audit $2,500 Team / $6,000 Deep, available now &nbsp;·&nbsp; <b>Roam Review</b> from $99/mo flat — no per-seat pricing &nbsp;·&nbsp; <b>Roam Cloud</b> $19/repo/mo &nbsp;·&nbsp; Review and Cloud are early access. The CLI below is Apache 2.0 and free forever.</sub>
92
+
93
+ ![roam terminal demo](docs/assets/roam-terminal-demo.gif)
94
+
95
+ </div>
96
+
97
+ ---
98
+
99
+ **Jump to** —
100
+ [Why Roam](#why-roam-is-different) ·
101
+ [Install](#install--first-four-commands) ·
102
+ [The Compiler](#the-compiler--your-agents-first-token-already-knows-the-answer) ·
103
+ [Core commands](#core-commands) ·
104
+ [MCP server](#mcp-server) ·
105
+ [AI-tool integration](#integration-with-ai-coding-tools) ·
106
+ [Roam Guard (PR gate)](#roam-guard-for-prs) ·
107
+ [Performance](#performance) ·
108
+ [Compare](#how-roam-compares) ·
109
+ [Pricing](#paid-layers-free-cli-stays-apache-20) ·
110
+ [FAQ](#faq)
111
+
112
+ ---
113
+
114
+ ## Why Roam is different
115
+
116
+ [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:
117
+
118
+ - **Credential-free.** No account, no API key, no cloud login. `pip install` and run.
119
+ - **Local analysis with an explicit network boundary.** Source parsing, indexes, findings, and evidence generation stay on the machine; Roam sends no automatic telemetry or update checks. A cold `tree-sitter-language-pack` grammar cache downloads one checksum-verified platform bundle and retains it locally. Additional network-capable commands and flags are opt-in and inventoried in [`docs/network-boundary.md`](docs/network-boundary.md), including their destinations and payload classes.
120
+ - **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.
121
+ - **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).
122
+
123
+ 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.
124
+
125
+ **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, with terminal-friendly UTF-8 output and `--json` / `--sarif` envelopes for agents and CI. See [Performance](#performance) for timings.
126
+
127
+ | | Without Roam | With Roam |
128
+ |--|-------------|-----------|
129
+ | Tool calls | 8 | **1** |
130
+ | Wall time | ~11s | **<0.5s** |
131
+ | Tokens consumed | ~15,000 | **~3,000** |
132
+
133
+ *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); OSS benchmark harness in [`benchmarks/oss-eval/`](benchmarks/oss-eval/). Exact numbers vary with repo size, host, agent prompt, and model.*
134
+
135
+ ---
136
+
137
+ ## Install + first four commands
138
+
139
+ About two minutes from `pip install` to a verdict on whether your next edit is safe.
140
+
141
+ ```bash
142
+ pip install "roam-code[mcp]" # 1. install with MCP server for Claude Code / Cursor / Continue
143
+ cd /path/to/your/repo
144
+ roam init # 2. index the repo into .roam/index.db (one-time, ~30s on most repos)
145
+ roam health # 3. composite 0-100 score: complexity, cycles, dark-matter coupling, dead code
146
+ roam preflight <symbol> # 4. blast radius + tests + complexity + architecture rules before you edit
147
+ ```
148
+
149
+ 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.
150
+
151
+ Step 4 is the payoff — `roam preflight` on a hot symbol returns a verdict before you touch it:
152
+
153
+ ```text
154
+ $ roam preflight open_db
155
+ VERDICT: Significant risk — CRITICAL, 17922 symbols in blast radius
156
+
157
+ Pre-flight check for `open_db (src/roam/db/connection.py:1076)`:
158
+
159
+ Blast radius: 17922 symbols in 1732 files [CRITICAL]
160
+ Affected tests: 681 direct, 14126 transitive [OK]
161
+ Complexity: cc=5, nest=2 [LOW]
162
+ Coupling: 2 files often change together [MEDIUM]
163
+ Conventions: no violations [OK]
164
+ Fitness: target passes; 1 rule(s) fail on sibling symbols [OK]
165
+
166
+ Overall risk: CRITICAL
167
+ Risk driver: blast radius (17922 symbols in 1732 files, CRITICAL)
168
+ ```
169
+
170
+ *An agent sees the blast radius before it edits — not after the tests fail.*
171
+
172
+ <details>
173
+ <summary><strong>Alternate install methods + Docker</strong></summary>
174
+
175
+ ```bash
176
+ pipx install roam-code # isolated environment (recommended)
177
+ uv tool install roam-code # uv-managed tool
178
+ pip install git+https://github.com/Cranot/roam-code.git # from source
179
+
180
+ # Docker (python:3.12-slim-bookworm base)
181
+ docker build -t roam-code .
182
+ docker run --rm -v "$PWD:/workspace" roam-code index
183
+ docker run --rm -v "$PWD:/workspace" roam-code health
184
+ ```
185
+
186
+ 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.
187
+
188
+ </details>
189
+
190
+ ---
191
+
192
+ ## The Compiler — your agent's first token already knows the answer
193
+
194
+ You ask your agent *"who calls `handleSave`?"* and watch it grep, open
195
+ three files, grep again, read a fourth — six turns and $1.30 later you get
196
+ the answer the repo's call graph held all along.
197
+
198
+ Roam ships a **task compiler** that ends that loop. Before your prompt
199
+ reaches the model, roam recognizes what kind of question it is, runs the
200
+ right code-graph lookups locally (~90 ms, zero model calls), and puts the
201
+ *answers* into the prompt: the caller list with line numbers, the git
202
+ history already filtered, the source around the bug line you cited. The
203
+ agent's first words can be the answer.
204
+
205
+ For Claude Code it's **one command, zero configuration**:
206
+
207
+ ```bash
208
+ pip install "roam-code[mcp]"
209
+ cd your-repo && roam init
210
+ roam hooks claude --write # compile-before + verify-after, wired into Claude Code
211
+ ```
212
+
213
+ Then use `claude` exactly as you always do. Undo anytime with
214
+ `roam hooks claude --uninstall --write`. Compile-time context injection is
215
+ fail-open. After an edited turn, the Stop gate is deliberately fail-closed:
216
+ findings, malformed output, an unavailable check, or incomplete evidence must
217
+ be resolved before Claude reports completion. No-edit Q&A turns fast-exit.
218
+
219
+ **What that buys you, measured head-to-head on Claude** (same prompts, same
220
+ repo, with and without the compiler — June 2026, 41 cells):
221
+
222
+ | Median per task | vanilla | compiled | delta |
223
+ |---|---|---|---|
224
+ | Agent turns (navigation/comprehension) | 6 | 1 | **−83%** |
225
+ | Input tokens | 271K | 53K | **−80%** |
226
+ | Cost | $1.30 | $0.48 | **−63%** |
227
+ | Wall time | — | — | **−50%** |
228
+
229
+ A second run on Opus shows the same direction at smaller magnitude (−33%
230
+ turns overall; the best single cell hit −88%). And the compiler knows
231
+ where it *doesn't* help: prompts that ask the agent to **write** code get
232
+ no envelope at all — injection there was measured as pure overhead, so it
233
+ spends your tokens only where it wins.
234
+
235
+ <details>
236
+ <summary><b>The full data</b> — every bench cell (including the losses), the ground-truth bug bench, and routing stats</summary>
237
+
238
+ | Task | turns | input tokens | cost |
239
+ |---|---|---|---|
240
+ | "where is `open_db` defined?" | 3 → **1** | 156K → 51K | $0.67 → $0.28 |
241
+ | "which files depend on `cli.py`?" | 6 → **1** | 252K → 51K | $1.15 → $0.30 |
242
+ | "where is the env var configured?" | 9 → **1** | 497K → 53K | $1.40 → $0.31 |
243
+ | "what are the layers of this codebase?" | 5 → **1** | 271K → 50K | $1.42 → $0.41 |
244
+ | "what changed in `cli.py` recently?" | 4 → **2** | 186K → 104K | $0.62 → $0.40 |
245
+ | "explain the compiler module's architecture" | 13 → **6** | 618K → 240K | $1.85 → $1.01 |
246
+ | "trace how a command becomes an MCP tool" | 12 → **8** | 464K → 303K | $1.25 → $1.01 |
247
+ | security-hook comprehension (hard, multi-file) | 6 → **2** | 267K → 117K | $1.15 → $0.56 |
248
+ | "what are the biggest cycles in this codebase?" (re-measured 06-11) | 6 → **1** | — | $0.65 → **$0.07** |
249
+ | "where is the CLI entry point?" (trivial, re-measured 06-11) | 1 → 1 | 48K → 50K | $0.21 → $0.22 |
250
+ | "write a pytest for X" (generation, re-measured 06-11) | 5 → 7 | 275K → 396K | $0.61 → **$0.45** |
251
+
252
+ The last two rows were the published LOSSES (trivial prompts once paid
253
+ the envelope for nothing at +$0.20; generation once cost +17%). After the
254
+ generation-skip lever (write-code prompts get a ~0.6 KB lean envelope or
255
+ none — measured 3.5% of a 723-prompt real corpus) and the entry-point
256
+ routing fix, both cells were re-measured at n=3 medians on the same
257
+ model: generation flipped to a −26% cost / −18% wall win — input tokens
258
+ rise (cache-read-heavy, cheap) while expensive output tokens drop −29%
259
+ across more-but-cheaper turns — and the trivial cell is a tie within
260
+ noise. Losses are findable because we publish them — and fixable because
261
+ the compiler routes them.
262
+
263
+ **Bug-fixing, ground-truth graded** (a failing test must transition to
264
+ passing — no LLM judging): 20 cells of planted bugs with real tracebacks —
265
+ 10/10 fixed in both arms at −13% dollar cost. Read that honestly: **n=10
266
+ cannot establish quality parity** (the 95% interval on 10/10 spans
267
+ [72%, 100%]), and the dollar saving comes with **more tokens, not fewer**
268
+ on this task class — the envelope shifts spend into cheaper cache reads. No
269
+ quality difference was *detected*; the sample has little power to detect one.
270
+
271
+ **Routing, replayed on 723 real prompts** from live agent sessions: **57%
272
+ of envelopes ship pre-executed answers** (L1 probes) — the envelope already
273
+ contains the literal answer — and a further ~33% ship structured facts
274
+ (context, not the literal answer), at **p50 0.45 s cold / p50 92 ms live**
275
+ (warm cache) compile latency, fully local. Zero model calls.
276
+
277
+ **Eval history by version** — re-measured on every kernel change; losses are
278
+ published, attacked, then re-measured. The table below is the summary ledger;
279
+ raw per-cell data for the historical runs is retained privately, not in this
280
+ repository:
281
+
282
+ | measured | kernel | what | result |
283
+ |---|---|---|---|
284
+ | Jun 09 | v13.4 | 41-cell nav/comprehension A/B | turns −83%, tokens −80%, cost −63% |
285
+ | Jun 09 | v13.4 | 20-cell ground-truth bugbench | 10/10 both arms (n=10 — no parity claim), $ −13% but tokens up |
286
+ | Jun 09 | v13.4 | trivial-prompt cell | **+80% cost — published loss** |
287
+ | Jun 09 | v13.4 | generation cell | **+17% cost — published loss** |
288
+ | Jun 11 | v13.6 | trivial-prompt cell, re-measured n=3 | tie ($0.21 → $0.22) |
289
+ | Jun 11 | v13.6 | generation cell, re-measured n=3 | **−26% cost win** |
290
+ | Jun 11 | v13.6 | "biggest cycles" cell, re-measured n=3 | **−89% cost win** ($0.65 → $0.07, 6→1 turns) |
291
+ | Jun 11 | v13.6 | 723-prompt routing replay | 57% L1 (answer-shipping) + ~33% facts, p50 0.45 s cold |
292
+ | Jul 11 | v13.7 | live dogfood rolling window (separate population, not the replay harness) | cold-compile median 410 ms |
293
+
294
+ Caveats that always ship with these numbers: trivial prompts the agent
295
+ one-shots anyway gain nothing (now a within-noise tie after the lean/skip
296
+ levers); cells are n=2–3 with medians and ranges.
297
+
298
+ <details>
299
+ <summary><strong>Benchmark archaeology — runs #1–#4 (May 2026), including the honest negative result that drove the fixes</strong></summary>
300
+
301
+ Two independent A/B runs at different scales — the larger sample inverts the smaller. Reporting both honestly.
302
+
303
+ **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.
304
+
305
+ **Run #2 (n=3–7 per cell, 78 cells, $54.88, "Hard cap" line removed from static):**
306
+
307
+ | Condition | Mean turns | Mean wall | Mean cost |
308
+ |---|---|---|---|
309
+ | vanilla | 7.0 | 33.2s | $0.68 |
310
+ | **static / roam_agent** | **5.8** | **25.1s** | **$0.66** |
311
+ | compile | 8.2 | 47.9s | $0.78 |
312
+
313
+ 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.
314
+
315
+ Private raw cells are retained for audit; the public summary above is the quotable result.
316
+
317
+ **Run #3 (2026-05-31, n=1, 24 cells, $12.78, on 8-task user-shape corpus after W34→W37 fixes):**
318
+
319
+ | Condition | Mean turns | Mean wall | Mean cost |
320
+ |---|---|---|---|
321
+ | vanilla | 6.00 | 28.6s | $0.58 (1 cell timed out at 240s) |
322
+ | static / roam_agent | 5.38 | 39.9s | $0.63 |
323
+ | **compile** | **2.75** | 35.6s | **$0.46** |
324
+
325
+ 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.
326
+
327
+ 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.
328
+
329
+ Private per-task tables and raw cells are retained for audit; the public summary above is the quotable result.
330
+
331
+ **Run #4 (2026-05-31, n=1, 24 cells, $13.00, same corpus after W43→W45 polish/improvements/corrections):**
332
+
333
+ | Condition | Mean turns | Mean wall | Mean cost |
334
+ |---|---|---|---|
335
+ | vanilla | 5.25 | 39.6s | $0.63 |
336
+ | static / roam_agent | 4.75 | 32.8s | $0.61 |
337
+ | **compile** | **1.88** | **25.2s** | **$0.40** |
338
+
339
+ 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.
340
+
341
+ Private per-task tables and raw cells are retained for audit; the public summary above is the quotable result.
342
+
343
+ </details>
344
+ </details>
345
+
346
+ Headless for scripts and CI: `roam compile "<task>" --artifact auto`.
347
+
348
+ Prefer a dedicated product CLI? [**compile-code**](https://github.com/Cranot/compile-code)
349
+ wraps this same loop: a compiler for AI coding tasks that pre-resolves repo
350
+ facts before your agent's first token — fewer turns, fewer tokens, same
351
+ answers. It uses roam-code as its kernel (indexer, code graph, classifier,
352
+ verification engine) and installs it as a dependency. Install from the
353
+ repository.
354
+
355
+ ### The verify half of the loop — what runs after every edit
356
+
357
+ The compile half front-loads facts; the verify half reviews what the agent
358
+ just changed. `roam verify --auto` scopes to the touched files, auto-selects
359
+ the checks that make sense for what changed (Python edits unlock the Python
360
+ checks, source edits unlock naming/duplicates), and runs:
361
+
362
+ - **naming** — against the codebase's own per-language convention (sampled
363
+ from production code only: test/vendored/generated files neither vote nor
364
+ get flagged, framework lifecycle names like `setUp` are never touched)
365
+ - **imports** — the hallucination firewall: every import must resolve — to
366
+ the index, the stdlib, or a declared dependency. A module path that
367
+ resolves to nothing fails as a likely hallucination; near-miss names get
368
+ fuzzy did-you-mean candidates
369
+ - **error handling / syntax / complexity / cycles / duplicates** — scoped
370
+ structural review with honest disclosure when any sub-check could not run
371
+ - **secrets** — a leak gate over every touched file: credential shapes
372
+ (cloud keys, tokens, PEM blocks) fail the check, and an optional
373
+ repo-local `.roam-leak-patterns.py` catalogue catches the strings *your*
374
+ project must never publish
375
+ - **patterns** *(advisory, `--deep`)* — the algorithm/idiom catalog scoped
376
+ to the diff: N+1 query shapes, loop-invariant calls, string-concat loops,
377
+ each with the better approach and a fix sketch
378
+
379
+ **The fix loop.** Wired via `roam hooks claude --write`, findings come back
380
+ to the agent as an actionable list — *fix, then re-verify* — and the gate runs
381
+ again on each correction (Claude bounds consecutive continuations). A
382
+ human-reviewed exception can be recorded in `.roam-suppressions.yml`, keyed by
383
+ **symbol** so it survives refactors that shift line numbers; automatic hook
384
+ corrections cannot alter suppressions, policy, baselines, or verification
385
+ scope. The compile hook remains fail-open. The edited-turn Stop gate is quiet
386
+ only on a complete PASS and blocks when verification is unavailable,
387
+ malformed, incomplete, or reports non-advisory findings.
388
+
389
+ **Scoping and debt control** — the flags that make verify usable on a
390
+ codebase with history:
391
+
392
+ ```bash
393
+ roam verify --auto # changed files, auto-selected checks
394
+ roam verify --diff-only # only lines you changed vs HEAD
395
+ roam verify --changed-lines cli.py:40-90 # exact ranges (agent harnesses)
396
+ roam verify --baseline-write # snapshot current findings as accepted debt
397
+ roam verify --new-only # then: only NEW findings fail
398
+ roam verify --report --severity fail # whole-repo ranked punch-list (non-gating)
399
+ roam verify --off / --on # pause / resume the loop repo-wide
400
+ ```
401
+
402
+ **The commands that run beside it** in the same post-edit stance:
403
+
404
+ | Command | Role in the loop |
405
+ |---|---|
406
+ | `roam verify-imports --path src/roam/cli.py` | The hallucination firewall, standalone — validates every import resolves |
407
+ | `roam delete-check --ci` | Gates a deletion diff on surviving references (exit 5 on BREAK-RISK) |
408
+ | `git diff \| roam critique` | Clones-not-edited check + blast radius on the patch (exit 5 on high severity) |
409
+ | `roam verify --report --persist` | Writes findings to the registry so the **compiler** embeds them as `known_findings` in future envelopes — debt gets fixed opportunistically |
410
+
411
+ **Measured, not asserted.** The detector quality is pinned by three eval
412
+ suites in CI: a planted-issues recall corpus (every category must catch its
413
+ canonical positives), a clean-corpus false-positive lock (dogfooded on this
414
+ repo: the naming rule alone dropped ~2000 FPs when test files stopped
415
+ voting), and an adversarial suppression fuzz suite (suppressions survive
416
+ refactors, never lose entries).
417
+
418
+ ---
419
+
420
+ ## What's New
421
+
422
+ **v13.10 (2026-07-28) — repeated work becomes measurable procedures, and post-edit verification becomes proof-complete.** Privacy-preserving transcript/shell-template mining can nominate repeated-work interventions without exposing raw prompts or claiming causal savings; `roam savings` promotes only prospectively joined, integrity-checked outcomes. The Claude adapter now binds every edited turn to a strict Verify receipt and blocks unavailable, malformed, incomplete, or failing evidence. Interrupted indexes carry a generation-bound, durably synced lifecycle marker and force a full non-light rebuild before analysis regardless of the direct caller; completion is published only after SQLite checkpoint/fsync, so a crash cannot turn partial graph state into plausible empty answers. Roam owns the canonical hooks end to end—Compile Code no longer rewrites installed source. Full notes: [CHANGELOG.md](CHANGELOG.md).
423
+
424
+ <details>
425
+ <summary><strong>Earlier release notes — v13.6 → v13.0</strong></summary>
426
+
427
+ **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).
428
+
429
+ **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).
430
+
431
+ **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).
432
+
433
+ ### v13.3 (released 2026-05-19) — MCP runtime security + UX polish
434
+
435
+ - **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`.
436
+ - **3 new persisting detectors** (`boundary`, `test-hermeticity`, `compatibility`), `roam doctor` advisory-vs-blocking split, and `--json` warnings-channel discipline.
437
+
438
+ ### v13.2 (released 2026-05-16) — Evidence freshness + resolution disclosure
439
+
440
+ - **Canonical unresolved-path envelopes** across `impact` / `preflight` / `trace` / `test-map` / `context` / `safe-delete` / `split` / `why` — one explicit "not found" shape in JSON mode.
441
+ - **Evidence freshness stamped at the producer.** Runs record hashes for `.roam-rules.yml`, `.roam/constitution.yml`, `.roam/control-map.yml`.
442
+ - **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.
443
+
444
+ ### v13.1 (released 2026-05-15) — Pattern-2 propagation + shared YAML helper + 3 flagship silent-fallback seals
445
+
446
+ - **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.
447
+ - **Shared YAML config-loader helper** (`load_yaml_with_warnings`). 5 of 7 surveyed loaders migrated; ~125 LOC removed.
448
+ - **5 new live smell detectors.** `type-switch`, `speculative-generality`, `empty-catch`, `cross-layer-clone`, `parallel-hierarchy` — `roam smells` now ships 24 deterministic detectors.
449
+ - **30+ behavioral Pattern-2 fixes** + empty-corpus smoke sweep across 25+ detectors.
450
+
451
+ ### v13.0 (released 2026-05-13) — Agent-OS substrate + Laravel idioms + Vue SFC
452
+
453
+ - **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`).
454
+ - **World-model classifiers (R28).** `roam side-effects`, `roam idempotency`, `roam causal-graph`, `roam tx-boundaries`.
455
+ - **Laravel dynamic-dispatch idioms.** 7 of 8 implicit-edge idioms (Route closures, Eloquent scopes, Policy resolution, Observer registration, Job/Queue/Artisan dispatch).
456
+ - **Vue SFC import graph.** `.vue` template/script/style blocks parsed; component registrations resolved across the SFC boundary.
457
+ - **~20 new CLI commands** (`brief`, `next`, `mode`, `constitution`, `laws`, `memory`, `lease`, `runs`, `replay`, `agent-score`, `agents-md`, …) and schema bump (USER_VERSION 12 → 13).
458
+
459
+ </details>
460
+
461
+ Full release notes in [CHANGELOG.md](CHANGELOG.md).
462
+
463
+ ## Best for
464
+
465
+ - **Agent-assisted coding** — structured answers that cut tokens vs raw file exploration
466
+ - **Large codebases (100+ files)** — graph queries beat linear search at scale
467
+ - **Architecture governance** — health scores, CI quality gates, budget enforcement, fitness functions
468
+ - **Safe refactoring** — blast radius, affected tests, pre-change safety checks, graph-level editing
469
+ - **Multi-agent orchestration** — partition codebases for parallel agents with conflict-aware planning
470
+ - **Security analysis** — vulnerability reachability, auth gaps, CVE path tracing, taint analysis
471
+ - **Algorithm optimization** — detect O(n²) loops, N+1 queries, and 32 other anti-patterns with suggested fixes
472
+
473
+ ### When NOT to use Roam
474
+
475
+ - **Real-time type checking** — use an LSP (pyright, gopls, tsserver). Roam is static and offline.
476
+ - **Small scripts (<10 files)** — read the files directly.
477
+ - **Pure text search** — ripgrep is faster for raw string matching.
478
+
479
+ ### What's measured vs advisory
480
+
481
+ Roam's surfaces differ in how rigorously they've been validated — know which is which before you gate on them:
482
+
483
+ - **Repair-intent retrieval** (`roam retrieve --repair-intent <patch>`) — **the one surface with a preregistered, held-out, stranger-repo result.** Give it the diff of a fix you just made and it reranks toward the *other* files that need the same repair, rather than the files that merely look similar. Measured on 576 real multi-site fixes from 12 third-party repos (rich, aiohttp, httpx, fastapi, click, flask, jinja, werkzeug, pydantic, pytest, attrs, urllib3), frozen before scoring and shipped in-repo:
484
+
485
+ | vs plain lexical search | delta | 95% CI (bootstrap, n=2000) |
486
+ |---|---|---|
487
+ | nDCG@10 | **+0.064** (0.605 vs 0.541) | [+0.032, +0.097] |
488
+ | P@3 | **+0.041** | [+0.024, +0.058] |
489
+ | MRR | **+0.059** | [+0.026, +0.092] |
490
+ | recall@10 | +0.034 | [−0.002, +0.070] — **not significant** |
491
+
492
+ That clears the preregistered bar (nDCG@10 ≥ +0.05 with a CI excluding zero) and it survived an adversarial falsifier. **Read it for what it is: a real but modest improvement over lexical search on this task — not a step change.** The one striking result underneath: our graph-sibling candidate pool *on its own* scores **0.258**, far *worse* than lexical's 0.541. It only beats lexical once repair-intent reranking is applied. The reranking is not polish on a good pool — it is the reason the pool is usable at all.
493
+
494
+ Scope honestly: it needs a real patch as input, and it finds *repair siblings*. It is not a general-purpose search improvement, and recall is not measurably better. This is the only roam surface we would put in front of your codebase without hedging.
495
+ - **Reachability triage** (`roam vuln-reach`, `roam sbom`) — the most conservatively designed surface: reachability is derived only from import evidence (import sites and import edges, with file:line), never from symbol-name coincidence, so a CVE with no import evidence reports as unknown rather than reachable. Strong precision by construction; real-CVE recall on unfamiliar repos is still being measured — use it as a high-precision triage signal, and treat "unknown" as unverified rather than safe.
496
+ - **Taint packs** (`roam taint`) — validated on synthetic fixtures; real-code recall on arbitrary repositories is low/unmeasured. Treat findings as leads to investigate, not a completeness guarantee; the `--ci` gate is opt-in.
497
+ - **Idiom & long-tail detectors** (`roam auth-gaps`, `roam missing-index`, `roam over-fetch`, `roam n1`, framework idioms) — advisory. Blind precision on unfamiliar repos is not yet measured for all of them, and framework idiom detectors that measured low on stranger repos are opt-in (not on the default surface). Review each finding; don't gate CI on these alone.
498
+
499
+ ## Core commands
500
+
501
+ <!-- BEGIN auto-count:readme-canonical-mention -->
502
+ **Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining ~280 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 **285 commands (278 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.
503
+ <!-- END auto-count:readme-canonical-mention -->
504
+
505
+ | Verb | What it does |
506
+ |------|--------------|
507
+ | `roam understand` | Full codebase briefing: stack, architecture, key abstractions, health, conventions, entry points |
508
+ | `roam context <symbol>` | AI-optimized context: definition + callers + callees + files-to-read with line ranges |
509
+ | `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 |
510
+ | `roam preflight <symbol>` | Pre-change safety gate: blast radius + tests + complexity + coupling + fitness |
511
+ | `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 |
512
+
513
+ 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 37 commands).
514
+
515
+ <details>
516
+ <!-- BEGIN auto-count:readme-cli-command-list-summary -->
517
+ <summary><strong>Full command reference — canonical command list (all 278)</strong></summary>
518
+ <!-- END auto-count:readme-cli-command-list-summary -->
519
+
520
+ The complete, always-current list with flags and examples lives in the [Command Reference](https://roam-code.com/docs/command-reference).
521
+
522
+ </details>
523
+
524
+ A few representative commands beyond the core five:
525
+
526
+ - **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`.
527
+ - **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).
528
+ - **Backend quality:** `roam n1` (N+1 queries), `roam auth-gaps`, `roam missing-index`, `roam over-fetch`, `roam taint` (graph-reach taint, 11 rule packs).
529
+ - **Index-aware search:** `roam search <pattern>`, `roam grep <pattern> -C 5` (grep + bounded code packets + reachability + PageRank), `roam grep <pattern> --whole-symbol` (deduplicated enclosing functions/classes), `roam uses <name>` (graph-precise references, no string-literal false positives).
530
+ - **Multi-agent:** `roam orchestrate --agents 3` (conflict-aware partitioning), `roam fleet plan`, `roam lease` (parallel-agent coordination).
531
+
532
+ ## Walkthrough
533
+
534
+ <details>
535
+ <summary><strong>10-command walkthrough investigating Flask</strong> (click to expand)</summary>
536
+
537
+ How you'd use Roam to understand a project you've never seen before, using Flask as an example.
538
+
539
+ ```
540
+ $ roam understand # briefing: languages, stack, layers/clusters, health, key abstractions, entry points
541
+ $ roam file src/flask/app.py # file skeleton: definitions + signatures + health
542
+ $ roam deps src/flask/app.py # what imports this file
543
+ $ roam weather # hotspots ranked by churn × complexity
544
+ $ roam health # composite 0-100 + god components / cycles / layer violations
545
+ $ roam context Flask # AI-ready context: files to read with line ranges
546
+ $ roam preflight Flask # pre-change gate: blast radius + tests + complexity + fitness
547
+ $ roam split src/flask/app.py # internal symbol groups + extraction suggestions
548
+ $ roam why Flask url_for Blueprint # role classification (Hub/Bridge/Core) + reach + risk
549
+ $ roam health --gate # CI quality gate (exit 5 on failure)
550
+ ```
551
+
552
+ Ten commands. Complete picture: structure, dependencies, hotspots, health, context, safety checks, decomposition, and CI gates.
553
+
554
+ </details>
555
+
556
+ ## Integration with AI coding tools
557
+
558
+ 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:
559
+
560
+ ```text
561
+ $ roam health
562
+ VERDICT: Fair codebase (77/100) — 65 critical, 0 warnings, focus: god_components
563
+
564
+ Health Score: 77/100 | Tangle: 0.0% (0/44056 symbols in cycles)
565
+ Propagation Cost: 6.0% | Algebraic Connectivity: 0.0146
566
+
567
+ Health: 65 issues — 65 CRITICAL, 37 INFO
568
+ (0 actionable cycles, 37 local/test cycles ignored, 50 god components
569
+ (19 actionable, 31 expected utilities), 15 bottlenecks (2 actionable))
570
+ Breakdown: cycles [0 issues], god [50 CRITICAL], bottlenecks [15 CRITICAL], layers [0 issues]
571
+
572
+ Top CRITICAL issues (run `roam --detail health` for the full breakdown):
573
+ god component: result (prop, degree=2198)
574
+ god component: path (prop, degree=677)
575
+ ```
576
+
577
+ *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.
578
+
579
+ **Fastest setup (Claude Code):** wire the compile/verify loop in one command — no config files, no MCP setup, no rules to write:
580
+
581
+ ```bash
582
+ roam hooks claude --write # compile-before + verify-after hooks; --uninstall to undo
583
+ ```
584
+
585
+ For other agents (or alongside the hooks), point them at Roam via instructions in their config file:
586
+
587
+ ```bash
588
+ roam describe --write # auto-detects CLAUDE.md, AGENTS.md, .cursor/rules, etc.
589
+ roam describe --agent-prompt # compact ~500-token prompt — copy-paste into an existing config
590
+ roam minimap --update # inject/refresh an annotated codebase minimap (won't touch other content)
591
+ ```
592
+
593
+ This teaches the agent which command fits each situation: `roam preflight` before changes, `roam context` for files to read, `roam diagnose` for debugging.
594
+
595
+ <details>
596
+ <summary><strong>Where to put agent instructions for each tool</strong></summary>
597
+
598
+ | Tool | Config file |
599
+ |------|-------------|
600
+ | **Claude Code** | `CLAUDE.md` in your project root |
601
+ | **OpenAI Codex CLI** | `AGENTS.md` in your project root |
602
+ | **Gemini CLI** | `GEMINI.md` in your project root |
603
+ | **Cursor** | `.cursor/rules/roam.mdc` (add `alwaysApply: true` frontmatter) |
604
+ | **Windsurf** | `.windsurf/rules/roam.md` (add `trigger: always_on` frontmatter) |
605
+ | **GitHub Copilot** | `.github/copilot-instructions.md` |
606
+ | **Aider** | `CONVENTIONS.md` |
607
+ | **Continue.dev** | `config.yaml` rules |
608
+ | **Cline** | `.clinerules/` directory |
609
+
610
+ </details>
611
+
612
+ ## MCP Server
613
+
614
+ Roam includes a [Model Context Protocol](https://modelcontextprotocol.io/) server for direct integration with MCP-aware tools.
615
+
616
+ ```bash
617
+ pip install "roam-code[mcp]"
618
+ roam mcp
619
+ ```
620
+
621
+ <!-- BEGIN auto-count:readme-default-preset -->
622
+ **Default preset:** `core` (17 tools: 16 core + `roam_expand_toolset` meta-tool).
623
+ <!-- END auto-count:readme-default-preset -->
624
+
625
+ 244 MCP tools span 8 selectable presets (`core`, `review`, `refactor`, `debug`, `architecture`, `compliance`, `compile-curated`, `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.
626
+
627
+ **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.
628
+
629
+ **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. Mixed query/write tools are classified per invocation, so a read-only form stays available while an explicit persist/write flag raises the required mode and receipt effects. Gateway integrators: see [`dev/MCP-SECURITY-POSTURE.md`](dev/MCP-SECURITY-POSTURE.md).
630
+
631
+ See [Using Roam via MCP](https://roam-code.com/docs/mcp-usage) for the first-run flow and canonical agent sequence.
632
+
633
+ <!-- BEGIN auto-count:readme-mcp-core-preset-tools -->
634
+ 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`.
635
+ <!-- END auto-count:readme-mcp-core-preset-tools -->
636
+
637
+ `roam_ask` (and `roam ask` on the CLI) is a natural-language codebase question dispatcher — 'is it safe to delete X?', 'where does login validate?', 'who owns module Y?' — that routes intent to one recipe in the graph-aware 31-recipe registry, replacing a Grep+Read round trip with one call.
638
+
639
+ <!-- BEGIN auto-count:readme-mcp-tool-list-link -->
640
+ The full 244-tool table with descriptions lives in [`docs/mcp-tools.md`](docs/mcp-tools.md).
641
+ <!-- END auto-count:readme-mcp-tool-list-link -->
642
+
643
+ <!-- MCP Registry ownership token. The registry scans the PUBLISHED PyPI
644
+ long_description (this file) for the literal string below to bind the
645
+ package to the server name in server.json. Keep it byte-identical to
646
+ server.json -> name; tests/test_distribution_manifests.py pins that. -->
647
+ <!-- mcp-name: io.github.cranot/roam-code -->
648
+
649
+ <details>
650
+ <summary><strong>MCP client setup (Claude Code / Claude Desktop / Cursor / VS Code)</strong></summary>
651
+
652
+ **Prerequisite for every client below:** Python 3.10+ and `pip install "roam-code[mcp]"`.
653
+ Each config launches the `roam` binary from your `PATH`; if roam is not installed the
654
+ server exits with `command not found` before it can report anything more useful.
655
+
656
+ **Claude Code:** `claude mcp add roam-code -- roam mcp`, or add to `.mcp.json`:
657
+
658
+ ```json
659
+ { "mcpServers": { "roam-code": { "command": "roam", "args": ["mcp"] } } }
660
+ ```
661
+
662
+ **Claude Desktop** — add to `claude_desktop_config.json` (include `"cwd": "/path/to/your/project"`).
663
+
664
+ **Cursor** — add the same `mcpServers` block to `.cursor/mcp.json`.
665
+
666
+ **VS Code + Copilot** — add to `.vscode/mcp.json` under a `servers` key with `"type": "stdio"`.
667
+
668
+ **Which preset ships where.** The Claude Code plugin (`.claude-plugin/plugin.json`) pins
669
+ `ROAM_MCP_PRESET=core` — a consumer wants a tight prompt surface. This repo's own
670
+ `.mcp.json` pins `full` on purpose: agents working *on* roam-code dogfood the entire
671
+ 244-tool surface. The two files name the same server and disagree deliberately; the split
672
+ is pinned by `tests/test_distribution_manifests.py` so neither drifts into the other.
673
+
674
+ </details>
675
+
676
+ ## Go deeper
677
+
678
+ Pick the path that matches your role:
679
+
680
+ - **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.
681
+ - **Developer tutorial (15 min):** [Getting Started](https://roam-code.com/docs/getting-started) — install, index, query, ship.
682
+ - **Agent integration:** `roam mcp-setup claude-code --write` (or `cursor`, `windsurf`, `vscode`, `gemini-cli`, `codex-cli`) — then [Using Roam via MCP](https://roam-code.com/docs/mcp-usage) for the cold-start envelope and canonical agent loop.
683
+ - **Full surface:** [Command Reference](https://roam-code.com/docs/command-reference) — every command, flag, and JSON envelope.
684
+ - **Architecture:** [How it fits together](https://roam-code.com/docs/architecture) — graph, findings registry, run ledger, evidence compiler.
685
+
686
+ ## CI/CD integration
687
+
688
+ All you need is Python 3.10+ and `pip install roam-code`.
689
+
690
+ ```yaml
691
+ # .github/workflows/roam.yml
692
+ name: Roam Analysis
693
+ on: [pull_request]
694
+
695
+ jobs:
696
+ roam:
697
+ runs-on: ubuntu-24.04
698
+ steps:
699
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
700
+ with:
701
+ fetch-depth: 0
702
+ persist-credentials: false
703
+ # For production, replace the tag with the reviewed 40-character SHA it
704
+ # points at — a release tag is readable but remains movable.
705
+ - uses: Cranot/roam-code@v13.10.0
706
+ with:
707
+ commands: health
708
+ gate: "score>=70"
709
+ sarif: 'true'
710
+ comment: 'true'
711
+ ```
712
+
713
+ Generate this workflow explicitly with `roam init --with-ci=github` or
714
+ `roam ci-setup --platform github --write`; plain `roam init` does not modify CI configuration.
715
+ The Action accepts `commands`, `gate` (quality-gate expression, exit 5 on
716
+ failure), `sarif` (upload to GitHub Code Scanning), `comment` (sticky PR
717
+ comment), `cache`, and `changed-only` (incremental mode).
718
+
719
+ **SARIF output.** 37 commands honour the global `--sarif` flag (health, complexity, dead, smells, clones, vulns, taint, secrets, n1, …). Minimal upload:
720
+
721
+ ```yaml
722
+ - run: roam --sarif health > roam-health.sarif
723
+ - uses: github/codeql-action/upload-sarif@03e4368ac7daa2bd82b3e85262f3bf87ee112f57 # v3.36.0
724
+ with:
725
+ sarif_file: roam-health.sarif
726
+ ```
727
+
728
+ For GitLab / Jenkins / Azure / Bitbucket templates, severity gates, and upload guardrails, see [docs/ci-integration.md](docs/ci-integration.md).
729
+
730
+ ## Roam Guard for PRs
731
+
732
+ `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.
733
+
734
+ ```bash
735
+ # Local — show the markdown verdict for your current branch's pr-bundle.
736
+ roam guard-pr --format markdown
737
+
738
+ # CI — one line; --ci is shorthand for --strict + --init-if-missing + markdown.
739
+ roam guard-pr --ci --output guard.md
740
+
741
+ # CI — post to GitHub Check Runs (works with the default GITHUB_TOKEN).
742
+ roam guard-pr --post-check --gh-repo $REPO --gh-sha $SHA
743
+ ```
744
+
745
+ **Example reviewer markdown:**
746
+
747
+ ```markdown
748
+ ## 🛑 Roam Guard verdict: `blocked`
749
+
750
+ > **0** of **4** required checks ran. **4** missing. Risk: `low`.
751
+
752
+ ### Verdict reasons
753
+ - `required_checks_not_run` (×4) — `because=config_file_changed`
754
+ - `lint.make.lint` (detail=['.mcp.json'])
755
+ - `test.make.test` (detail=['.mcp.json'])
756
+
757
+ ### Verification checks
758
+ | Status | Command | Why |
759
+ |---|---|---|
760
+ | 🛑 missing | `lint.make.lint` | config_file_changed |
761
+ | 🛑 missing | `test.make.test` | config_file_changed |
762
+ ```
763
+
764
+ **Verdict → CI exit + GitHub conclusion map.** Exit codes are only emitted under
765
+ `--strict` (which `--ci` implies); without it `guard-pr` always exits 0 and the
766
+ verdict is reporting-only, so a CI gate must pass `--ci` or `--strict`:
767
+
768
+ | Roam verdict | Exit code (`--strict` / `--ci`) | Exit code (default) | GitHub conclusion | Build status |
769
+ |---|---|---|---|---|
770
+ | `pass` | 0 | 0 | `success` | ✅ green |
771
+ | `pass_with_warnings` | 0 | 0 | `neutral` | 🟡 yellow |
772
+ | `needs_review` | 4 | 0 (+ stderr banner) | `action_required` | 🟠 attention |
773
+ | `blocked` | 5 | 0 (+ stderr banner) | `failure` | 🛑 red |
774
+
775
+ A reporting-only run never passes *silently*. When the verdict would have
776
+ gated (`needs_review` / `blocked`) but no `--strict`/`--ci` was given, `guard-pr`
777
+ writes a loud banner to **stderr** naming the flag and the exit code it
778
+ suppressed, and the `--json` envelope carries the same fact in
779
+ `summary.gate_enforced`, `summary.gate_suppressed` and
780
+ `summary.verdict_exit_code`. Check `gate_suppressed`, not `exit_code`, if you
781
+ need to tell "verdict was clean" from "verdict was blocking but this run
782
+ wasn't gating" — `exit_code` is 0 in both cases.
783
+
784
+ **Output formats:** `text` (default), `markdown` (PR comment / GH Check), `json` (the full AgentChangeProofBundle v1). SARIF is not a `guard-pr` format — emit it from the same bundle with `roam proof-bundle --format sarif`.
785
+
786
+ **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`:
787
+
788
+ ```yaml
789
+ name: my-repo
790
+ extends: default
791
+ file_patterns:
792
+ - id: api_schema_changed
793
+ regex: '^src/api/.*\.proto$'
794
+ applies_to_kinds: [test, build]
795
+ ```
796
+
797
+ **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`.
798
+
799
+ **See also:**
800
+ - [templates/examples/roam-guard-pr.github-actions.yml](templates/examples/roam-guard-pr.github-actions.yml) — drop-in GHA workflow
801
+ - [templates/examples/roam-guard-pr.README.md](templates/examples/roam-guard-pr.README.md) — full adoption guide
802
+ - [templates/examples/roam-guard-rules.default.yml](templates/examples/roam-guard-rules.default.yml) — default rule pack
803
+
804
+ ## Paid layers (free CLI stays Apache 2.0)
805
+
806
+ The CLI is Apache 2.0, uses a local zero-API-key analysis engine, and never expires. Three optional paid layers build on the same engine:
807
+
808
+ - **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`).
809
+ - **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`.
810
+ - **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`.
811
+
812
+ Early access — email [hello@roam-code.com](mailto:hello@roam-code.com). Full pricing at <https://roam-code.com/pricing>.
813
+
814
+ ## Language Support
815
+
816
+ ### Tier 1 — Full extraction (dedicated parsers)
817
+
818
+ | Language | Extensions | Symbols | References | Inheritance |
819
+ |----------|-----------|---------|------------|-------------|
820
+ | Python | `.py` `.pyi` | classes, functions, methods, decorators, variables | imports, calls, inheritance | extends, `__all__` exports |
821
+ | JavaScript | `.js` `.jsx` `.mjs` `.cjs` | classes, functions, arrow functions, CJS exports | imports, require(), calls | extends |
822
+ | TypeScript | `.ts` `.tsx` `.mts` `.cts` | interfaces, type aliases, enums + all JS | imports, calls, type refs | extends, implements |
823
+ | Java | `.java` | classes, interfaces, enums, constructors, fields | imports, calls | extends, implements |
824
+ | Go | `.go` | structs, interfaces, functions, methods, fields | imports, calls | embedded structs |
825
+ | Rust | `.rs` | structs, traits, impls, enums, functions | use, calls | impl Trait for Struct |
826
+ | C / C++ | `.c` `.h` `.cpp` `.hpp` `.cc` | structs, classes, functions, namespaces, templates | includes, calls | extends |
827
+ | C# | `.cs` | classes, interfaces, structs, enums, records, methods, properties, delegates, events | using directives, calls, `new`, attributes | extends, implements |
828
+ | PHP | `.php` | classes, interfaces, traits, enums, methods, properties | namespace use, calls, static calls, `new` | extends, implements, use (traits) |
829
+ | Ruby | `.rb` | classes, modules, methods, singleton methods, constants | require, require_relative, include/extend, calls | class inheritance |
830
+ | Kotlin | `.kt` `.kts` | classes, interfaces, enums, objects, functions, methods, properties | imports, calls, type refs | extends, implements |
831
+ | Scala | `.scala` `.sc` | classes, traits, objects, case classes, functions, val/var, type aliases | imports, calls, `new` | extends, with (trait mixins) |
832
+ | Swift | `.swift` | classes, structs, enums, protocols, functions, methods, properties | imports, calls, type refs | extends, conforms |
833
+ | Dart | `.dart` | classes, mixins, extensions, enums, type aliases, functions, methods, constructors | imports, calls, type refs | extends, implements, with |
834
+ | Visual FoxPro | `.prg` | functions, procedures, classes, methods, properties, constants | DO, SET PROCEDURE/CLASSLIB, CREATEOBJECT, `obj.method()` | DEFINE CLASS ... AS |
835
+ | SQL (DDL) | `.sql` | tables, columns, views, functions, triggers, schemas, types, sequences | foreign keys, view table deps, trigger refs | — |
836
+ | YAML (CI/CD) | `.yml` `.yaml` | GitLab CI jobs/anchors, GitHub Actions workflows/jobs, generic top-level keys | `extends:`, `needs:`, `!reference`, `uses:` | — |
837
+ | HCL / Terraform | `.tf` `.tfvars` `.hcl` | `resource`, `data`, `variable`, `output`, `module`, `provider`, `locals` | `var.*`, `module.*`, `data.*`, `local.*` | — |
838
+ | Vue / Svelte | `.vue` `.svelte` | via `<script>` block extraction (TS/JS) | imports, calls, type refs | extends, implements |
839
+
840
+ <details>
841
+ <summary><strong>Salesforce ecosystem (Tier 1)</strong></summary>
842
+
843
+ | Language | Extensions | Symbols | References |
844
+ |----------|-----------|---------|------------|
845
+ | Apex | `.cls` `.trigger` | classes, triggers, SOQL, annotations | imports, calls, System.Label, generic type refs |
846
+ | Aura | `.cmp` `.app` `.evt` `.intf` `.design` | components, attributes, methods, events | controller refs, component refs |
847
+ | LWC (JavaScript) | `.js` (in LWC dirs) | anonymous class from filename | `@salesforce/apex/`, `@salesforce/schema/`, `@salesforce/label/` |
848
+ | Visualforce | `.page` `.component` | pages, components | controller/extensions, merge fields, includes |
849
+ | SF Metadata XML | `*-meta.xml` | objects, fields, rules, layouts | Apex class refs, formula field refs, Flow actionCalls |
850
+
851
+ Cross-language edges mean `roam impact AccountService` shows blast radius across Apex, LWC, Aura, Visualforce, and Flows.
852
+
853
+ </details>
854
+
855
+ Tier 2 languages (and `.jsonc` / `.mdx`) get basic symbol extraction via a generic tree-sitter walker.
856
+
857
+ ## Performance
858
+
859
+ | Metric | Value |
860
+ |--------|-------|
861
+ | Index 200 files | ~3-5s |
862
+ | Index 3,000 files | ~2 min |
863
+ | Incremental (no changes) | <1s |
864
+ | Any query command | <0.5s |
865
+
866
+ Every figure includes CLI process startup, which is host- and platform-dependent:
867
+ on a slow Windows host `roam --version` alone can cost ~1.5s, putting a floor
868
+ under every row above. Measure on your own machine before gating on these.
869
+
870
+ After the first full index, `roam index` only re-processes changed files (mtime + SHA-256 hash). The OSS benchmark harness in [`benchmarks/oss-eval/`](benchmarks/oss-eval/) tracks 14 repositories (Express, Axios, Vue, Laravel, Svelte, React, Django, cpython, Linux, …); the committed snapshot in `results/latest.md` records which targets completed and which failed or were not present locally.
871
+
872
+ Compiler A/B results, the per-task gallery, routing stats, and the
873
+ version-keyed eval history live in [The Compiler](#the-compiler--your-agents-first-token-already-knows-the-answer)
874
+ section — one home, no duplicate numbers.
875
+
876
+ ## How It Works
877
+
878
+ ```
879
+ Codebase
880
+ |
881
+ [1] Discovery ──── git ls-files (respects .gitignore + .roamignore)
882
+ [2] Parse ──────── tree-sitter AST per file (28 languages)
883
+ [3] Extract ────── symbols + references (calls, imports, inheritance)
884
+ [4] Resolve ────── match references to definitions → edges
885
+ [5] Metrics ────── adaptive PageRank, betweenness, cognitive complexity, Halstead
886
+ [6] Algorithms ── 34-task anti-pattern catalog (O(n^2) loops, N+1, recursion, async)
887
+ [7] Git ────────── churn, co-change matrix, authorship, Renyi entropy
888
+ [8] Clusters ───── Louvain community detection
889
+ [9] Health ─────── per-file scores (7-factor) + composite score (0-100)
890
+ [10] Store ─────── .roam/index.db (SQLite, WAL mode)
891
+ ```
892
+
893
+ 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).
894
+
895
+ ## How Roam Compares
896
+
897
+ roam-code 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.
898
+
899
+ | Capability | roam-code | AI IDEs (Cursor, Windsurf) | AI Agents (Claude Code, Codex) | SAST (SonarQube, CodeQL) |
900
+ |---|---|---|---|---|
901
+ | Persistent local index | SQLite | Cloud embeddings | None | Per-scan |
902
+ | Call graph analysis | Yes | No | No | Yes (CodeQL) |
903
+ | PageRank / centrality | Yes | No | No | No |
904
+ | Cycle detection (Tarjan) | Yes | No | No | Deprecated (SonarQube) |
905
+ | Community detection (Louvain) | Yes | No | No | No |
906
+ | Git churn / co-change | Yes | No | No | No |
907
+ | Architecture simulation | Yes | No | No | No |
908
+ | Multi-agent partitioning | Yes | No | No | No |
909
+ | MCP tools for agents | 244 (17 in default core preset) | Client only | Client only | 34 (SonarQube) |
910
+ | Languages | 28 | 70+ | 50+ | 12-42 |
911
+ | Local source analysis, zero API keys | Yes | No | No | Partial |
912
+ | Open source | Apache 2.0 | No | Partial | Partial |
913
+ | Interprocedural taint depth | shallow (OpenVEX-shaped) | n/a | n/a | **deep (CodeQL)** |
914
+ | Built-in rule packs | 11 taint packs, 10 governance rules | n/a | n/a | **2,000+ (Semgrep community)** |
915
+ | Cross-repo at GitHub scale | workspace overlay (sibling repos) | n/a | n/a | **native (Sourcegraph)** |
916
+
917
+ ### Key Differentiators
918
+
919
+ - **vs AI IDEs** (Cursor, Windsurf, Augment): roam-code provides deterministic structural analysis. AI IDEs use probabilistic embeddings that can't guarantee reproducible results.
920
+ - **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.
921
+ - **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.
922
+ - **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.
923
+
924
+ <details>
925
+ <summary><strong>For teams — cost comparison</strong></summary>
926
+
927
+ | Tool | Annual cost (20-dev team) | Infrastructure | Setup time |
928
+ |------|--------------------------|----------------|------------|
929
+ | SonarQube Server (paid tier) | $15,000-$45,000 | Self-hosted server | Days |
930
+ | CodeScene | $20,000-$60,000 | SaaS or on-prem | Hours |
931
+ | Code Climate | $12,000-$36,000 | SaaS | Hours |
932
+ | **Roam (free CLI)** | **$0 (Apache 2.0)** | **None (local)** | **5 minutes** |
933
+
934
+ 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`.
935
+
936
+ </details>
937
+
938
+ ## FAQ
939
+
940
+ **Does Roam send any data externally?**
941
+ Not during ordinary local analysis. Roam does not automatically upload source code, indexes, findings, telemetry, or analytics, and it performs no automatic update check. A cold grammar cache retrieves one checksum-verified parser bundle and retains it locally. Explicit features can contact PyPI, GitHub, user-selected URLs, Roam Cloud, or Sigstore services; [`docs/network-boundary.md`](docs/network-boundary.md) lists every built-in trigger, destination, and payload class. Inspect `roam metrics-push` with `--dry-run` before sending its allow-listed payload.
942
+
943
+ **Can Roam run in air-gapped environments?**
944
+ Yes, after installation and parser prewarming. Run `roam index --force` once while connected on each target platform; the retained bundle lets later grammar loads complete without network access. Avoid the explicit network triggers in the [network-boundary inventory](docs/network-boundary.md), use fixture/file inputs and offline-key signing, and enforce egress policy around project commands launched by `roam verify` or hooks.
945
+
946
+ **Does Roam modify my source code?**
947
+ 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.
948
+
949
+ **How does Roam handle monorepos and multi-repo projects?**
950
+ 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.
951
+
952
+ **Is Roam compatible with SonarQube / CodeScene?**
953
+ Yes — they coexist in the same CI pipeline. SARIF output uploads to GitHub Code Scanning.
954
+
955
+ **Does Roam satisfy SOC 2 / ISO 42001 / EU AI Act on its own?**
956
+ 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.
957
+
958
+ **What's the difference between the free CLI and Roam Review / Cloud / PR Replay?**
959
+ The CLI is Apache 2.0, runs its analysis engine locally, and never expires. Roam Review is a hosted PR bot, Roam Cloud is opt-in metrics history with no source-body upload, PR Replay is a one-shot paid audit. All three are layers on top of the same engine.
960
+
961
+ ## Limitations
962
+
963
+ - **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.
964
+ - **Import resolution is heuristic** — complex re-exports or conditional imports may not resolve.
965
+ - **Limited cross-language edges** — Salesforce, Protobuf, REST API, and multi-repo edges are supported, but not arbitrary FFI.
966
+ - **Tier 2 languages** get basic symbol extraction only via the generic tree-sitter walker.
967
+ - **Large monorepos** (100k+ files) may have slow initial indexing.
968
+
969
+ ## Troubleshooting
970
+
971
+ | Problem | Solution |
972
+ |---------|----------|
973
+ | `roam: command not found` | Ensure install location is on PATH. For `uv`: `uv tool update-shell` |
974
+ | `Another indexing process owns the workspace` | Wait for the other `roam index` to finish. If nothing else is running, the lock is unprovable-stale (`An index lifecycle owner is live or cannot be proven stale`) — delete `.roam/index.lock` and retry |
975
+ | `database is locked` | `roam index --force` to rebuild |
976
+ | Unicode errors on Windows | `chcp 65001` for UTF-8 |
977
+ | Symbol resolves to wrong file | Use `file:symbol` syntax: `roam symbol myfile:MyFunction` |
978
+ | Health score seems wrong | `roam --json health` for factor breakdown |
979
+ | Index stale after `git pull` | `roam index` (incremental). After major refactors: `roam index --force` |
980
+
981
+ ## Update / Uninstall
982
+
983
+ ```bash
984
+ # Update
985
+ pipx upgrade roam-code # or: uv tool upgrade roam-code / pip install --upgrade roam-code
986
+
987
+ # Uninstall
988
+ pipx uninstall roam-code # or: uv tool uninstall roam-code / pip uninstall roam-code
989
+ ```
990
+
991
+ Delete `.roam/` from your project root to clean up local data.
992
+
993
+ ## Contributing
994
+
995
+ ```bash
996
+ git clone https://github.com/Cranot/roam-code.git
997
+ cd roam-code
998
+ pip install -e ".[dev]" # includes pytest, ruff
999
+ pytest tests/ # all test cases must pass
1000
+ ```
1001
+
1002
+ 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.
1003
+
1004
+ ## License
1005
+
1006
+ [Apache 2.0](LICENSE)