roam-code 13.7.1__tar.gz → 13.8.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 (1949) hide show
  1. {roam_code-13.7.1 → roam_code-13.8.0}/PKG-INFO +5 -5
  2. {roam_code-13.7.1 → roam_code-13.8.0}/README.md +4 -4
  3. {roam_code-13.7.1 → roam_code-13.8.0}/pyproject.toml +1 -1
  4. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/detectors.py +23 -0
  5. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/cli.py +9 -0
  6. roam_code-13.8.0/src/roam/commands/cmd_cycle_break.py +277 -0
  7. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_dead.py +39 -6
  8. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_doc_staleness.py +228 -101
  9. roam_code-13.8.0/src/roam/commands/cmd_profile_import.py +153 -0
  10. roam_code-13.8.0/src/roam/commands/cmd_surface_gaps.py +193 -0
  11. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_verify.py +320 -23
  12. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_verify_imports.py +76 -7
  13. roam_code-13.8.0/src/roam/commands/cmd_vue_emits.py +299 -0
  14. roam_code-13.8.0/src/roam/commands/dead_public_surface.py +267 -0
  15. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/competitor_site_data.py +1 -1
  16. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/cycles.py +33 -0
  17. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp-server-card.json +1 -1
  18. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_server.py +6 -5
  19. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/modes/policy.py +11 -0
  20. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/formatter.py +7 -0
  21. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/metric_definitions.py +1 -1
  22. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runtime/lock_modes.py +1 -0
  23. roam_code-13.8.0/src/roam/runtime/profile_ingest.py +243 -0
  24. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/world_model/__init__.py +14 -22
  25. roam_code-13.8.0/src/roam/world_model/restore_loss.py +269 -0
  26. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam_code.egg-info/PKG-INFO +5 -5
  27. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam_code.egg-info/SOURCES.txt +13 -0
  28. roam_code-13.8.0/tests/test_cycle_break.py +75 -0
  29. roam_code-13.8.0/tests/test_dead_public_surface.py +91 -0
  30. roam_code-13.8.0/tests/test_doc_staleness.py +150 -0
  31. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_math.py +42 -0
  32. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_server_card_hash.py +1 -1
  33. roam_code-13.8.0/tests/test_profile_import.py +86 -0
  34. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_realworld_feedback.py +2 -1
  35. roam_code-13.8.0/tests/test_restore_loss.py +173 -0
  36. roam_code-13.8.0/tests/test_surface_gaps.py +98 -0
  37. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify.py +237 -0
  38. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_imports.py +50 -1
  39. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_mode.py +19 -5
  40. roam_code-13.8.0/tests/test_vue_emits.py +68 -0
  41. roam_code-13.7.1/tests/test_doc_staleness.py +0 -70
  42. {roam_code-13.7.1 → roam_code-13.8.0}/LICENSE +0 -0
  43. {roam_code-13.7.1 → roam_code-13.8.0}/setup.cfg +0 -0
  44. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/__init__.py +0 -0
  45. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/__main__.py +0 -0
  46. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/_glob_match.py +0 -0
  47. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/_signature_utils.py +0 -0
  48. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/agent_opt.py +0 -0
  49. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/agents_md/__init__.py +0 -0
  50. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/agents_md/generator.py +0 -0
  51. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/analysis/__init__.py +0 -0
  52. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/analysis/effects.py +0 -0
  53. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/analysis/taint.py +0 -0
  54. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/api.py +0 -0
  55. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/ask/__init__.py +0 -0
  56. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/ask/classifier.py +0 -0
  57. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/ask/recipes.py +0 -0
  58. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/ask/runner.py +0 -0
  59. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/ask/workflow.py +0 -0
  60. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/atomic_io.py +0 -0
  61. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/attest/__init__.py +0 -0
  62. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/attest/cga.py +0 -0
  63. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/attest/emit_vsa.py +0 -0
  64. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/attest/vsa.py +0 -0
  65. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/__init__.py +0 -0
  66. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/base.py +0 -0
  67. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/bridge_config.py +0 -0
  68. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/bridge_django.py +0 -0
  69. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/bridge_protobuf.py +0 -0
  70. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/bridge_rest_api.py +0 -0
  71. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/bridge_salesforce.py +0 -0
  72. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/bridge_template.py +0 -0
  73. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/bridges/registry.py +0 -0
  74. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/capability.py +0 -0
  75. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/__init__.py +0 -0
  76. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/_shared.py +0 -0
  77. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/clones_cross_layer.py +0 -0
  78. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/clones_rename_invariant.py +0 -0
  79. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/fixes.py +0 -0
  80. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/js_idioms.py +0 -0
  81. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/parallel_hierarchy.py +0 -0
  82. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/python_idioms.py +0 -0
  83. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/registry.py +0 -0
  84. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/smells.py +0 -0
  85. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/tasks.py +0 -0
  86. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/type_switch.py +0 -0
  87. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/catalog/versions.py +0 -0
  88. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/command_advice.py +0 -0
  89. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/command_graph.py +0 -0
  90. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/__init__.py +0 -0
  91. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/_command_utils.py +0 -0
  92. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/_yaml_loader.py +0 -0
  93. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/actor_helpers.py +0 -0
  94. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/audit_trail_helpers.py +0 -0
  95. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/batch_search_core.py +0 -0
  96. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/boundary_helpers.py +0 -0
  97. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/changed_files.py +0 -0
  98. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_adrs.py +0 -0
  99. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_adversarial.py +0 -0
  100. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_affected.py +0 -0
  101. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_affected_tests.py +0 -0
  102. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_agent_context.py +0 -0
  103. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_agent_export.py +0 -0
  104. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_agent_opt.py +0 -0
  105. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_agent_plan.py +0 -0
  106. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_agent_score.py +0 -0
  107. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_agents_md.py +0 -0
  108. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_ai_ratio.py +0 -0
  109. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_ai_readiness.py +0 -0
  110. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_alerts.py +0 -0
  111. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_annotate.py +0 -0
  112. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_api.py +0 -0
  113. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_api_changes.py +0 -0
  114. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_api_drift.py +0 -0
  115. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_architecture_drift.py +0 -0
  116. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_article_12_check.py +0 -0
  117. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_ask.py +0 -0
  118. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_at.py +0 -0
  119. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_attest.py +0 -0
  120. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_audit.py +0 -0
  121. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_audit_trail_conformance.py +0 -0
  122. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_audit_trail_export.py +0 -0
  123. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_audit_trail_verify.py +0 -0
  124. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_auth_gaps.py +0 -0
  125. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_batch_search.py +0 -0
  126. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_bench.py +0 -0
  127. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_bisect.py +0 -0
  128. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_boundary.py +0 -0
  129. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_breaking.py +0 -0
  130. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_brief.py +0 -0
  131. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_budget.py +0 -0
  132. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_bus_factor.py +0 -0
  133. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_capabilities.py +0 -0
  134. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_capsule.py +0 -0
  135. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_causal_graph.py +0 -0
  136. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_cga.py +0 -0
  137. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_changelog.py +0 -0
  138. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_check_rules.py +0 -0
  139. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_ci_setup.py +0 -0
  140. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_clean.py +0 -0
  141. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_clones.py +0 -0
  142. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_closure.py +0 -0
  143. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_clusters.py +0 -0
  144. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_codeowners.py +0 -0
  145. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_commands.py +0 -0
  146. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_compare.py +0 -0
  147. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_compatibility.py +0 -0
  148. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_compile.py +0 -0
  149. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_compile_cache.py +0 -0
  150. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_compile_stats.py +0 -0
  151. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_compiler_corpus.py +0 -0
  152. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_compiler_health.py +0 -0
  153. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_complete.py +0 -0
  154. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_complexity.py +0 -0
  155. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_config.py +0 -0
  156. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_congestion.py +0 -0
  157. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_constitution.py +0 -0
  158. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_context.py +0 -0
  159. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_conventions.py +0 -0
  160. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_coupling.py +0 -0
  161. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_coverage_gaps.py +0 -0
  162. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_critique.py +0 -0
  163. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_cut.py +0 -0
  164. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_cycles.py +0 -0
  165. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_dark_matter.py +0 -0
  166. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_dashboard.py +0 -0
  167. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_db_check.py +0 -0
  168. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_debt.py +0 -0
  169. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_delete_check.py +0 -0
  170. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_deps.py +0 -0
  171. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_describe.py +0 -0
  172. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_dev_profile.py +0 -0
  173. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_diagnose.py +0 -0
  174. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_dict_consistency.py +0 -0
  175. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_diff.py +0 -0
  176. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_disambiguate.py +0 -0
  177. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_dispatch_trace.py +0 -0
  178. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_docs_coverage.py +0 -0
  179. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_docs_index.py +0 -0
  180. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_doctor.py +0 -0
  181. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_dogfood.py +0 -0
  182. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_dogfood_aggregate.py +0 -0
  183. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_drift.py +0 -0
  184. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_duplicates.py +0 -0
  185. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_effects.py +0 -0
  186. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_endpoints.py +0 -0
  187. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_entry_points.py +0 -0
  188. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_envelope_diff.py +0 -0
  189. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_eval_retrieve.py +0 -0
  190. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_evidence_diff.py +0 -0
  191. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_evidence_doctor.py +0 -0
  192. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_evidence_oscal.py +0 -0
  193. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_exit_codes.py +0 -0
  194. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_explain_command.py +0 -0
  195. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_fan.py +0 -0
  196. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_file.py +0 -0
  197. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_findings.py +0 -0
  198. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_fingerprint.py +0 -0
  199. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_fitness.py +0 -0
  200. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_flag_dead.py +0 -0
  201. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_fleet.py +0 -0
  202. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_fn_coupling.py +0 -0
  203. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_forecast.py +0 -0
  204. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_graph_diff.py +0 -0
  205. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_graph_export.py +0 -0
  206. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_graph_stats.py +0 -0
  207. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_grep.py +0 -0
  208. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_guard.py +0 -0
  209. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_guard_clean.py +0 -0
  210. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_guard_diff.py +0 -0
  211. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_guard_doctor.py +0 -0
  212. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_guard_history.py +0 -0
  213. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_guard_init.py +0 -0
  214. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_guard_pr.py +0 -0
  215. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_guard_rules.py +0 -0
  216. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_health.py +0 -0
  217. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_help_search.py +0 -0
  218. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_history_grep.py +0 -0
  219. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_hooks.py +0 -0
  220. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_hotspots.py +0 -0
  221. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_hover.py +0 -0
  222. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_idempotency.py +0 -0
  223. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_impact.py +0 -0
  224. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_index.py +0 -0
  225. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_index_bundle.py +0 -0
  226. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_index_stats.py +0 -0
  227. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_ingest_trace.py +0 -0
  228. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_init.py +0 -0
  229. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_intent.py +0 -0
  230. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_intent_check.py +0 -0
  231. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_invariants.py +0 -0
  232. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_laws.py +0 -0
  233. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_layers.py +0 -0
  234. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_lease.py +0 -0
  235. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_llm_smells.py +0 -0
  236. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_lsp.py +0 -0
  237. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_magic_numbers.py +0 -0
  238. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_map.py +0 -0
  239. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_math.py +0 -0
  240. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_mcp.py +0 -0
  241. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_mcp_setup.py +0 -0
  242. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_mcp_status.py +0 -0
  243. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_memory.py +0 -0
  244. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_metrics.py +0 -0
  245. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_metrics_push.py +0 -0
  246. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_migration_plan.py +0 -0
  247. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_migration_safety.py +0 -0
  248. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_minimap.py +0 -0
  249. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_missing_index.py +0 -0
  250. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_mode.py +0 -0
  251. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_module.py +0 -0
  252. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_mutate.py +0 -0
  253. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_n1.py +0 -0
  254. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_next.py +0 -0
  255. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_observability_opt.py +0 -0
  256. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_oracle.py +0 -0
  257. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_orchestrate.py +0 -0
  258. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_orphan_imports.py +0 -0
  259. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_orphan_routes.py +0 -0
  260. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_over_fetch.py +0 -0
  261. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_owner.py +0 -0
  262. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_partition.py +0 -0
  263. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_path_coverage.py +0 -0
  264. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_patterns.py +0 -0
  265. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_permit.py +0 -0
  266. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_plan.py +0 -0
  267. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_plan_refactor.py +0 -0
  268. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_plugins.py +0 -0
  269. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_postmortem.py +0 -0
  270. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pr_analyze.py +0 -0
  271. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pr_bundle.py +0 -0
  272. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pr_comment_render.py +0 -0
  273. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pr_diff.py +0 -0
  274. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pr_prep.py +0 -0
  275. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pr_replay.py +0 -0
  276. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pr_risk.py +0 -0
  277. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pre_commit.py +0 -0
  278. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_preflight.py +0 -0
  279. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_proof_bundle.py +0 -0
  280. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_py_modern.py +0 -0
  281. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_py_types.py +0 -0
  282. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_pytest_fixtures.py +0 -0
  283. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_recipes.py +0 -0
  284. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_recommend.py +0 -0
  285. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_refs_text.py +0 -0
  286. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_relate.py +0 -0
  287. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_repair_siblings.py +0 -0
  288. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_replay.py +0 -0
  289. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_report.py +0 -0
  290. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_reset.py +0 -0
  291. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_retrieve.py +0 -0
  292. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_risk.py +0 -0
  293. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_rules.py +0 -0
  294. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_rules_validate.py +0 -0
  295. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_runs.py +0 -0
  296. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_safe_delete.py +0 -0
  297. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_safe_zones.py +0 -0
  298. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_sbom.py +0 -0
  299. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_schema.py +0 -0
  300. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_search.py +0 -0
  301. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_search_semantic.py +0 -0
  302. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_secrets.py +0 -0
  303. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_semantic_diff.py +0 -0
  304. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_service_report.py +0 -0
  305. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_sibling_patch.py +0 -0
  306. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_side_effects.py +0 -0
  307. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_simulate.py +0 -0
  308. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_simulate_departure.py +0 -0
  309. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_sketch.py +0 -0
  310. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_skill_generate.py +0 -0
  311. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_smells.py +0 -0
  312. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_spectral.py +0 -0
  313. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_split.py +0 -0
  314. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_stale_refs.py +0 -0
  315. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_stats.py +0 -0
  316. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_suggest_refactoring.py +0 -0
  317. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_suggest_reviewers.py +0 -0
  318. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_supply_chain.py +0 -0
  319. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_suppress.py +0 -0
  320. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_surface.py +0 -0
  321. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_symbol.py +0 -0
  322. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_syntax_check.py +0 -0
  323. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_taint.py +0 -0
  324. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_telemetry.py +0 -0
  325. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_test_gaps.py +0 -0
  326. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_test_hermeticity.py +0 -0
  327. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_test_impact.py +0 -0
  328. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_test_pyramid.py +0 -0
  329. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_test_scaffold.py +0 -0
  330. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_testmap.py +0 -0
  331. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_timeline.py +0 -0
  332. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_tour.py +0 -0
  333. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_trace.py +0 -0
  334. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_trends.py +0 -0
  335. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_triage.py +0 -0
  336. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_tx_boundaries.py +0 -0
  337. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_understand.py +0 -0
  338. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_uses.py +0 -0
  339. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_verdict.py +0 -0
  340. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_verification_contract.py +0 -0
  341. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_version.py +0 -0
  342. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_vibe_check.py +0 -0
  343. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_visualize.py +0 -0
  344. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_vuln_map.py +0 -0
  345. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_vuln_reach.py +0 -0
  346. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_vulns.py +0 -0
  347. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_watch.py +0 -0
  348. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_weather.py +0 -0
  349. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_why.py +0 -0
  350. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_why_fail.py +0 -0
  351. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_why_slow.py +0 -0
  352. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_workflow.py +0 -0
  353. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_ws.py +0 -0
  354. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/cmd_xlang.py +0 -0
  355. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/codeowners_helpers.py +0 -0
  356. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/context_helpers.py +0 -0
  357. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/conventions_helper.py +0 -0
  358. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/conventions_primitives.py +0 -0
  359. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/finding_suppress.py +0 -0
  360. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/gate_presets.py +0 -0
  361. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/git_helpers.py +0 -0
  362. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/graph_helpers.py +0 -0
  363. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/grep_helpers.py +0 -0
  364. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/metrics_history.py +0 -0
  365. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/next_steps.py +0 -0
  366. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/pr_analyze/__init__.py +0 -0
  367. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/pr_analyze/audit_trail.py +0 -0
  368. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/pr_analyze/cache.py +0 -0
  369. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/pr_analyze/rules.py +0 -0
  370. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/resolve.py +0 -0
  371. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/smells_suppress.py +0 -0
  372. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/stale_index.py +0 -0
  373. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/stale_refs_anchors.py +0 -0
  374. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/stale_refs_hints.py +0 -0
  375. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/commands/suppression.py +0 -0
  376. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/config.py +0 -0
  377. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/constitution/__init__.py +0 -0
  378. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/constitution/loader.py +0 -0
  379. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/coverage_reports.py +0 -0
  380. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/critique/__init__.py +0 -0
  381. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/critique/aggregator.py +0 -0
  382. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/critique/checks.py +0 -0
  383. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/db/__init__.py +0 -0
  384. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/db/connection.py +0 -0
  385. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/db/edge_kinds.py +0 -0
  386. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/db/findings.py +0 -0
  387. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/db/fs_detect.py +0 -0
  388. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/db/queries.py +0 -0
  389. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/db/schema.py +0 -0
  390. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/eval/__init__.py +0 -0
  391. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/eval/harness.py +0 -0
  392. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/__init__.py +0 -0
  393. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/_vocabulary.py +0 -0
  394. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/actor_trust.py +0 -0
  395. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/approval.py +0 -0
  396. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/artifact.py +0 -0
  397. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/banner.py +0 -0
  398. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/change_evidence.py +0 -0
  399. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/collector.py +0 -0
  400. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/completeness_compat.py +0 -0
  401. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/config_hashes.py +0 -0
  402. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/config_hashes_producer.py +0 -0
  403. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/consumer_fixtures/__init__.py +0 -0
  404. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/consumer_fixtures/consumer_assured.json +0 -0
  405. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/consumer_fixtures/consumer_minimal.json +0 -0
  406. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/consumer_fixtures/consumer_stale.json +0 -0
  407. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/control_mapping_vocab.py +0 -0
  408. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/env_refs.py +0 -0
  409. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/feedback.py +0 -0
  410. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/github_reviews.py +0 -0
  411. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/link.py +0 -0
  412. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/mcp_receipt.py +0 -0
  413. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/mcp_receipt_schema.py +0 -0
  414. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/oscal.py +0 -0
  415. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/policy.py +0 -0
  416. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/profiles.py +0 -0
  417. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/provenance.py +0 -0
  418. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/refs.py +0 -0
  419. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/evidence/subject.py +0 -0
  420. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/exit_codes.py +0 -0
  421. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/fleet/__init__.py +0 -0
  422. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/fleet/adapters.py +0 -0
  423. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/fleet/manifest.py +0 -0
  424. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/git_utils.py +0 -0
  425. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/github_check.py +0 -0
  426. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/__init__.py +0 -0
  427. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/anomaly.py +0 -0
  428. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/builder.py +0 -0
  429. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/clone_detect.py +0 -0
  430. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/clusters.py +0 -0
  431. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/dark_matter.py +0 -0
  432. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/diff.py +0 -0
  433. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/fingerprint.py +0 -0
  434. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/layers.py +0 -0
  435. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/pagerank.py +0 -0
  436. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/partition.py +0 -0
  437. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/pathfinding.py +0 -0
  438. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/propagation.py +0 -0
  439. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/simulate.py +0 -0
  440. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/spectral.py +0 -0
  441. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/spectral_forecast.py +0 -0
  442. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/stats.py +0 -0
  443. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/graph/versioning.py +0 -0
  444. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/guard_enums.py +0 -0
  445. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/guard_errors.py +0 -0
  446. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/guard_log.py +0 -0
  447. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/guard_rules.py +0 -0
  448. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/__init__.py +0 -0
  449. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/_containing_symbol.py +0 -0
  450. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/complexity.py +0 -0
  451. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/complexity_extract.py +0 -0
  452. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/discovery.py +0 -0
  453. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/django_post.py +0 -0
  454. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/file_roles.py +0 -0
  455. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/git_stats.py +0 -0
  456. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/gitignore.py +0 -0
  457. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/incremental.py +0 -0
  458. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/indexer.py +0 -0
  459. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/laravel_post.py +0 -0
  460. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/manifest.py +0 -0
  461. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/parser.py +0 -0
  462. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/pytest_fixtures.py +0 -0
  463. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/registry_dispatch.py +0 -0
  464. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/relations.py +0 -0
  465. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/symbols.py +0 -0
  466. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/index/test_conventions.py +0 -0
  467. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/knowledge/__init__.py +0 -0
  468. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/knowledge/knowledge_claim.py +0 -0
  469. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/__init__.py +0 -0
  470. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/apex_lang.py +0 -0
  471. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/aura_lang.py +0 -0
  472. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/base.py +0 -0
  473. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/c_lang.py +0 -0
  474. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/csharp_lang.py +0 -0
  475. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/dart_lang.py +0 -0
  476. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/extractor_schema.py +0 -0
  477. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/extractors/__init__.py +0 -0
  478. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/extractors/kotlin.yaml +0 -0
  479. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/foxpro_lang.py +0 -0
  480. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/generic_lang.py +0 -0
  481. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/go_lang.py +0 -0
  482. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/hcl_lang.py +0 -0
  483. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/java_lang.py +0 -0
  484. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/javascript_lang.py +0 -0
  485. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/kotlin_lang.py +0 -0
  486. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/php_lang.py +0 -0
  487. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/python_lang.py +0 -0
  488. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/query_engine.py +0 -0
  489. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/registry.py +0 -0
  490. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/ruby_lang.py +0 -0
  491. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/rust_lang.py +0 -0
  492. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/scala_lang.py +0 -0
  493. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/sfxml_lang.py +0 -0
  494. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/sql_lang.py +0 -0
  495. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/swift_lang.py +0 -0
  496. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/typescript_lang.py +0 -0
  497. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/visualforce_lang.py +0 -0
  498. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/languages/yaml_lang.py +0 -0
  499. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/laws/__init__.py +0 -0
  500. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/laws/checker.py +0 -0
  501. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/laws/miner.py +0 -0
  502. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/laws/serializer.py +0 -0
  503. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/leases/__init__.py +0 -0
  504. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/leases/store.py +0 -0
  505. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/__init__.py +0 -0
  506. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/adversarial_compress.py +0 -0
  507. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/completions.py +0 -0
  508. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/concurrency.py +0 -0
  509. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/preflight.py +0 -0
  510. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/progress.py +0 -0
  511. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/sampling.py +0 -0
  512. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/session.py +0 -0
  513. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/mcp_extras/watcher.py +0 -0
  514. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/memory/__init__.py +0 -0
  515. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/memory/store.py +0 -0
  516. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/modes/__init__.py +0 -0
  517. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/observability.py +0 -0
  518. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/observability_opt.py +0 -0
  519. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/__init__.py +0 -0
  520. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/_severity.py +0 -0
  521. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/confidence.py +0 -0
  522. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/errors.py +0 -0
  523. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/file_role_hints.py +0 -0
  524. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/framework_filter.py +0 -0
  525. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/mermaid.py +0 -0
  526. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/project_shape.py +0 -0
  527. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/risk.py +0 -0
  528. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/sarif.py +0 -0
  529. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/schema_registry.py +0 -0
  530. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/source_context.py +0 -0
  531. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/output/structured_unknowns.py +0 -0
  532. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/permits/__init__.py +0 -0
  533. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/permits/store.py +0 -0
  534. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/plan/__init__.py +0 -0
  535. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/plan/calibration.py +0 -0
  536. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/plan/compiler.py +0 -0
  537. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/plan/envelope_introspect.py +0 -0
  538. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/plan/import_audit.py +0 -0
  539. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/plan/plan_cache.py +0 -0
  540. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/plugins/__init__.py +0 -0
  541. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/plugins/registry.py +0 -0
  542. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/policy/__init__.py +0 -0
  543. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/policy/graph_clauses.py +0 -0
  544. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/policy/suppression_v2.py +0 -0
  545. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/pr_bundle_primitives.py +0 -0
  546. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/proof_bundle.py +0 -0
  547. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/proof_bundle_render.py +0 -0
  548. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/quality/__init__.py +0 -0
  549. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/quality/ai_rot.py +0 -0
  550. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/quality/cycles.py +0 -0
  551. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/quality/god_components.py +0 -0
  552. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/quality/health_band.py +0 -0
  553. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/quality/public_symbols.py +0 -0
  554. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/refactor/__init__.py +0 -0
  555. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/refactor/codegen.py +0 -0
  556. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/refactor/transforms.py +0 -0
  557. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/resilience.py +0 -0
  558. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/retrieve/__init__.py +0 -0
  559. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/retrieve/learned_ranker.py +0 -0
  560. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/retrieve/pipeline.py +0 -0
  561. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/retrieve/rerank.py +0 -0
  562. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/retrieve/seeds.py +0 -0
  563. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/retrieve/semantic.py +0 -0
  564. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/rules/__init__.py +0 -0
  565. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/rules/ast_match.py +0 -0
  566. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/rules/builtin.py +0 -0
  567. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/rules/dataflow.py +0 -0
  568. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/rules/engine.py +0 -0
  569. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runs/__init__.py +0 -0
  570. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runs/helpers.py +0 -0
  571. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runs/ledger.py +0 -0
  572. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runs/signing.py +0 -0
  573. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runtime/__init__.py +0 -0
  574. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runtime/daemon.py +0 -0
  575. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runtime/graph_backend.py +0 -0
  576. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runtime/hotspots.py +0 -0
  577. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runtime/lockmgr.py +0 -0
  578. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/runtime/trace_ingest.py +0 -0
  579. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/search/__init__.py +0 -0
  580. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/search/framework_packs.py +0 -0
  581. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/search/index_embeddings.py +0 -0
  582. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/search/onnx_embeddings.py +0 -0
  583. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/search/tfidf.py +0 -0
  584. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/__init__.py +0 -0
  585. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/aibom_extension.py +0 -0
  586. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/redact.py +0 -0
  587. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/sbom_reachability.py +0 -0
  588. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_classifier.py +0 -0
  589. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_engine.py +0 -0
  590. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/__init__.py +0 -0
  591. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/api_error_leak.yaml +0 -0
  592. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/java_deserialization.yaml +0 -0
  593. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/java_fileupload_path_traversal.yaml +0 -0
  594. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/java_sqli.yaml +0 -0
  595. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/js_insecure_jwt_decode.yaml +0 -0
  596. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/js_localstorage_secrets.yaml +0 -0
  597. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/js_prototype_pollution.yaml +0 -0
  598. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/js_ssrf.yaml +0 -0
  599. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/js_xss.yaml +0 -0
  600. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/php_command_injection.yaml +0 -0
  601. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/php_laravel_open_redirect.yaml +0 -0
  602. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/php_laravel_sqli.yaml +0 -0
  603. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/php_laravel_xss.yaml +0 -0
  604. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/php_path_traversal.yaml +0 -0
  605. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/python_basic.yaml +0 -0
  606. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/python_deserialization.yaml +0 -0
  607. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/python_path_traversal.yaml +0 -0
  608. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/python_socketio_remote_source.yaml +0 -0
  609. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/python_sqli.yaml +0 -0
  610. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/python_ssti.yaml +0 -0
  611. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/python_urllib_open_redirect.yaml +0 -0
  612. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules/vue_v_html.yaml +0 -0
  613. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/taint_rules_lint.py +0 -0
  614. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/vuln_reach.py +0 -0
  615. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/security/vuln_store.py +0 -0
  616. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/sibling_patch/__init__.py +0 -0
  617. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/sibling_patch/repair_scorer.py +0 -0
  618. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/sibling_patch/replay_gate.py +0 -0
  619. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/surface_counts.py +0 -0
  620. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/telemetry.py +0 -0
  621. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/__init__.py +0 -0
  622. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/audit_report/__init__.py +0 -0
  623. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/audit_report/control-mapping.yaml +0 -0
  624. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/ci/Jenkinsfile +0 -0
  625. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/ci/__init__.py +0 -0
  626. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/ci/agent-review.yml +0 -0
  627. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/ci/azure-pipelines.yml +0 -0
  628. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/ci/bitbucket-pipelines.yml +0 -0
  629. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/ci/gitlab-ci.yml +0 -0
  630. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/ci/roam-sarif-with-codeql.yml +0 -0
  631. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/templates/ci/slsa-src-l3.yml +0 -0
  632. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/testing/__init__.py +0 -0
  633. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/testing/ci_xdist.py +0 -0
  634. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/verdict.py +0 -0
  635. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/verification_contract.py +0 -0
  636. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/workspace/__init__.py +0 -0
  637. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/workspace/aggregator.py +0 -0
  638. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/workspace/api_scanner.py +0 -0
  639. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/workspace/config.py +0 -0
  640. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/workspace/db.py +0 -0
  641. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/world_model/causal_graph.py +0 -0
  642. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/world_model/idempotency.py +0 -0
  643. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/world_model/side_effects.py +0 -0
  644. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam/world_model/tx_boundaries.py +0 -0
  645. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam_code.egg-info/dependency_links.txt +0 -0
  646. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam_code.egg-info/entry_points.txt +0 -0
  647. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam_code.egg-info/requires.txt +0 -0
  648. {roam_code-13.7.1 → roam_code-13.8.0}/src/roam_code.egg-info/top_level.txt +0 -0
  649. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_actor_refs_provenance.py +0 -0
  650. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_actor_trust.py +0 -0
  651. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_adrs.py +0 -0
  652. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_adrs_helpers.py +0 -0
  653. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_adversarial.py +0 -0
  654. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_adversarial_pattern2_guard.py +0 -0
  655. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_adversarial_runner.py +0 -0
  656. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_affected.py +0 -0
  657. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_agent_export.py +0 -0
  658. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_agent_mode.py +0 -0
  659. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_agent_modes.py +0 -0
  660. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_agent_opt.py +0 -0
  661. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_agent_plan_context.py +0 -0
  662. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_agent_score.py +0 -0
  663. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_agents_md.py +0 -0
  664. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ai_ratio.py +0 -0
  665. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ai_readiness.py +0 -0
  666. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ai_rot_reconciliation.py +0 -0
  667. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_alerts_cmd.py +0 -0
  668. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_algo_nested_lookup_dataflow.py +0 -0
  669. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_algo_scoped_and_wired.py +0 -0
  670. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_alias_deprecation.py +0 -0
  671. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_always_on_budget_cap.py +0 -0
  672. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_annotations.py +0 -0
  673. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_anomaly.py +0 -0
  674. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_api_changes.py +0 -0
  675. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_api_drift.py +0 -0
  676. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_approvals_provenance.py +0 -0
  677. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_architecture_drift.py +0 -0
  678. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ask.py +0 -0
  679. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_atomic_io_consolidation.py +0 -0
  680. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_atomic_writes.py +0 -0
  681. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_attest.py +0 -0
  682. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_attest_vsa.py +0 -0
  683. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_audit_symlink_containment.py +0 -0
  684. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_audit_trail_aggregate.py +0 -0
  685. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_audit_trail_conformance.py +0 -0
  686. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_audit_trail_sequence.py +0 -0
  687. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_audit_trail_verify.py +0 -0
  688. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_auth_gaps.py +0 -0
  689. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_auth_gaps_helper_indirection.py +0 -0
  690. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_authority_refs_provenance.py +0 -0
  691. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_authority_refs_source.py +0 -0
  692. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_authority_run_ledger_corroboration.py +0 -0
  693. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_auto_count_script.py +0 -0
  694. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_b6_adversarial_compress.py +0 -0
  695. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_b8_spectral_forecast.py +0 -0
  696. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_backend_fixes_round2.py +0 -0
  697. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_backend_fixes_round3.py +0 -0
  698. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bare_callers_loop8.py +0 -0
  699. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_basic.py +0 -0
  700. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_batch_mcp.py +0 -0
  701. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_batch_search_core.py +0 -0
  702. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_batch_search_paths.py +0 -0
  703. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bench_compile.py +0 -0
  704. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bench_ground_truth.py +0 -0
  705. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bisect.py +0 -0
  706. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_blame_cache.py +0 -0
  707. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bridge_django.py +0 -0
  708. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bridges.py +0 -0
  709. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bridges_extended.py +0 -0
  710. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_brief.py +0 -0
  711. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_budget.py +0 -0
  712. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_budget_coverage_survey.py +0 -0
  713. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_budget_flag.py +0 -0
  714. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_budget_phase2.py +0 -0
  715. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bus_factor.py +0 -0
  716. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_bus_factor_excludes.py +0 -0
  717. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_calibration_route_fallback.py +0 -0
  718. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_calibration_warning_once.py +0 -0
  719. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_caller_metric_definition.py +0 -0
  720. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_canonical_constant_citations.py +0 -0
  721. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_canonical_demo_fixture.py +0 -0
  722. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_capability_decoration.py +0 -0
  723. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_capability_registry.py +0 -0
  724. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_capsule.py +0 -0
  725. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_catalog_registry.py +0 -0
  726. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_catalog_shared.py +0 -0
  727. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_causal_graph.py +0 -0
  728. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cga.py +0 -0
  729. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cga_dirty_hash_binding.py +0 -0
  730. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cga_edge_digest_sort_stability.py +0 -0
  731. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cga_fail_closed.py +0 -0
  732. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_changed_files_none_guard.py +0 -0
  733. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_changelog_phantoms.py +0 -0
  734. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_check_rules.py +0 -0
  735. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ci_auto_xdist.py +0 -0
  736. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ci_gate_eval.py +0 -0
  737. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ci_sarif_guard.py +0 -0
  738. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ci_setup.py +0 -0
  739. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_classifier_diagnostics_lockstep.py +0 -0
  740. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cli_cache_atomic.py +0 -0
  741. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cli_contract.py +0 -0
  742. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cli_deprecated_commands_schema.py +0 -0
  743. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cli_responses_write.py +0 -0
  744. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_clones.py +0 -0
  745. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_closure.py +0 -0
  746. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cloud_sync_detection.py +0 -0
  747. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_affected_helpers.py +0 -0
  748. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_affected_tests_resolution.py +0 -0
  749. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_affected_tests_sarif.py +0 -0
  750. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_agent_context.py +0 -0
  751. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_at.py +0 -0
  752. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_auth_gaps_sarif.py +0 -0
  753. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_boundary.py +0 -0
  754. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_budget_warnings_out.py +0 -0
  755. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_bus_factor_sarif.py +0 -0
  756. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_check_rules_warnings_out.py +0 -0
  757. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_clones_sarif.py +0 -0
  758. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_closure_resolution.py +0 -0
  759. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_compatibility.py +0 -0
  760. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_compile.py +0 -0
  761. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_compiler_corpus.py +0 -0
  762. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_compiler_health.py +0 -0
  763. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_complexity_warnings_out.py +0 -0
  764. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_context_resolution.py +0 -0
  765. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_critique_sarif.py +0 -0
  766. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_dark_matter_sarif.py +0 -0
  767. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_db_check.py +0 -0
  768. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_dead_resolution.py +0 -0
  769. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_delete_check_sarif.py +0 -0
  770. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_diagnose_resolution.py +0 -0
  771. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_dispatch_trace.py +0 -0
  772. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_dogfood_aggregate_frontmatter.py +0 -0
  773. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_duplicates_sarif.py +0 -0
  774. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_envelope_diff.py +0 -0
  775. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_fan_sarif.py +0 -0
  776. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_findings.py +0 -0
  777. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_fitness_warnings_out.py +0 -0
  778. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_flag_dead_sarif.py +0 -0
  779. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_flag_dead_warnings_out.py +0 -0
  780. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_guard_resolution.py +0 -0
  781. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_guard_unresolved.py +0 -0
  782. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_health_warnings_out.py +0 -0
  783. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_hotspots_resolution.py +0 -0
  784. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_hotspots_sarif.py +0 -0
  785. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_hover_resolution.py +0 -0
  786. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_idempotency_exception_guard.py +0 -0
  787. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_impact_resolution.py +0 -0
  788. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_impact_sarif.py +0 -0
  789. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_init_no_self_advisory.py +0 -0
  790. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_invariants_resolution.py +0 -0
  791. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_laws_sarif.py +0 -0
  792. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_llm_smells_sarif.py +0 -0
  793. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_magic_numbers.py +0 -0
  794. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_magic_numbers_treesitter.py +0 -0
  795. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_mcp_fast_startup.py +0 -0
  796. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_mcp_status_cold_start.py +0 -0
  797. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_metrics_resolution.py +0 -0
  798. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_missing_index_sarif.py +0 -0
  799. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_n1_sarif.py +0 -0
  800. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_orphan_imports_sarif.py +0 -0
  801. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_orphan_routes_sarif.py +0 -0
  802. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_over_fetch_sarif.py +0 -0
  803. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_partition_sarif.py +0 -0
  804. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_permit_persist.py +0 -0
  805. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_permit_persist_redteam.py +0 -0
  806. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_plan_refactor_resolution.py +0 -0
  807. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_plan_refactor_unresolved.py +0 -0
  808. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_plan_resolution.py +0 -0
  809. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_pr_bundle_resolution.py +0 -0
  810. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_preflight_resolution.py +0 -0
  811. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_pytest_fixtures_resolution.py +0 -0
  812. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_relate_resolution.py +0 -0
  813. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_safe_delete_resolution.py +0 -0
  814. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_safe_zones_resolution.py +0 -0
  815. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_smells_only_pushdown.py +0 -0
  816. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_smells_resolution.py +0 -0
  817. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_smells_sarif.py +0 -0
  818. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_stats.py +0 -0
  819. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_symbol_resolution.py +0 -0
  820. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_telemetry.py +0 -0
  821. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_test_hermeticity.py +0 -0
  822. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_test_impact_sarif.py +0 -0
  823. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_test_scaffold_resolution.py +0 -0
  824. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_testmap_resolution.py +0 -0
  825. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_timeline.py +0 -0
  826. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_trace_resolution.py +0 -0
  827. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_understand_tour_graph_errors.py +0 -0
  828. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_verify_imports_sarif.py +0 -0
  829. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_visualize_resolution.py +0 -0
  830. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_why_fail_exception_scope.py +0 -0
  831. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cmd_why_resolution.py +0 -0
  832. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_codeowners.py +0 -0
  833. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_command_advice.py +0 -0
  834. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_command_graph.py +0 -0
  835. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_command_help_template.py +0 -0
  836. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_command_utils.py +0 -0
  837. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_commands_architecture.py +0 -0
  838. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_commands_doc_synced.py +0 -0
  839. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_commands_exploration.py +0 -0
  840. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_commands_health.py +0 -0
  841. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_commands_refactoring.py +0 -0
  842. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_commands_workflow.py +0 -0
  843. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compare_cli.py +0 -0
  844. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compat_sweep.py +0 -0
  845. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_competitor_site_data.py +0 -0
  846. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_bare_filename_resolve.py +0 -0
  847. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_bug_site_slice.py +0 -0
  848. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_cache.py +0 -0
  849. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_config_forbidden_paths.py +0 -0
  850. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_consumers_callers.py +0 -0
  851. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_declared_entry.py +0 -0
  852. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_describe_module.py +0 -0
  853. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_describe_what_for.py +0 -0
  854. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_entity_grounding.py +0 -0
  855. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_env_vars_probe.py +0 -0
  856. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_file_history.py +0 -0
  857. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_freeform_size_cap.py +0 -0
  858. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_grep_option_injection.py +0 -0
  859. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_grep_private_root.py +0 -0
  860. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_import_audit_no_exec.py +0 -0
  861. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_index_staleness.py +0 -0
  862. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_injection_advice.py +0 -0
  863. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_inproc_lock.py +0 -0
  864. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_intent_probes.py +0 -0
  865. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_known_findings.py +0 -0
  866. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_l10_batch_dedupe.py +0 -0
  867. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_likely_files_rerank.py +0 -0
  868. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_owner_pathspec.py +0 -0
  869. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_parallel_impl_guard.py +0 -0
  870. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_path_extraction.py +0 -0
  871. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_probe_families_w11_w12_w13.py +0 -0
  872. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_repo_structure.py +0 -0
  873. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_safe_argv.py +0 -0
  874. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_search_semantic_dashdash.py +0 -0
  875. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_self_contained.py +0 -0
  876. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_session_meta.py +0 -0
  877. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_stats_by_mode.py +0 -0
  878. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_structural_subtype_order.py +0 -0
  879. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_symbol_rank_source_first.py +0 -0
  880. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_synth_target_extraction.py +0 -0
  881. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_top_n_vs_structural_precedence.py +0 -0
  882. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_trace_leading_dash.py +0 -0
  883. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w101_w106_probes.py +0 -0
  884. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w132_w141.py +0 -0
  885. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w142_w146.py +0 -0
  886. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w147_w150.py +0 -0
  887. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w151_w154.py +0 -0
  888. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w155_w158.py +0 -0
  889. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w160_w161.py +0 -0
  890. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w28_compare.py +0 -0
  891. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w35_user_probes.py +0 -0
  892. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w36_more_probes.py +0 -0
  893. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w39_tier1.py +0 -0
  894. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w40_polish.py +0 -0
  895. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w43_w45_polish.py +0 -0
  896. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w468_persist_secret_skip.py +0 -0
  897. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w46_w55_polish.py +0 -0
  898. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w57_canonicalize_and_symcache.py +0 -0
  899. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compile_w70_cache_safety.py +0 -0
  900. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compiler_guard_bridge.py +0 -0
  901. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_complete_prefix.py +0 -0
  902. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_complexity_extract.py +0 -0
  903. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compound_recipe_registry.py +0 -0
  904. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_compound_registry.py +0 -0
  905. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_comprehensive.py +0 -0
  906. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_confidence_triples.py +0 -0
  907. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_config.py +0 -0
  908. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_config_state_uniform_vocabulary.py +0 -0
  909. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_congestion.py +0 -0
  910. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_constitution.py +0 -0
  911. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_context_propagation.py +0 -0
  912. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_conventions_cmd.py +0 -0
  913. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_conventions_consolidation.py +0 -0
  914. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_corpus_routing_lock.py +0 -0
  915. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_count_drift_hook.py +0 -0
  916. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_count_drift_no_overlap.py +0 -0
  917. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_coverage_gaps_cmd.py +0 -0
  918. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_coverage_ingestion.py +0 -0
  919. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_critique.py +0 -0
  920. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cut.py +0 -0
  921. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_cycles.py +0 -0
  922. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dark_matter.py +0 -0
  923. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dark_matter_helpers.py +0 -0
  924. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dart.py +0 -0
  925. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dashboard.py +0 -0
  926. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dashboard_unique_signals.py +0 -0
  927. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dataflow_dead.py +0 -0
  928. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_db_tuning.py +0 -0
  929. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_db_user_version.py +0 -0
  930. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dead_aging.py +0 -0
  931. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dead_code_intra_module_regression.py +0 -0
  932. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dead_mcp_seeding.py +0 -0
  933. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dead_vue_consumers.py +0 -0
  934. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_decorator_registry_parity.py +0 -0
  935. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_defer_loading.py +0 -0
  936. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_demo_fixtures.py +0 -0
  937. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_demo_gif_asset.py +0 -0
  938. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_deps_importer_list_envelope.py +0 -0
  939. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_describe.py +0 -0
  940. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_describe_stack_leak.py +0 -0
  941. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_destructive_tools_derived.py +0 -0
  942. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_detail_flag.py +0 -0
  943. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_detail_flag_hints.py +0 -0
  944. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_detail_flag_regressions.py +0 -0
  945. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_detail_semantics.py +0 -0
  946. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_detector_file_scope.py +0 -0
  947. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_detector_precision.py +0 -0
  948. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_detector_registry.py +0 -0
  949. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_deterministic_output.py +0 -0
  950. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dev_profile.py +0 -0
  951. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dev_profile_exception_handling.py +0 -0
  952. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_diff_empty_state.py +0 -0
  953. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_difficulty_scoring.py +0 -0
  954. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dispatch_trace_counterfactual.py +0 -0
  955. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doc_consistency.py +0 -0
  956. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doc_hygiene_ci_gate.py +0 -0
  957. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doc_link_anchors.py +0 -0
  958. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doc_no_phantom_cli.py +0 -0
  959. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_docker_assets.py +0 -0
  960. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_docs_coverage.py +0 -0
  961. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_docs_index.py +0 -0
  962. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_docs_site_quality.py +0 -0
  963. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doctor.py +0 -0
  964. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doctor_breadcrumb.py +0 -0
  965. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doctor_ci_workflow_drift.py +0 -0
  966. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doctor_hints_in_errors.py +0 -0
  967. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doctor_refresh_install.py +0 -0
  968. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_doctor_stale_signal_advisory.py +0 -0
  969. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dogfood.py +0 -0
  970. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dogfood_aggregate.py +0 -0
  971. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dogfood_dedup_check.py +0 -0
  972. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_dogfood_dedup_check_e2e.py +0 -0
  973. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_drift.py +0 -0
  974. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_drift_by_team.py +0 -0
  975. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_duplicates.py +0 -0
  976. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_duplicates_bounded.py +0 -0
  977. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_effects.py +0 -0
  978. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_effects_propagation.py +0 -0
  979. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_eight_questions_audit.py +0 -0
  980. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_empty_state_framing.py +0 -0
  981. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_endpoints.py +0 -0
  982. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_entry_points_cmd.py +0 -0
  983. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_env_refs_helper.py +0 -0
  984. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_envelope_diff_baseline.py +0 -0
  985. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_envelope_introspect.py +0 -0
  986. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_envelope_meta_roam_version.py +0 -0
  987. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_envelope_section_budget.py +0 -0
  988. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_envelope_size_budget.py +0 -0
  989. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_eval_retrieve.py +0 -0
  990. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_banner.py +0 -0
  991. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_collector.py +0 -0
  992. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_consumer_fixtures.py +0 -0
  993. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_diff_cmd.py +0 -0
  994. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_doctor.py +0 -0
  995. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_feedback.py +0 -0
  996. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_limitations.py +0 -0
  997. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_oscal.py +0 -0
  998. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_oscal_ar.py +0 -0
  999. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_packet_size.py +0 -0
  1000. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_policy.py +0 -0
  1001. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_pr_replay.py +0 -0
  1002. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_profiles.py +0 -0
  1003. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_provenance.py +0 -0
  1004. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_redaction_snapshots.py +0 -0
  1005. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_schema_migration.py +0 -0
  1006. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_stale_producer.py +0 -0
  1007. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_evidence_v0.py +0 -0
  1008. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_exclude_patterns.py +0 -0
  1009. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_exit_codes.py +0 -0
  1010. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_extension_constant_consolidation.py +0 -0
  1011. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_extension_versioning.py +0 -0
  1012. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_extract_mode_usage.py +0 -0
  1013. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_extract_regen_signal.py +0 -0
  1014. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_extract_typed.py +0 -0
  1015. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_extractor_grammar_drift.py +0 -0
  1016. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_extractor_smoke.py +0 -0
  1017. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fallback_contracts.py +0 -0
  1018. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fan_test_prod_split.py +0 -0
  1019. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fetch_handle_chunked.py +0 -0
  1020. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_file_roles.py +0 -0
  1021. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_find_project_root_worktree.py +0 -0
  1022. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_find_symbol_tier_stamp.py +0 -0
  1023. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_finding_suppress.py +0 -0
  1024. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_audit_trail_conformance.py +0 -0
  1025. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_audit_trail_verify.py +0 -0
  1026. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_auth_gaps.py +0 -0
  1027. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_bus_factor.py +0 -0
  1028. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_canonical_detectors.py +0 -0
  1029. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_clones.py +0 -0
  1030. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_complexity.py +0 -0
  1031. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_conventions.py +0 -0
  1032. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_critique.py +0 -0
  1033. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_dark_matter.py +0 -0
  1034. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_dead.py +0 -0
  1035. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_detector_count_drift.py +0 -0
  1036. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_doctor.py +0 -0
  1037. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_duplicates.py +0 -0
  1038. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_fan.py +0 -0
  1039. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_fingerprint.py +0 -0
  1040. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_health.py +0 -0
  1041. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_hotspots.py +0 -0
  1042. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_laws.py +0 -0
  1043. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_missing_index.py +0 -0
  1044. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_n1.py +0 -0
  1045. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_orphan_imports.py +0 -0
  1046. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_over_fetch.py +0 -0
  1047. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_pr_risk.py +0 -0
  1048. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_registry.py +0 -0
  1049. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_smells.py +0 -0
  1050. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_taint.py +0 -0
  1051. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_vibe_check.py +0 -0
  1052. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_findings_vulns.py +0 -0
  1053. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fingerprint.py +0 -0
  1054. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_first_error_message_preserved.py +0 -0
  1055. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fixes.py +0 -0
  1056. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_flag_dead.py +0 -0
  1057. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fleet.py +0 -0
  1058. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fn_coupling.py +0 -0
  1059. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_forecast.py +0 -0
  1060. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_formatter_agent_contract.py +0 -0
  1061. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_formatter_preserved_list_fields.py +0 -0
  1062. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_formatters.py +0 -0
  1063. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_foxpro.py +0 -0
  1064. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_framework_detection.py +0 -0
  1065. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_framework_pack_language_gating.py +0 -0
  1066. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_freeform_history_literal_pathspec.py +0 -0
  1067. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fts5_docstring.py +0 -0
  1068. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_fts5_incremental.py +0 -0
  1069. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_gate_presets.py +0 -0
  1070. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_git_cochange_literal_pathspec.py +0 -0
  1071. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_git_helpers.py +0 -0
  1072. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_git_stats_skip.py +0 -0
  1073. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_git_utils.py +0 -0
  1074. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_github_reviews_parser.py +0 -0
  1075. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_glob_match.py +0 -0
  1076. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_global_ci_mode.py +0 -0
  1077. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_god_components_kind_guard.py +0 -0
  1078. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_graph_layers.py +0 -0
  1079. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_graph_versioning.py +0 -0
  1080. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_grep_extended.py +0 -0
  1081. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_grep_integration.py +0 -0
  1082. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_grep_performance.py +0 -0
  1083. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_grep_xlang.py +0 -0
  1084. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard.py +0 -0
  1085. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_clean.py +0 -0
  1086. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_diff.py +0 -0
  1087. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_doctor.py +0 -0
  1088. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_errors.py +0 -0
  1089. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_history.py +0 -0
  1090. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_init.py +0 -0
  1091. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_log.py +0 -0
  1092. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_pr_and_github_check.py +0 -0
  1093. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_rules.py +0 -0
  1094. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_guard_rules_cli.py +0 -0
  1095. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_health_baseline.py +0 -0
  1096. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_health_betweenness_percentiles.py +0 -0
  1097. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_health_gate.py +0 -0
  1098. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_hooks.py +0 -0
  1099. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_hooks_claude_setup.py +0 -0
  1100. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_hostile_markdown_inputs.py +0 -0
  1101. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_hotspots.py +0 -0
  1102. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_hover.py +0 -0
  1103. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_idempotency.py +0 -0
  1104. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_idiom_precision.py +0 -0
  1105. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ignore_findings_warnings_out.py +0 -0
  1106. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_impact_bounded.py +0 -0
  1107. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_index.py +0 -0
  1108. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_index_bundle.py +0 -0
  1109. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_index_import_verification.py +0 -0
  1110. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_index_light_mode.py +0 -0
  1111. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_index_parser.py +0 -0
  1112. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_index_step_manifest.py +0 -0
  1113. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_init_cmd.py +0 -0
  1114. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_init_no_unsolicited_writes.py +0 -0
  1115. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_install_check.py +0 -0
  1116. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_intent.py +0 -0
  1117. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_invariants.py +0 -0
  1118. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_iri_migration.py +0 -0
  1119. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_is_excluded_path_none_guard.py +0 -0
  1120. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_is_test_path.py +0 -0
  1121. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_js_idioms.py +0 -0
  1122. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_json_contracts.py +0 -0
  1123. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_json_error_envelope.py +0 -0
  1124. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_json_usage_path_envelope.py +0 -0
  1125. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_kotlin_swift_extractors.py +0 -0
  1126. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_l1_rate_floor.py +0 -0
  1127. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_language_corpus.py +0 -0
  1128. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_languages.py +0 -0
  1129. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_laravel_dead_idioms.py +0 -0
  1130. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_laravel_fp_fixes.py +0 -0
  1131. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_law4_anchor_counts.py +0 -0
  1132. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_law4_anchoring.py +0 -0
  1133. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_law4_lint.py +0 -0
  1134. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_law4_residual.py +0 -0
  1135. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_law4_stragglers.py +0 -0
  1136. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_laws_mining.py +0 -0
  1137. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_leak_gate_exemplars.py +0 -0
  1138. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_lease_system.py +0 -0
  1139. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ledger_signing.py +0 -0
  1140. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_library_api.py +0 -0
  1141. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_llm_smells.py +0 -0
  1142. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_load_suppressions_warnings_out.py +0 -0
  1143. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_load_yaml_with_warnings.py +0 -0
  1144. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_loop_e2e.py +0 -0
  1145. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_loop_performance.py +0 -0
  1146. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_loud_fallback_no_new_silent_except.py +0 -0
  1147. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_main_module_entrypoint.py +0 -0
  1148. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_manifest.py +0 -0
  1149. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_math_fp_fixes.py +0 -0
  1150. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_math_tips.py +0 -0
  1151. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_W303_wrappers.py +0 -0
  1152. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_W304_wrappers.py +0 -0
  1153. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_W305_wrappers.py +0 -0
  1154. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_W306_wrappers.py +0 -0
  1155. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_architecture_wrappers.py +0 -0
  1156. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_batch_search_complete_parity.py +0 -0
  1157. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_cold_start_guard.py +0 -0
  1158. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_compat_profile.py +0 -0
  1159. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_contract_enforcement.py +0 -0
  1160. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_decision_receipt.py +0 -0
  1161. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_error_envelope_status.py +0 -0
  1162. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_exploration_wrappers.py +0 -0
  1163. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_extras.py +0 -0
  1164. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_guard_wrappers_dispatch.py +0 -0
  1165. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_handle_off.py +0 -0
  1166. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_health_wrappers.py +0 -0
  1167. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_json_parse_defense.py +0 -0
  1168. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_outputschema_wave_b1.py +0 -0
  1169. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_outputschema_wave_b2.py +0 -0
  1170. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_outputschema_wave_b3.py +0 -0
  1171. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_outputschema_wave_b4.py +0 -0
  1172. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_outputschema_wave_b5.py +0 -0
  1173. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_outputschema_wave_b5b.py +0 -0
  1174. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_param_aliases.py +0 -0
  1175. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_param_aliases_input_path.py +0 -0
  1176. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_param_names.py +0 -0
  1177. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_pattern1_variant_b.py +0 -0
  1178. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_receipt_emitter.py +0 -0
  1179. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_receipt_json_schema.py +0 -0
  1180. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_receipt_schema_in_wheel.py +0 -0
  1181. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_refactoring_wrappers.py +0 -0
  1182. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_retrieve_leading_dash.py +0 -0
  1183. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_server.py +0 -0
  1184. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_setup.py +0 -0
  1185. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_setup_write.py +0 -0
  1186. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_tool_metadata_completeness.py +0 -0
  1187. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_tool_side_effect_metadata.py +0 -0
  1188. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_tool_side_effects.py +0 -0
  1189. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_tool_telemetry.py +0 -0
  1190. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_tool_versioning.py +0 -0
  1191. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mcp_wrapper_coverage.py +0 -0
  1192. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_memory_substrate.py +0 -0
  1193. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mermaid.py +0 -0
  1194. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_metric_definition_sidecars.py +0 -0
  1195. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_metrics_cmd.py +0 -0
  1196. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_metrics_push.py +0 -0
  1197. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_migration_plan.py +0 -0
  1198. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_migration_safety.py +0 -0
  1199. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_minimap.py +0 -0
  1200. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_missing_index.py +0 -0
  1201. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_missing_index_unconditional.py +0 -0
  1202. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_missing_index_unconditional_first.py +0 -0
  1203. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mode_bootstrap_allowlist.py +0 -0
  1204. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mode_classification_coverage.py +0 -0
  1205. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mode_enforcement_dispatch.py +0 -0
  1206. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mutate.py +0 -0
  1207. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_mutate_apply.py +0 -0
  1208. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_n1.py +0 -0
  1209. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_n1_fixes.py +0 -0
  1210. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_naming_convention_sampling.py +0 -0
  1211. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_next_router.py +0 -0
  1212. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_next_steps.py +0 -0
  1213. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_no_internal_language.py +0 -0
  1214. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_non_idempotent_tools_derived.py +0 -0
  1215. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_non_read_only_tools_derived.py +0 -0
  1216. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_observability_opt.py +0 -0
  1217. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_observability_opt_harvester_reuse.py +0 -0
  1218. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_onboard.py +0 -0
  1219. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_optional_imports_guarded.py +0 -0
  1220. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_oracle.py +0 -0
  1221. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_oracle_batch_resilience.py +0 -0
  1222. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_orchestrate.py +0 -0
  1223. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_orphan_imports_filters.py +0 -0
  1224. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_orphan_routes.py +0 -0
  1225. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_oss_bench_harness.py +0 -0
  1226. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_over_fetch.py +0 -0
  1227. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_over_fetch_three_state.py +0 -0
  1228. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_owner_batched_in.py +0 -0
  1229. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_owner_path_not_found.py +0 -0
  1230. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_package_data_wheel_drift.py +0 -0
  1231. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pagerank_scipy_core.py +0 -0
  1232. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pagerank_truncation.py +0 -0
  1233. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_parallel_analyzers.py +0 -0
  1234. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_parallel_impl_guard.py +0 -0
  1235. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_parallel_probe_dispatch.py +0 -0
  1236. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_partition.py +0 -0
  1237. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_path_coverage.py +0 -0
  1238. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_path_coverage_classify.py +0 -0
  1239. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pattern1_envelope_shape.py +0 -0
  1240. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pattern2_silent_success_disclosure.py +0 -0
  1241. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pattern3c_reconciliation.py +0 -0
  1242. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pattern_1_variant_d_resolver_audit.py +0 -0
  1243. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_patterns_cmd.py +0 -0
  1244. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_per_finding_suppressions_warnings_out.py +0 -0
  1245. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_performance.py +0 -0
  1246. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_personalized_pagerank.py +0 -0
  1247. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_phase0_commands.py +0 -0
  1248. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_plan.py +0 -0
  1249. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_plan_artifact_selector.py +0 -0
  1250. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_plugin_discovery.py +0 -0
  1251. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_plugin_dogfood_rails.py +0 -0
  1252. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_plugin_substrate.py +0 -0
  1253. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_policy_decisions_provenance.py +0 -0
  1254. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_policy_graph_clauses.py +0 -0
  1255. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_analyze.py +0 -0
  1256. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_analyze_cache.py +0 -0
  1257. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_analyze_diff_failure_propagation.py +0 -0
  1258. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_analyze_edge_cases.py +0 -0
  1259. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_analyze_helpers.py +0 -0
  1260. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_analyze_v2_signals.py +0 -0
  1261. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_bundle.py +0 -0
  1262. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_bundle_causal_diff.py +0 -0
  1263. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_bundle_nonexistent_symbol.py +0 -0
  1264. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_bundle_r28_integration.py +0 -0
  1265. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_comment_render.py +0 -0
  1266. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_comment_script.py +0 -0
  1267. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_diff.py +0 -0
  1268. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_prep_pattern2_guard.py +0 -0
  1269. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_replay.py +0 -0
  1270. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_replay_github_reviews.py +0 -0
  1271. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pr_risk_author.py +0 -0
  1272. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_preflight_fitness_sibling_names.py +0 -0
  1273. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_prepush_gate_wired.py +0 -0
  1274. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_probe_persist_batch.py +0 -0
  1275. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_procedure_registry_lint.py +0 -0
  1276. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_producer_collector_contracts.py +0 -0
  1277. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_progress.py +0 -0
  1278. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_progressive_disclosure.py +0 -0
  1279. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_proof_bundle.py +0 -0
  1280. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_properties.py +0 -0
  1281. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_public_allowlist.py +0 -0
  1282. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_pytest_fixtures.py +0 -0
  1283. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_python_extractor_docstring_safety.py +0 -0
  1284. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_python_extractor_v2.py +0 -0
  1285. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_python_idioms_e2e.py +0 -0
  1286. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_python_pivot.py +0 -0
  1287. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_quality_dashboard.py +0 -0
  1288. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_readme_surface_consistency.py +0 -0
  1289. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_refactoring_intelligence.py +0 -0
  1290. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_registered_tool_side_effects.py +0 -0
  1291. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_registry_dispatch.py +0 -0
  1292. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_regression_fp_corpus.py +0 -0
  1293. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_relate.py +0 -0
  1294. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_relations.py +0 -0
  1295. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rename_edge_recovery.py +0 -0
  1296. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_repair_siblings_lens.py +0 -0
  1297. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_replay.py +0 -0
  1298. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_repo_root_helper.py +0 -0
  1299. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_report.py +0 -0
  1300. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_reset_clean.py +0 -0
  1301. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_resilience.py +0 -0
  1302. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_resolution_disclosure.py +0 -0
  1303. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_resolve.py +0 -0
  1304. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_resolve_file_symbols_substrate.py +0 -0
  1305. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_resolver_import_target_preference.py +0 -0
  1306. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_response_volume_handles.py +0 -0
  1307. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_retrieve.py +0 -0
  1308. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_retrieve_cross_repo.py +0 -0
  1309. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_retrieve_seeds.py +0 -0
  1310. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_risk.py +0 -0
  1311. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_roam_diff_schema_validation.py +0 -0
  1312. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_roam_full_coupling.py +0 -0
  1313. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ruby.py +0 -0
  1314. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rule_profiles.py +0 -0
  1315. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rules.py +0 -0
  1316. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rules_ast_match.py +0 -0
  1317. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rules_community_pack.py +0 -0
  1318. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rules_dataflow.py +0 -0
  1319. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rules_engine_warnings_out.py +0 -0
  1320. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rules_symbol_requirements.py +0 -0
  1321. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_rules_validate.py +0 -0
  1322. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_runs_auto_log.py +0 -0
  1323. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_runs_end_with_bundle.py +0 -0
  1324. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_runs_ledger.py +0 -0
  1325. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_runtime.py +0 -0
  1326. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_runtime_score.py +0 -0
  1327. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_salesforce.py +0 -0
  1328. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_consumer_list.py +0 -0
  1329. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_consumers_schema.py +0 -0
  1330. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_disclosure_coverage.py +0 -0
  1331. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_enrichment.py +0 -0
  1332. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_flag.py +0 -0
  1333. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_runtime_notifications.py +0 -0
  1334. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_runtime_overrides_followup.py +0 -0
  1335. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_runtime_overrides_helper.py +0 -0
  1336. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_suppressions_warnings_out.py +0 -0
  1337. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sarif_tag_coverage.py +0 -0
  1338. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sbom.py +0 -0
  1339. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sbom_fp_categories.py +0 -0
  1340. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_scala.py +0 -0
  1341. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_schema_versioning.py +0 -0
  1342. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_search_enrichment_loop3.py +0 -0
  1343. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_search_explain.py +0 -0
  1344. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_secret_scan_hook.py +0 -0
  1345. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_secrets.py +0 -0
  1346. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_secrets_v2.py +0 -0
  1347. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_security_redact.py +0 -0
  1348. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_semantic_diff.py +0 -0
  1349. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_semantic_onnx.py +0 -0
  1350. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_semantic_search.py +0 -0
  1351. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_service_report.py +0 -0
  1352. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sibling_patch_network.py +0 -0
  1353. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_side_effects.py +0 -0
  1354. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_side_effects_typescript.py +0 -0
  1355. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_signature_utils.py +0 -0
  1356. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_simulate.py +0 -0
  1357. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_simulate_departure.py +0 -0
  1358. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_situation_compounds.py +0 -0
  1359. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sketch.py +0 -0
  1360. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_skill_generate.py +0 -0
  1361. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_smells.py +0 -0
  1362. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_smells_confidence_mapping_parity.py +0 -0
  1363. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_smells_detector_count_drift.py +0 -0
  1364. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_smoke.py +0 -0
  1365. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sna_metrics.py +0 -0
  1366. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_snake_case_function_lint.py +0 -0
  1367. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_source_context.py +0 -0
  1368. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_spectral.py +0 -0
  1369. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_spectral_bounded.py +0 -0
  1370. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_split_cmd.py +0 -0
  1371. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sql.py +0 -0
  1372. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_sql_like_escape_discipline.py +0 -0
  1373. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_staged_rollout_readiness.py +0 -0
  1374. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_stale_db_dir_error.py +0 -0
  1375. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_stale_refs.py +0 -0
  1376. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_stale_refs_corruption.py +0 -0
  1377. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_stale_refs_dogfood_fixes.py +0 -0
  1378. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_state_family_aliases.py +0 -0
  1379. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_strip_list_payloads_preserves_warnings_out.py +0 -0
  1380. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_structured_unknown_filter.py +0 -0
  1381. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_suggest_refactoring.py +0 -0
  1382. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_suggest_reviewers.py +0 -0
  1383. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_supply_chain.py +0 -0
  1384. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_suppression_adversarial.py +0 -0
  1385. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_suppression_append_only.py +0 -0
  1386. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_suppression_v2.py +0 -0
  1387. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_suppressions_unified_schema.py +0 -0
  1388. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_surface_consistency.py +0 -0
  1389. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_surface_counts.py +0 -0
  1390. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_surface_counts_wheel_layout.py +0 -0
  1391. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_surface_top_level_keys.py +0 -0
  1392. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_synergy_agents_md_mode.py +0 -0
  1393. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_synergy_next_mode.py +0 -0
  1394. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_synergy_pr_bundle_mode.py +0 -0
  1395. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_synergy_runs_mode.py +0 -0
  1396. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_syntax_check.py +0 -0
  1397. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint.py +0 -0
  1398. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_analysis.py +0 -0
  1399. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_classifier.py +0 -0
  1400. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_intraprocedural.py +0 -0
  1401. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_java_deserialization.py +0 -0
  1402. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_java_sqli.py +0 -0
  1403. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_owasp_top10.py +0 -0
  1404. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_php_laravel.py +0 -0
  1405. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_rule_hygiene.py +0 -0
  1406. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_taint_ssti.py +0 -0
  1407. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_task_optional_tools_derived.py +0 -0
  1408. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_task_required_tools_derived.py +0 -0
  1409. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_test_conventions.py +0 -0
  1410. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_test_detection_consolidation.py +0 -0
  1411. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_test_gaps.py +0 -0
  1412. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_test_scaffold.py +0 -0
  1413. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_testmap.py +0 -0
  1414. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_metadata_completeness.py +0 -0
  1415. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_metadata_coverage.py +0 -0
  1416. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_metadata_flags.py +0 -0
  1417. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_metadata_side_effect_coverage.py +0 -0
  1418. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_metadata_side_effects.py +0 -0
  1419. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_metadata_side_effects_complete.py +0 -0
  1420. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_metadata_side_effects_coverage.py +0 -0
  1421. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_side_effect_metadata.py +0 -0
  1422. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_side_effect_metadata_coverage.py +0 -0
  1423. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tool_side_effect_metadata_declared.py +0 -0
  1424. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_top_flag_consistency.py +0 -0
  1425. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_top_n_vs_structural_arbiter.py +0 -0
  1426. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tour_cmd.py +0 -0
  1427. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_trace_bounded.py +0 -0
  1428. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_trends.py +0 -0
  1429. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_trends_cohort.py +0 -0
  1430. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_triage.py +0 -0
  1431. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_tx_boundaries.py +0 -0
  1432. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_understand_health_band_parity.py +0 -0
  1433. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_user_version_discipline.py +0 -0
  1434. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_uses_call_line_loop5.py +0 -0
  1435. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_uses_cmd.py +0 -0
  1436. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1215_passes.py +0 -0
  1437. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1216_passes.py +0 -0
  1438. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1216_passes_41_50.py +0 -0
  1439. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1216_passes_51_60.py +0 -0
  1440. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1217_passes_61_80.py +0 -0
  1441. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1218_passes_81_90.py +0 -0
  1442. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1219_passes_91_100.py +0 -0
  1443. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1220_passes_101_110.py +0 -0
  1444. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1221_query_timeout.py +0 -0
  1445. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v1221_untested_commands.py +0 -0
  1446. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v12_2.py +0 -0
  1447. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v2_edge_cases.py +0 -0
  1448. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v2_integration.py +0 -0
  1449. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v6_features.py +0 -0
  1450. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v71_features.py +0 -0
  1451. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v7_features.py +0 -0
  1452. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_v82_features.py +0 -0
  1453. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_validate_plan.py +0 -0
  1454. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verification_contract_and_verdict.py +0 -0
  1455. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_baseline.py +0 -0
  1456. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_changed_lines.py +0 -0
  1457. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_claims.py +0 -0
  1458. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_command_examples.py +0 -0
  1459. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_command_mirrors.py +0 -0
  1460. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_deep.py +0 -0
  1461. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_dir_target.py +0 -0
  1462. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_dogfood_fps.py +0 -0
  1463. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_dup_precision.py +0 -0
  1464. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_noqa.py +0 -0
  1465. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_planted_recall.py +0 -0
  1466. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_reindexes_stale_targets.py +0 -0
  1467. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_secrets_gate.py +0 -0
  1468. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_self_dogfood_lock.py +0 -0
  1469. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_verify_suppressions.py +0 -0
  1470. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_version_stamps.py +0 -0
  1471. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_vibe_check.py +0 -0
  1472. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_vibe_check_framework_hooks.py +0 -0
  1473. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_visualize.py +0 -0
  1474. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_vocabulary_drift_w198.py +0 -0
  1475. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_vue_sfc_imports.py +0 -0
  1476. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_vue_vitest_detection.py +0 -0
  1477. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_vuln.py +0 -0
  1478. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_vuln_store_ingest.py +0 -0
  1479. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_vulns_cmd.py +0 -0
  1480. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_followup_b_adversarial_severity.py +0 -0
  1481. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_followup_c_severity_parity.py +0 -0
  1482. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_followup_d_severity_parity.py +0 -0
  1483. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_followup_f_api_changes_severity.py +0 -0
  1484. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_followup_g_severity_shortcode_parity.py +0 -0
  1485. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_followup_h_api_drift_severity.py +0 -0
  1486. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_followup_j_laws_confidence_vocab.py +0 -0
  1487. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_smells_severity_5tier.py +0 -0
  1488. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1005_smells_severity_parity.py +0 -0
  1489. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1030_followup_a_alerts_budget_load_status.py +0 -0
  1490. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1030_followup_b_health_load_status.py +0 -0
  1491. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1030_followup_c_check_rules_load_status.py +0 -0
  1492. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1030_followup_d_fitness_load_status.py +0 -0
  1493. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1030_followup_f_rules_load_status.py +0 -0
  1494. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1030_load_status.py +0 -0
  1495. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1038_extract_typed_integration.py +0 -0
  1496. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1057_math_unknown_detectors.py +0 -0
  1497. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1060_sarif_runtime_notifications_extension.py +0 -0
  1498. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1068_search_unknown_kind.py +0 -0
  1499. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1069_endpoints_unknown_framework.py +0 -0
  1500. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1070_test_scaffold_unknown_framework.py +0 -0
  1501. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1074_workflow_explain_unknown.py +0 -0
  1502. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1075_endpoints_unknown_method.py +0 -0
  1503. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1079_oracle_unknown.py +0 -0
  1504. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1083_followup_2_cli_difflib.py +0 -0
  1505. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1083_followup_3_multi_value.py +0 -0
  1506. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1083_followup_adopters.py +0 -0
  1507. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1083_to_summary_payload.py +0 -0
  1508. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1084_denominator_clamp.py +0 -0
  1509. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1085_fingerprint_cap.py +0 -0
  1510. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1086_cmd_cut_cap.py +0 -0
  1511. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1088_overall_risk_case_insensitive.py +0 -0
  1512. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1100_schema_violation_partial_success.py +0 -0
  1513. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1101_list_counts_symmetric.py +0 -0
  1514. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1102_preserved_truncations_symmetric.py +0 -0
  1515. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1111_click_argument_name_lint.py +0 -0
  1516. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1121_click_argument_file_lint.py +0 -0
  1517. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1121_click_argument_input_path_lint.py +0 -0
  1518. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1121_click_argument_pattern_lint.py +0 -0
  1519. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1121_click_argument_target_lint.py +0 -0
  1520. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1136_click_option_input_path_dest_lint.py +0 -0
  1521. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1142_followup_b_cap_disclosure.py +0 -0
  1522. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1142_followup_cap_disclosure.py +0 -0
  1523. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1142_limit_top_aliases.py +0 -0
  1524. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1253_hash_drift.py +0 -0
  1525. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1254_evidence_stale_consumer.py +0 -0
  1526. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1255_config_hashes.py +0 -0
  1527. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1261_vsa_stale_consumer.py +0 -0
  1528. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1262_evidence_doctor_stale_banner.py +0 -0
  1529. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1266_completeness_compat.py +0 -0
  1530. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1272_unresolved_exit_convention.py +0 -0
  1531. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1279_producer_integration.py +0 -0
  1532. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w12_dimension_real_names.py +0 -0
  1533. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1310_tier_discard_preflight_plan.py +0 -0
  1534. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w1311_describe_understand_minimap_resolver.py +0 -0
  1535. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w201_prefetched_injection_boundary.py +0 -0
  1536. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w211_refs_extensions.py +0 -0
  1537. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w251_ci_env_detection.py +0 -0
  1538. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w350_doctor_replay_permits_authority.py +0 -0
  1539. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w350_drive_by_oscal_authority.py +0 -0
  1540. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w365_followup_2_capability_invariants.py +0 -0
  1541. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w365_followup_capability_side_effect.py +0 -0
  1542. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w365_tool_metadata_annotations_parity.py +0 -0
  1543. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w420_no_runtime_count_headline.py +0 -0
  1544. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w420_surface_count_plugin_invariant.py +0 -0
  1545. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w421_regex_toggle.py +0 -0
  1546. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w43_deps_multi.py +0 -0
  1547. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w444_mcp_tool_names_no_dedupe.py +0 -0
  1548. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w452_python_taint_indexer_gap.py +0 -0
  1549. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w462_landing_page_tool_count_drift.py +0 -0
  1550. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w484_templates_ci_reachable.py +0 -0
  1551. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w489_a_followup_cga_qualified_only.py +0 -0
  1552. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w489_a_taint_qualified_only_lint.py +0 -0
  1553. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w512_edge_kinds_drift.py +0 -0
  1554. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w543_edge_kind_canonical.py +0 -0
  1555. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w543_followup_c_migration.py +0 -0
  1556. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w543_followup_migration.py +0 -0
  1557. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w547_severity_drift.py +0 -0
  1558. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w588_fragile_path_drift.py +0 -0
  1559. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w589_release_lease_warnings_out.py +0 -0
  1560. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w590_lease_policy_no_project_root.py +0 -0
  1561. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w591_permit_policy_no_project_root.py +0 -0
  1562. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w592_gc_expired_leases_warnings_out.py +0 -0
  1563. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w593_permits_silent_fails.py +0 -0
  1564. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w595_read_permit_warnings_out.py +0 -0
  1565. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w596_read_run_meta_warnings_out.py +0 -0
  1566. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w597_daemon_read_warnings_out.py +0 -0
  1567. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w598_pr_analyze_cache_warnings_out.py +0 -0
  1568. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w599_trace_ingest_warnings_out.py +0 -0
  1569. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w600_config_hashes_warnings_out.py +0 -0
  1570. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w601_signing_warnings_out.py +0 -0
  1571. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w602_metrics_push_warnings_out.py +0 -0
  1572. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w603_open_db_warnings_out.py +0 -0
  1573. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w604_findings_readers_warnings_out.py +0 -0
  1574. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w605_index_embeddings_warnings_out.py +0 -0
  1575. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w606_framework_packs_warnings_out.py +0 -0
  1576. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_a_cmd_search_semantic_warnings_out_envelope.py +0 -0
  1577. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_aa_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  1578. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ab_cmd_pr_risk_warnings_out_envelope.py +0 -0
  1579. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ac_cmd_pr_prep_warnings_out_envelope.py +0 -0
  1580. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ad_cmd_attest_warnings_out_envelope.py +0 -0
  1581. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ae_cmd_pr_bundle_warnings_out_envelope.py +0 -0
  1582. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_af_cmd_cga_warnings_out_envelope.py +0 -0
  1583. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ag_cmd_for_refactor_warnings_out_envelope.py +0 -0
  1584. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ah_cmd_pr_replay_warnings_out_envelope.py +0 -0
  1585. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ai_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  1586. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_aj_for_security_review_warnings_out_envelope.py +0 -0
  1587. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ak_cmd_supply_chain_warnings_out_envelope.py +0 -0
  1588. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_al_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -0
  1589. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_am_cmd_sbom_warnings_out_envelope.py +0 -0
  1590. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_an_cmd_postmortem_warnings_out_envelope.py +0 -0
  1591. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ao_for_bug_fix_warnings_out_envelope.py +0 -0
  1592. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ap_cmd_audit_trail_export_warnings_out_envelope.py +0 -0
  1593. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_aq_cmd_vulns_warnings_out_envelope.py +0 -0
  1594. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ar_for_new_feature_warnings_out_envelope.py +0 -0
  1595. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_as_cmd_runs_warnings_out_envelope.py +0 -0
  1596. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_at_cmd_evidence_doctor_warnings_out_envelope.py +0 -0
  1597. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_au_cmd_vuln_reach_warnings_out_envelope.py +0 -0
  1598. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_av_cmd_dogfood_warnings_out_envelope.py +0 -0
  1599. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_aw_cmd_preflight_warnings_out_envelope.py +0 -0
  1600. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ax_cmd_evidence_diff_warnings_out_envelope.py +0 -0
  1601. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ay_cmd_taint_warnings_out_envelope.py +0 -0
  1602. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_az_cmd_minimap_warnings_out_envelope.py +0 -0
  1603. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_b_cmd_retrieve_warnings_out_envelope.py +0 -0
  1604. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ba_cmd_health_warnings_out_envelope.py +0 -0
  1605. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bb_cmd_impact_warnings_out_envelope.py +0 -0
  1606. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bc_cmd_understand_warnings_out_envelope.py +0 -0
  1607. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bd_cmd_capsule_warnings_out_envelope.py +0 -0
  1608. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_be_cmd_doctor_warnings_out_envelope.py +0 -0
  1609. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bf_cmd_context_warnings_out_envelope.py +0 -0
  1610. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bg_cmd_debt_warnings_out_envelope.py +0 -0
  1611. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bh_cmd_diagnose_warnings_out_envelope.py +0 -0
  1612. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bi_cmd_retrieve_warnings_out_envelope.py +0 -0
  1613. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bj_cmd_complexity_warnings_out_envelope.py +0 -0
  1614. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bk_cmd_dark_matter_warnings_out_envelope.py +0 -0
  1615. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bl_cmd_critique_warnings_out_envelope.py +0 -0
  1616. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bm_cmd_duplicates_warnings_out_envelope.py +0 -0
  1617. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bn_cmd_smells_warnings_out_envelope.py +0 -0
  1618. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bo_cmd_search_semantic_warnings_out_envelope.py +0 -0
  1619. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bp_cmd_diff_warnings_out_envelope.py +0 -0
  1620. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bq_cmd_clones_warnings_out_envelope.py +0 -0
  1621. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_br_cmd_search_warnings_out_envelope.py +0 -0
  1622. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bs_cmd_vibe_check_warnings_out_envelope.py +0 -0
  1623. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bt_cmd_attest_warnings_out_envelope.py +0 -0
  1624. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bu_cmd_pr_risk_warnings_out_envelope.py +0 -0
  1625. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bv_cmd_grep_warnings_out_envelope.py +0 -0
  1626. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bw_cmd_pr_bundle_warnings_out_envelope.py +0 -0
  1627. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bx_cmd_dead_warnings_out_envelope.py +0 -0
  1628. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_by_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  1629. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_bz_cmd_cga_warnings_out_envelope.py +0 -0
  1630. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_c_cmd_findings_warnings_out_envelope.py +0 -0
  1631. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ca_cmd_pr_replay_warnings_out_envelope.py +0 -0
  1632. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cb_cmd_n1_warnings_out_envelope.py +0 -0
  1633. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cc_cmd_pr_prep_warnings_out_envelope.py +0 -0
  1634. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cd_cmd_supply_chain_warnings_out_envelope.py +0 -0
  1635. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ce_cmd_over_fetch_warnings_out_envelope.py +0 -0
  1636. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cf_cmd_evidence_doctor_warnings_out_envelope.py +0 -0
  1637. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cg_cmd_sbom_warnings_out_envelope.py +0 -0
  1638. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ch_cmd_vulns_warnings_out_envelope.py +0 -0
  1639. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ci_cmd_missing_index_warnings_out_envelope.py +0 -0
  1640. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cj_cmd_taint_warnings_out_envelope.py +0 -0
  1641. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ck_cmd_evidence_diff_warnings_out_envelope.py +0 -0
  1642. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cl_cmd_vuln_reach_warnings_out_envelope.py +0 -0
  1643. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cm_cmd_auth_gaps_warnings_out_envelope.py +0 -0
  1644. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cn_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  1645. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_co_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -0
  1646. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cp_cmd_hotspots_warnings_out_envelope.py +0 -0
  1647. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cq_cmd_bus_factor_warnings_out_envelope.py +0 -0
  1648. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cr_cmd_audit_trail_export_warnings_out_envelope.py +0 -0
  1649. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cr_cmd_orphan_imports_warnings_out_envelope.py +0 -0
  1650. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ct_cmd_runs_warnings_out_envelope.py +0 -0
  1651. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cu_cmd_invariants_warnings_out_envelope.py +0 -0
  1652. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cv_cmd_postmortem_warnings_out_envelope.py +0 -0
  1653. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cw_cmd_conventions_warnings_out_envelope.py +0 -0
  1654. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cx_cmd_alerts_warnings_out_envelope.py +0 -0
  1655. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cy_cmd_fan_warnings_out_envelope.py +0 -0
  1656. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_cz_cmd_dark_matter_warnings_out_envelope.py +0 -0
  1657. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_d_cmd_dogfood_warnings_out_envelope.py +0 -0
  1658. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_da_cmd_relate_warnings_out_envelope.py +0 -0
  1659. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_db_cmd_deps_warnings_out_envelope.py +0 -0
  1660. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dc_cmd_clones_warnings_out_envelope.py +0 -0
  1661. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dd_cmd_duplicates_warnings_out_envelope.py +0 -0
  1662. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_de_cmd_uses_warnings_out_envelope.py +0 -0
  1663. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_df_cmd_smells_warnings_out_envelope.py +0 -0
  1664. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dg_cmd_describe_warnings_out_envelope.py +0 -0
  1665. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dh_cmd_fingerprint_warnings_out_envelope.py +0 -0
  1666. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_di_cmd_metrics_push_warnings_out_envelope.py +0 -0
  1667. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dj_cmd_fan_score_classify_extension.py +0 -0
  1668. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dk_cmd_capsule_warnings_out_envelope.py +0 -0
  1669. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dl_cmd_dead_warnings_out_envelope.py +0 -0
  1670. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dm_cmd_audit_warnings_out_envelope.py +0 -0
  1671. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dn_cmd_diagnose_warnings_out_envelope.py +0 -0
  1672. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_do_cmd_graph_export_warnings_out_envelope.py +0 -0
  1673. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dp_cmd_dashboard_warnings_out_envelope.py +0 -0
  1674. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dq_cmd_n1_warnings_out_envelope.py +0 -0
  1675. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dr_cmd_postmortem_warnings_out_envelope.py +0 -0
  1676. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ds_cmd_orchestrate_warnings_out_envelope.py +0 -0
  1677. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dt_cmd_over_fetch_warnings_out_envelope.py +0 -0
  1678. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_du_cmd_partition_warnings_out_envelope.py +0 -0
  1679. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dv_cmd_pr_replay_warnings_out_envelope.py +0 -0
  1680. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dw_cmd_doctor_warnings_out_envelope.py +0 -0
  1681. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dx_cmd_missing_index_warnings_out_envelope.py +0 -0
  1682. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dy_cmd_agent_plan_warnings_out_envelope.py +0 -0
  1683. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_dz_cmd_taint_warnings_out_envelope.py +0 -0
  1684. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_e_cmd_search_warnings_out_envelope.py +0 -0
  1685. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ea_cmd_audit_trail_verify_warnings_out_envelope.py +0 -0
  1686. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_eb_cmd_fleet_warnings_out_envelope.py +0 -0
  1687. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ec_cmd_preflight_warnings_out_envelope.py +0 -0
  1688. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ed_cmd_auth_gaps_warnings_out_envelope.py +0 -0
  1689. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ee_cmd_audit_trail_conformance_warnings_out_envelope.py +0 -0
  1690. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ef_cmd_simulate_warnings_out_envelope.py +0 -0
  1691. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_eg_cmd_mutate_warnings_out_envelope.py +0 -0
  1692. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_eh_cmd_bus_factor_warnings_out_envelope.py +0 -0
  1693. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ei_cmd_cut_warnings_out_envelope.py +0 -0
  1694. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ej_cmd_critique_warnings_out_envelope.py +0 -0
  1695. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ek_cmd_adversarial_warnings_out_envelope.py +0 -0
  1696. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_el_cmd_pr_analyze_warnings_out_envelope.py +0 -0
  1697. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_em_cmd_closure_warnings_out_envelope.py +0 -0
  1698. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_en_cmd_hotspots_warnings_out_envelope.py +0 -0
  1699. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_eo_cmd_pr_prep_warnings_out_envelope.py +0 -0
  1700. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_ep_cmd_for_refactor_warnings_out_envelope.py +0 -0
  1701. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_eq_cmd_trace_warnings_out_envelope.py +0 -0
  1702. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_es_cmd_grep_warnings_out_envelope.py +0 -0
  1703. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_f_cmd_complete_warnings_out_envelope.py +0 -0
  1704. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_g_cmd_grep_warnings_out_envelope.py +0 -0
  1705. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_h_cmd_history_grep_warnings_out_envelope.py +0 -0
  1706. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_i_cmd_refs_text_warnings_out_envelope.py +0 -0
  1707. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_j_cmd_delete_check_warnings_out_envelope.py +0 -0
  1708. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_k_cmd_describe_warnings_out_envelope.py +0 -0
  1709. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_l_cmd_minimap_warnings_out_envelope.py +0 -0
  1710. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_m_cmd_health_warnings_out_envelope.py +0 -0
  1711. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_n_cmd_doctor_warnings_out_envelope.py +0 -0
  1712. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_o_cmd_dashboard_warnings_out_envelope.py +0 -0
  1713. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_p_cmd_audit_warnings_out_envelope.py +0 -0
  1714. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_q_cmd_pr_risk_warnings_out_envelope.py +0 -0
  1715. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_r_cmd_preflight_warnings_out_envelope.py +0 -0
  1716. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_s_cmd_diagnose_warnings_out_envelope.py +0 -0
  1717. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_t_cmd_impact_warnings_out_envelope.py +0 -0
  1718. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_u_cmd_uses_warnings_out_envelope.py +0 -0
  1719. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_v_cmd_deps_warnings_out_envelope.py +0 -0
  1720. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_w_cmd_relate_warnings_out_envelope.py +0 -0
  1721. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_x_cmd_fan_warnings_out_envelope.py +0 -0
  1722. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_y_cmd_critique_warnings_out_envelope.py +0 -0
  1723. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w607_z_cmd_diff_warnings_out_envelope.py +0 -0
  1724. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w639_detector_smoke.py +0 -0
  1725. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_a_impact_risk_level.py +0 -0
  1726. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_b_critique_risk_level.py +0 -0
  1727. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_c_pr_bundle_risk_level.py +0 -0
  1728. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_d_attest_risk_level.py +0 -0
  1729. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_e_diff_risk_level.py +0 -0
  1730. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_f_collector_canonical_risk.py +0 -0
  1731. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_g_dark_matter_risk_level.py +0 -0
  1732. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_h_migration_plan_risk_level.py +0 -0
  1733. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_followup_i_exporter_risk_vocab.py +0 -0
  1734. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w641_pr_risk_risk_level_emit.py +0 -0
  1735. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w661_algo_detector_smoke.py +0 -0
  1736. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w662_bare_except_drift.py +0 -0
  1737. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w664_package_data_init_drift.py +0 -0
  1738. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w668_as_file_pattern_drift.py +0 -0
  1739. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w675_example_smells_suppress.py +0 -0
  1740. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w676_followup_example_files.py +0 -0
  1741. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w680_world_model_empty_corpus.py +0 -0
  1742. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w681_taint_engine_positive_smoke.py +0 -0
  1743. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w693_suppression_cross_loader.py +0 -0
  1744. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w703_comment_syntax_coverage.py +0 -0
  1745. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w711_mcp_card_error_branches.py +0 -0
  1746. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w712_mcp_list_tools_smoke.py +0 -0
  1747. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w725_comment_density_foxpro_scss.py +0 -0
  1748. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w738_suppression_wire_format.py +0 -0
  1749. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w759_preflight_lowercase.py +0 -0
  1750. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w761_critique_severity_vocab.py +0 -0
  1751. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w761_invariants_bus_factor_complexity_lowercase.py +0 -0
  1752. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w761_vulns_secrets_severity_vocab.py +0 -0
  1753. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w762_severity_upper_drift.py +0 -0
  1754. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w792_well_known_card_mirrors.py +0 -0
  1755. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w801_endpoints_empty_corpus.py +0 -0
  1756. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w802_dead_empty_corpus.py +0 -0
  1757. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w803_n1_empty_corpus.py +0 -0
  1758. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_a_cmd_owner_empty_corpus.py +0 -0
  1759. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_aaa_cmd_mode_empty_corpus.py +0 -0
  1760. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_aaaa_cmd_delete_check_empty_corpus.py +0 -0
  1761. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_aaaaa_cmd_boundary_shared_helper_silent_safe.py +0 -0
  1762. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_b_cmd_minimap_empty_corpus.py +0 -0
  1763. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_bb_cmd_clusters_empty_corpus.py +0 -0
  1764. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_bbb_cmd_memory_empty_corpus.py +0 -0
  1765. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_bbbb_cmd_simulate_empty_corpus.py +0 -0
  1766. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_bbbbb_cmd_pr_bundle_validate_identity_skip.py +0 -0
  1767. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_bcluster_debt_alerts_empty_corpus.py +0 -0
  1768. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_c_cmd_oracle_empty_corpus.py +0 -0
  1769. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_cc_cmd_spectral_empty_corpus.py +0 -0
  1770. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ccc_cmd_attest_empty_corpus.py +0 -0
  1771. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_cccc_cmd_clones_below_threshold_collapse.py +0 -0
  1772. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ccccc_cmd_why_slow_shared_helper_silent_safe.py +0 -0
  1773. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_consolidate_cross_artifact_drift_table.py +0 -0
  1774. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_d_cmd_workflow_empty_corpus.py +0 -0
  1775. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_dd_cmd_history_grep_empty_corpus.py +0 -0
  1776. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ddd_cmd_constitution_empty_corpus.py +0 -0
  1777. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_dddd_cmd_orchestrate_target_resolution.py +0 -0
  1778. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ddddd_cmd_evidence_doctor_q17_asymmetry.py +0 -0
  1779. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_diff_empty_corpus.py +0 -0
  1780. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_e_cmd_path_coverage_empty_corpus.py +0 -0
  1781. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ee_cmd_simulate_empty_corpus.py +0 -0
  1782. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_eee_cmd_agent_score_empty_corpus.py +0 -0
  1783. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_eeee_cmd_diff_resolution_disclosure.py +0 -0
  1784. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_eeeee_cmd_verify_shared_helper_silent_safe.py +0 -0
  1785. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_empty_state_pattern_2.py +0 -0
  1786. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_f_cmd_for_bug_fix_empty_corpus.py +0 -0
  1787. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_fan_empty_corpus.py +0 -0
  1788. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_fff_cmd_cga_empty_corpus.py +0 -0
  1789. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ffff_cmd_smells_below_threshold_collapse.py +0 -0
  1790. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_fffff_cmd_pr_replay_verify_identity_skip.py +0 -0
  1791. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_fingerprint_empty_corpus.py +0 -0
  1792. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_followup_pattern_2.py +0 -0
  1793. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_g_cmd_pr_prep_empty_corpus.py +0 -0
  1794. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_gg_cmd_mutate_empty_corpus.py +0 -0
  1795. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ggg_cmd_for_new_feature_empty_corpus.py +0 -0
  1796. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_gggg_cmd_capsule_snapshot_state.py +0 -0
  1797. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ggggg_cmd_attest_signing_surface_producer_coverage.py +0 -0
  1798. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_h_cmd_explain_command_empty_corpus.py +0 -0
  1799. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_hh_cmd_test_impact_empty_corpus.py +0 -0
  1800. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_hhh_cmd_capsule_empty_corpus.py +0 -0
  1801. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_hhhh_cmd_critique_shared_helper_silent_safe.py +0 -0
  1802. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_hhhhh_cmd_syntax_check_shared_helper_silent_safe.py +0 -0
  1803. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_i_cmd_describe_empty_corpus.py +0 -0
  1804. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ii_cmd_relate_empty_corpus.py +0 -0
  1805. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_iii_cmd_evidence_diff_empty_corpus.py +0 -0
  1806. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_iiii_cmd_fingerprint_snapshot_state.py +0 -0
  1807. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_iiiii_cmd_postmortem_verifier_identity_skip.py +0 -0
  1808. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_j_cmd_understand_empty_corpus.py +0 -0
  1809. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_jj_cmd_hover_empty_corpus.py +0 -0
  1810. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_jjj_cmd_tour_empty_corpus.py +0 -0
  1811. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_jjjj_cmd_pr_diff_shared_helper_silent_safe.py +0 -0
  1812. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_jjjjj_cmd_suggest_reviewers_shared_helper_silent_safe.py +0 -0
  1813. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_k_cmd_module_empty_corpus.py +0 -0
  1814. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_kk_cmd_for_refactor_empty_corpus.py +0 -0
  1815. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_kkk_diagnose_issue_empty_corpus.py +0 -0
  1816. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_kkkk_cmd_taint_cross_lang_scoring.py +0 -0
  1817. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_kkkkk_cga_vsa_sibling_consistency.py +0 -0
  1818. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_l_cmd_preflight_empty_corpus.py +0 -0
  1819. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ll_cmd_for_security_review_empty_corpus.py +0 -0
  1820. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_lll_cmd_evidence_doctor_empty_corpus.py +0 -0
  1821. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_llll_cmd_runs_replay_lineage.py +0 -0
  1822. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_lllll_cmd_attest_verify_identity_skip.py +0 -0
  1823. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_m_cmd_diagnose_empty_corpus.py +0 -0
  1824. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_mm_cmd_pr_analyze_empty_corpus.py +0 -0
  1825. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_mmm_cmd_pr_replay_empty_corpus.py +0 -0
  1826. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_mmmm_cmd_workspace_shared_helper_silent_safe.py +0 -0
  1827. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_mmmmm_cmd_coupling_shared_helper_silent_safe.py +0 -0
  1828. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_n_cmd_file_empty_corpus.py +0 -0
  1829. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_nn_cmd_pr_bundle_empty_corpus.py +0 -0
  1830. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_nnn_cmd_evidence_oscal_empty_corpus.py +0 -0
  1831. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_nnnn_cmd_vuln_reach_cross_lang.py +0 -0
  1832. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_nnnnn_compound_cross_subcommand_identity_drift.py +0 -0
  1833. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_o_cmd_why_empty_corpus.py +0 -0
  1834. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_oo_cmd_dogfood_empty_corpus.py +0 -0
  1835. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ooo_prepare_change_empty_corpus.py +0 -0
  1836. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_oooo_cmd_attest_disclosure.py +0 -0
  1837. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ooooo_pr_bundle_slsa_l3_three_artifact_identity_coherence.py +0 -0
  1838. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_p_cmd_impact_empty_corpus.py +0 -0
  1839. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_pp_cmd_dashboard_empty_corpus.py +0 -0
  1840. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_pppp_cmd_cga_attestation_lineage.py +0 -0
  1841. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ppppp_pr_bundle_cosign_four_artifact_identity_coherence.py +0 -0
  1842. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_pr_analyze_empty_corpus.py +0 -0
  1843. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_q_cmd_deps_empty_corpus.py +0 -0
  1844. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_qq_cmd_visualize_empty_corpus.py +0 -0
  1845. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_qqq_review_change_empty_corpus.py +0 -0
  1846. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_qqqq_cmd_supply_chain_cross_eco.py +0 -0
  1847. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_qqqqq_compound_recipe_shape_axis_drift.py +0 -0
  1848. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_r_cmd_adversarial_empty_corpus.py +0 -0
  1849. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_rr_cmd_audit_empty_corpus.py +0 -0
  1850. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_rrr_cmd_postmortem_empty_corpus.py +0 -0
  1851. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_rrrr_cmd_test_gaps_shared_helper_silent_safe.py +0 -0
  1852. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_rrrrr_pr_bundle_rekor_five_artifact_identity_coherence.py +0 -0
  1853. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_s_cmd_fan_empty_corpus.py +0 -0
  1854. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_sss_cmd_triage_empty_corpus.py +0 -0
  1855. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ssss_cmd_affected_tests_shared_helper_silent_safe.py +0 -0
  1856. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_sssss_pr_bundle_fulcio_six_artifact_identity_coherence.py +0 -0
  1857. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_t_cmd_uses_empty_corpus.py +0 -0
  1858. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_tt_cmd_brief_empty_corpus.py +0 -0
  1859. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ttt_cmd_ai_readiness_empty_corpus.py +0 -0
  1860. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_tttt_cmd_pr_bundle_q18_coverage_axis.py +0 -0
  1861. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ttttt_octet_trimmed_iserror_axis_sweep.py +0 -0
  1862. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_u_cmd_orchestrate_empty_corpus.py +0 -0
  1863. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_uu_cmd_replay_empty_corpus.py +0 -0
  1864. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_uuu_cmd_grep_reachability_empty_corpus.py +0 -0
  1865. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_uuuu_cmd_audit_trail_verify_identity_skip.py +0 -0
  1866. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_uuuuu_error_storm_coalescer_trim_variant_sweep.py +0 -0
  1867. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_v_cmd_trace_empty_corpus.py +0 -0
  1868. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_vv_cmd_next_empty_corpus.py +0 -0
  1869. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_vvv_explore_compound_empty_corpus.py +0 -0
  1870. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_vvvv_cmd_affected_shared_helper_silent_safe.py +0 -0
  1871. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_w_cmd_refs_text_empty_corpus.py +0 -0
  1872. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_ww_cmd_runs_empty_corpus.py +0 -0
  1873. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_www_cmd_dark_matter_empty_corpus.py +0 -0
  1874. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_wwww_vsa_verifier_identity_skip.py +0 -0
  1875. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_x_cmd_layers_empty_corpus.py +0 -0
  1876. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_xx_cmd_lease_empty_corpus.py +0 -0
  1877. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_xxx_cmd_refs_text_reachability_empty_corpus.py +0 -0
  1878. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_xxxx_cmd_adversarial_shared_helper_silent_safe.py +0 -0
  1879. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_y_cmd_partition_empty_corpus.py +0 -0
  1880. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_yy_cmd_intent_check_empty_corpus.py +0 -0
  1881. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_yyy_cmd_n1_post_mod_empty_corpus.py +0 -0
  1882. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_yyyy_cmd_pr_replay_q17_harvester_coverage.py +0 -0
  1883. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_z_cmd_delete_check_empty_corpus.py +0 -0
  1884. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_zzz_cmd_duplicates_post_mod_empty_corpus.py +0 -0
  1885. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w805_zzzz_cmd_evidence_diff_cross_repo_identity.py +0 -0
  1886. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w806_complexity_empty_corpus.py +0 -0
  1887. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w807_missing_index_empty_corpus.py +0 -0
  1888. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w808_clones_empty_corpus.py +0 -0
  1889. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w809_over_fetch_empty_corpus.py +0 -0
  1890. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w811_bus_factor_empty_corpus.py +0 -0
  1891. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w812_orphan_imports_empty_corpus.py +0 -0
  1892. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w815_auth_gaps_empty_corpus.py +0 -0
  1893. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w816_hotspots_empty_corpus.py +0 -0
  1894. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w820_smells_empty_corpus.py +0 -0
  1895. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w821_duplicates_empty_corpus.py +0 -0
  1896. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w823_vulns_empty_corpus.py +0 -0
  1897. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w824_invariants_empty_corpus.py +0 -0
  1898. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w825_taint_empty_corpus.py +0 -0
  1899. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w827_audit_trail_conformance_empty_corpus.py +0 -0
  1900. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w828_pr_risk_empty_corpus.py +0 -0
  1901. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w829_audit_trail_verify_empty_corpus.py +0 -0
  1902. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w830_audit_trail_verify_gate.py +0 -0
  1903. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w831_critique_empty_corpus.py +0 -0
  1904. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w833_health_empty_corpus.py +0 -0
  1905. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w835_doctor_empty_corpus.py +0 -0
  1906. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w837_coverage_gaps_empty_corpus.py +0 -0
  1907. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w837_forecast_empty_corpus.py +0 -0
  1908. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w844_card_hash_auto_rotate.py +0 -0
  1909. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w852_type_switch.py +0 -0
  1910. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w853_speculative_generality.py +0 -0
  1911. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w855_rename_invariant_clones.py +0 -0
  1912. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w856_cross_layer_clones.py +0 -0
  1913. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w857_parallel_hierarchy.py +0 -0
  1914. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w870_detector_version_stamp_parity.py +0 -0
  1915. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w898_followup_b_laws_checker.py +0 -0
  1916. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w898_followup_is_test_path_clone_sweep.py +0 -0
  1917. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w898_is_test_path_delegation.py +0 -0
  1918. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w907_cycle_hedge_audit.py +0 -0
  1919. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w910_alerts_threshold_parity.py +0 -0
  1920. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w911_confidence_tier_parity.py +0 -0
  1921. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w912_detector_metadata_coverage.py +0 -0
  1922. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w918_alerts_silent_fallback.py +0 -0
  1923. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w933_typeddict_boundary_audit.py +0 -0
  1924. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w937_no_mojibake_em_dashes.py +0 -0
  1925. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w954_core_tools_capability_drift.py +0 -0
  1926. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w962_w963_w964_alerts_pattern2.py +0 -0
  1927. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w985_followup_head_unchanged_info_log.py +0 -0
  1928. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w985_incremental_skip_info_log.py +0 -0
  1929. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w985_shallow_history_info_log.py +0 -0
  1930. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w987_smells_pattern2.py +0 -0
  1931. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w989_pr_risk_pattern2.py +0 -0
  1932. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w994_w995_suppress_yaml.py +0 -0
  1933. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w_json_mode_no_stdout_warnings.py +0 -0
  1934. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w_mcp_injection_marker_egress.py +0 -0
  1935. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w_mcp_mode_enforcement.py +0 -0
  1936. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w_mcp_receipt_hmac_link.py +0 -0
  1937. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w_mcp_redact_egress.py +0 -0
  1938. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w_mcp_security_pipeline_e2e.py +0 -0
  1939. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_w_mcp_shadow_mode.py +0 -0
  1940. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_watch.py +0 -0
  1941. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_why.py +0 -0
  1942. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_why_slow.py +0 -0
  1943. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_workspace.py +0 -0
  1944. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_world_model_classifier_fidelity.py +0 -0
  1945. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ws_resolve_fixes.py +0 -0
  1946. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_ws_resolve_unmatched.py +0 -0
  1947. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_x_lang_scope.py +0 -0
  1948. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_xlang.py +0 -0
  1949. {roam_code-13.7.1 → roam_code-13.8.0}/tests/test_yaml_hcl.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: roam-code
3
- Version: 13.7.1
3
+ Version: 13.8.0
4
4
  Summary: Local codebase intelligence for AI coding agents: structural repo map, change-safety gates, MCP security receipts, and tamper-evident ChangeEvidence packets. 100% local, zero API keys, zero network egress.
5
5
  Author: Cranot
6
6
  License-Expression: Apache-2.0
@@ -80,7 +80,7 @@ Dynamic: license-file
80
80
  <sub>Credential-free · 100% local by default (opt-in `metrics-push` is the only outbound surface) · tamper-evident `ChangeEvidence` packets · Apache 2.0 · runs entirely on your machine</sub>
81
81
 
82
82
  <!-- BEGIN auto-count:readme-headline-counts -->
83
- <sub>268 commands · 243 MCP tools (16 in the default `core` preset) · 28 languages</sub>
83
+ <sub>272 commands · 243 MCP tools (16 in the default `core` preset) · 28 languages</sub>
84
84
  <!-- END auto-count:readme-headline-counts -->
85
85
 
86
86
  ![roam terminal demo](docs/assets/roam-terminal-demo.gif)
@@ -445,7 +445,7 @@ Full release notes in [CHANGELOG.md](CHANGELOG.md).
445
445
  ## Core commands
446
446
 
447
447
  <!-- BEGIN auto-count:readme-canonical-mention -->
448
- **Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining ~263 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 **268 commands (261 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.
448
+ **Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining ~267 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 **272 commands (265 canonical + 7 aliases) organised into 7 categories** (aliases for muscle memory: `math` → `algo`, `churn` → `weather`, `digest` / `snapshot` / `trend` → `trends`, `onboard` → `understand`, `refs` → `uses`), but you don't need to know that to start.
449
449
  <!-- END auto-count:readme-canonical-mention -->
450
450
 
451
451
  | Verb | What it does |
@@ -460,7 +460,7 @@ The full surface spans **7 categories** — Getting Started, Daily Workflow, Cod
460
460
 
461
461
  <details>
462
462
  <!-- BEGIN auto-count:readme-cli-command-list-summary -->
463
- <summary><strong>Full command reference — canonical command list (all 261)</strong></summary>
463
+ <summary><strong>Full command reference — canonical command list (all 265)</strong></summary>
464
464
  <!-- END auto-count:readme-cli-command-list-summary -->
465
465
 
466
466
  The complete, always-current list with flags and examples lives in the [Command Reference](https://roam-code.com/docs/command-reference).
@@ -664,7 +664,7 @@ See [Using Roam via MCP](https://roam-code.com/docs/mcp-usage) for the first-run
664
664
  | `roam_diff` | Show the blast radius of your edits BEFORE you commit. Run after Edit/Write tools to see affected symbols, files, tests, plus coupling and fitness warnings. Use when user asks 'what did my change break?', 'safe to commit?'. Replaces ad-hoc `git diff --stat` inspection with graph-aware impact data. For PR-level risk verdict, use roam_pr_risk. |
665
665
  | `roam_disambiguate` | List every symbol matching a name with file/line/kind/signature/PageRank — pick the right overload. |
666
666
  | `roam_doc_intent` | Link documentation to code: find drift, dead refs, undocumented symbols. |
667
- | `roam_doc_staleness` | Detect stale docstrings: docs whose body has drifted since the comment was written. Uses ``git blame`` to compare docstring timestamps against code body timestamps. Different from ``roam_docs_coverage`` (missing docs ranked by PageRank) and ``roam_stale_refs`` (dangling doc links) -- this audits what existing docs SAY. |
667
+ | `roam_doc_staleness` | Run a semantic docstring-drift audit: flag documented parameters, returns, or raises that no longer match code. Pass ``include_prose_drift`` to include optional blame-only summary drift. Different from ``roam_docs_coverage`` (missing docs ranked by PageRank) and ``roam_stale_refs`` (dangling doc links) -- this audits concrete claims in existing docs. |
668
668
  | `roam_docs_coverage` | Doc coverage + stale-doc drift with PageRank-ranked missing docs. |
669
669
  | `roam_doctor` | Setup diagnostics: Python version, tree-sitter, git, index existence, freshness, SQLite. |
670
670
  | `roam_dogfood` | One-shot full-stack run: audit + pr-analyze + audit-trail + conformance. |
@@ -13,7 +13,7 @@
13
13
  <sub>Credential-free · 100% local by default (opt-in `metrics-push` is the only outbound surface) · tamper-evident `ChangeEvidence` packets · Apache 2.0 · runs entirely on your machine</sub>
14
14
 
15
15
  <!-- BEGIN auto-count:readme-headline-counts -->
16
- <sub>268 commands · 243 MCP tools (16 in the default `core` preset) · 28 languages</sub>
16
+ <sub>272 commands · 243 MCP tools (16 in the default `core` preset) · 28 languages</sub>
17
17
  <!-- END auto-count:readme-headline-counts -->
18
18
 
19
19
  ![roam terminal demo](docs/assets/roam-terminal-demo.gif)
@@ -378,7 +378,7 @@ Full release notes in [CHANGELOG.md](CHANGELOG.md).
378
378
  ## Core commands
379
379
 
380
380
  <!-- BEGIN auto-count:readme-canonical-mention -->
381
- **Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining ~263 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 **268 commands (261 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.
381
+ **Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining ~267 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 **272 commands (265 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.
382
382
  <!-- END auto-count:readme-canonical-mention -->
383
383
 
384
384
  | Verb | What it does |
@@ -393,7 +393,7 @@ The full surface spans **7 categories** — Getting Started, Daily Workflow, Cod
393
393
 
394
394
  <details>
395
395
  <!-- BEGIN auto-count:readme-cli-command-list-summary -->
396
- <summary><strong>Full command reference — canonical command list (all 261)</strong></summary>
396
+ <summary><strong>Full command reference — canonical command list (all 265)</strong></summary>
397
397
  <!-- END auto-count:readme-cli-command-list-summary -->
398
398
 
399
399
  The complete, always-current list with flags and examples lives in the [Command Reference](https://roam-code.com/docs/command-reference).
@@ -597,7 +597,7 @@ See [Using Roam via MCP](https://roam-code.com/docs/mcp-usage) for the first-run
597
597
  | `roam_diff` | Show the blast radius of your edits BEFORE you commit. Run after Edit/Write tools to see affected symbols, files, tests, plus coupling and fitness warnings. Use when user asks 'what did my change break?', 'safe to commit?'. Replaces ad-hoc `git diff --stat` inspection with graph-aware impact data. For PR-level risk verdict, use roam_pr_risk. |
598
598
  | `roam_disambiguate` | List every symbol matching a name with file/line/kind/signature/PageRank — pick the right overload. |
599
599
  | `roam_doc_intent` | Link documentation to code: find drift, dead refs, undocumented symbols. |
600
- | `roam_doc_staleness` | Detect stale docstrings: docs whose body has drifted since the comment was written. Uses ``git blame`` to compare docstring timestamps against code body timestamps. Different from ``roam_docs_coverage`` (missing docs ranked by PageRank) and ``roam_stale_refs`` (dangling doc links) -- this audits what existing docs SAY. |
600
+ | `roam_doc_staleness` | Run a semantic docstring-drift audit: flag documented parameters, returns, or raises that no longer match code. Pass ``include_prose_drift`` to include optional blame-only summary drift. Different from ``roam_docs_coverage`` (missing docs ranked by PageRank) and ``roam_stale_refs`` (dangling doc links) -- this audits concrete claims in existing docs. |
601
601
  | `roam_docs_coverage` | Doc coverage + stale-doc drift with PageRank-ranked missing docs. |
602
602
  | `roam_doctor` | Setup diagnostics: Python version, tree-sitter, git, index existence, freshness, SQLite. |
603
603
  | `roam_dogfood` | One-shot full-stack run: audit + pr-analyze + audit-trail + conformance. |
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
8
8
 
9
9
  [project]
10
10
  name = "roam-code"
11
- version = "13.7.1"
11
+ version = "13.8.0"
12
12
  description = "Local codebase intelligence for AI coding agents: structural repo map, change-safety gates, MCP security receipts, and tamper-evident ChangeEvidence packets. 100% local, zero API keys, zero network egress."
13
13
  readme = "README.md"
14
14
  requires-python = ">=3.10"
@@ -1730,6 +1730,27 @@ _IO_WRAPPER_NAMES = {
1730
1730
  "for_each_repo",
1731
1731
  }
1732
1732
 
1733
+ # Batch writes are the anti-N+1 shape. Keep them out of the loop-I/O
1734
+ # detector even when they appear lexically inside a loop body.
1735
+ _IO_BATCH_CALLS = {
1736
+ "executemany",
1737
+ "executebatch",
1738
+ "executescript",
1739
+ "bulkcreate",
1740
+ "bulkinsert",
1741
+ "bulkupdate",
1742
+ "insertmany",
1743
+ "copyfrom",
1744
+ "addall",
1745
+ "writerows",
1746
+ }
1747
+
1748
+
1749
+ def _is_batch_io_call(call: str) -> bool:
1750
+ """Return True for batched writes that should not trip N+1 I/O."""
1751
+ return _call_leaf(call).lower().replace("_", "") in _IO_BATCH_CALLS
1752
+
1753
+
1733
1754
  # D body-level signals that the loop iterates CHUNKS, not
1734
1755
  # individual items. When any of these patterns appear in the function body,
1735
1756
  # the inner I/O calls operate on a batch (WHERE IN (...) form), not per-item,
@@ -2230,6 +2251,8 @@ def _io_classify_call(
2230
2251
  though the leaf matches a cache identifier; user feedback called
2231
2252
  out the Promise<T> vs T distinction explicitly.
2232
2253
  """
2254
+ if _is_batch_io_call(c):
2255
+ return None, None
2233
2256
  # D2: if call name matches cache allowlist BUT is awaited in the body,
2234
2257
  # the await says it really IS asynchronous I/O — escalate to medium.
2235
2258
  memory_result = _classify_known_in_memory_call(c, snippet)
@@ -164,6 +164,7 @@ _COMMANDS = {
164
164
  "clusters": ("roam.commands.cmd_clusters", "clusters"),
165
165
  "layers": ("roam.commands.cmd_layers", "layers"),
166
166
  "cycles": ("roam.commands.cmd_cycles", "cycles"),
167
+ "cycle-break": ("roam.commands.cmd_cycle_break", "cycle_break"),
167
168
  "weather": ("roam.commands.cmd_weather", "weather"),
168
169
  "churn": ("roam.commands.cmd_weather", "weather"),
169
170
  "dead": ("roam.commands.cmd_dead", "dead"),
@@ -329,6 +330,7 @@ _COMMANDS = {
329
330
  "vuln-map": ("roam.commands.cmd_vuln_map", "vuln_map_cmd"),
330
331
  "vuln-reach": ("roam.commands.cmd_vuln_reach", "vuln_reach"),
331
332
  "ingest-trace": ("roam.commands.cmd_ingest_trace", "ingest_trace_cmd"),
333
+ "profile-import": ("roam.commands.cmd_profile_import", "profile_import"),
332
334
  "hotspots": ("roam.commands.cmd_hotspots", "hotspots"),
333
335
  "why-slow": ("roam.commands.cmd_why_slow", "why_slow"),
334
336
  "schema": ("roam.commands.cmd_schema", "schema_cmd"),
@@ -395,6 +397,7 @@ _COMMANDS = {
395
397
  "smells": ("roam.commands.cmd_smells", "smells"),
396
398
  "mcp-setup": ("roam.commands.cmd_mcp_setup", "mcp_setup"),
397
399
  "verify-imports": ("roam.commands.cmd_verify_imports", "verify_imports_cmd"),
400
+ "vue-emits": ("roam.commands.cmd_vue_emits", "vue_emits"),
398
401
  "vulns": ("roam.commands.cmd_vulns", "vulns"),
399
402
  "metrics": ("roam.commands.cmd_metrics", "metrics"),
400
403
  "congestion": ("roam.commands.cmd_congestion", "congestion"),
@@ -420,6 +423,7 @@ _COMMANDS = {
420
423
  "delete-check": ("roam.commands.cmd_delete_check", "delete_check_cmd"),
421
424
  "history-grep": ("roam.commands.cmd_history_grep", "history_grep_cmd"),
422
425
  "surface": ("roam.commands.cmd_surface", "surface"),
426
+ "surface-gaps": ("roam.commands.cmd_surface_gaps", "surface_gaps"),
423
427
  "commands": ("roam.commands.cmd_commands", "commands_cmd"),
424
428
  "explain-command": ("roam.commands.cmd_explain_command", "explain_command"),
425
429
  "db-check": ("roam.commands.cmd_db_check", "db_check"),
@@ -484,6 +488,7 @@ _CATEGORIES = {
484
488
  "stats",
485
489
  "telemetry",
486
490
  "surface",
491
+ "surface-gaps",
487
492
  "commands",
488
493
  "explain-command",
489
494
  "db-check",
@@ -611,10 +616,12 @@ _CATEGORIES = {
611
616
  "forecast",
612
617
  "bisect",
613
618
  "ingest-trace",
619
+ "profile-import",
614
620
  "hotspots",
615
621
  "why-slow",
616
622
  "eval-retrieve",
617
623
  "boundary",
624
+ "vue-emits",
618
625
  ],
619
626
  "Architecture": [
620
627
  "map",
@@ -625,6 +632,7 @@ _CATEGORIES = {
625
632
  "layers",
626
633
  "clusters",
627
634
  "cycles",
635
+ "cycle-break",
628
636
  "spectral",
629
637
  "coupling",
630
638
  "dark-matter",
@@ -1163,6 +1171,7 @@ _MODE_ALWAYS_ALLOWED: frozenset[str] = frozenset(
1163
1171
  "help-search",
1164
1172
  "help-all",
1165
1173
  "surface",
1174
+ "surface-gaps",
1166
1175
  "doctor",
1167
1176
  "exit-codes",
1168
1177
  "version",
@@ -0,0 +1,277 @@
1
+ """Recommend the smallest resolved extraction that breaks each file cycle.
2
+
3
+ Output formats: text (default), ``--json``. SARIF is deliberately NOT
4
+ emitted because cycle-break's deliverable is a refactoring recommendation
5
+ (the minimum extraction edge-set that severs each import cycle) — not a set
6
+ of per-location rule violations, which is the unit SARIF encodes.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import sqlite3
12
+
13
+ import click
14
+ import networkx as nx
15
+
16
+ from roam.capability import roam_capability
17
+ from roam.commands.resolve import empty_corpus_state, ensure_index
18
+ from roam.db.connection import find_project_root, open_db
19
+ from roam.graph.builder import build_file_graph
20
+ from roam.graph.cycles import find_cycles, find_minimum_cycle_break_edge_sets
21
+ from roam.index.relations import _extract_imported_names, _read_source_text
22
+ from roam.output.formatter import json_envelope, to_json
23
+
24
+
25
+ def _path(graph: nx.DiGraph, file_id: int) -> str:
26
+ return str(graph.nodes[file_id].get("path", file_id))
27
+
28
+
29
+ def _imported_names(
30
+ source_path: str,
31
+ project_root: str,
32
+ cache: dict[str, set[str] | None],
33
+ ) -> set[str] | None:
34
+ if source_path not in cache:
35
+ source = _read_source_text(source_path, project_root)
36
+ cache[source_path] = _extract_imported_names(source) if source is not None else None
37
+ return cache[source_path]
38
+
39
+
40
+ def _crossing_symbols(
41
+ conn: sqlite3.Connection,
42
+ source_file_id: int,
43
+ target_file_id: int,
44
+ imported_names: set[str] | None,
45
+ cache: dict[tuple[int, int], list[dict]],
46
+ ) -> list[dict]:
47
+ if imported_names is None:
48
+ return []
49
+ cache_key = (source_file_id, target_file_id)
50
+ if cache_key in cache:
51
+ return cache[cache_key]
52
+ rows = conn.execute(
53
+ "SELECT DISTINCT target.id, target.name, target.kind, edge.kind "
54
+ "FROM edges edge "
55
+ "JOIN symbols source ON source.id = edge.source_id "
56
+ "JOIN symbols target ON target.id = edge.target_id "
57
+ "WHERE source.file_id = ? AND target.file_id = ? "
58
+ "ORDER BY target.name, target.kind, target.id, edge.kind",
59
+ (source_file_id, target_file_id),
60
+ ).fetchall()
61
+
62
+ symbols: dict[int, dict] = {}
63
+ for symbol_id, name, kind, edge_kind in rows:
64
+ if name not in imported_names:
65
+ continue
66
+ symbol = symbols.setdefault(
67
+ symbol_id,
68
+ {"id": symbol_id, "name": name, "kind": kind, "relationship_kinds": []},
69
+ )
70
+ if edge_kind not in symbol["relationship_kinds"]:
71
+ symbol["relationship_kinds"].append(edge_kind)
72
+ resolved = list(symbols.values())
73
+ names = [symbol["name"] for symbol in resolved]
74
+ cache[cache_key] = resolved if len(names) == len(set(names)) else []
75
+ return cache[cache_key]
76
+
77
+
78
+ def _ordered_members(graph: nx.DiGraph, members: list[int], removed: list[tuple[int, int]]) -> list[int]:
79
+ candidate = graph.subgraph(members).copy()
80
+ candidate.remove_edges_from(removed)
81
+ return list(nx.lexicographical_topological_sort(candidate, key=lambda file_id: _path(graph, file_id)))
82
+
83
+
84
+ def _candidate_details(
85
+ conn: sqlite3.Connection,
86
+ graph: nx.DiGraph,
87
+ members: list[int],
88
+ removed: list[tuple[int, int]],
89
+ project_root: str,
90
+ imported_names_cache: dict[str, set[str] | None],
91
+ crossing_symbols_cache: dict[tuple[int, int], list[dict]],
92
+ ) -> tuple[tuple, list[int], list[dict], bool]:
93
+ ordered = _ordered_members(graph, members, removed)
94
+ edges = []
95
+ for source, target in removed:
96
+ source_path = _path(graph, source)
97
+ edges.append(
98
+ {
99
+ "source": {"id": source, "file": source_path},
100
+ "target": {"id": target, "file": _path(graph, target)},
101
+ "symbols": _crossing_symbols(
102
+ conn,
103
+ source,
104
+ target,
105
+ _imported_names(source_path, project_root, imported_names_cache),
106
+ crossing_symbols_cache,
107
+ ),
108
+ }
109
+ )
110
+
111
+ resolved = all(edge["symbols"] for edge in edges)
112
+ symbol_count = sum(len(edge["symbols"]) for edge in edges)
113
+ ordered_paths = tuple(_path(graph, file_id) for file_id in ordered)
114
+ edge_paths = tuple((edge["source"]["file"], edge["target"]["file"]) for edge in edges)
115
+ rank = (not resolved, symbol_count if resolved else 0, ordered_paths, edge_paths)
116
+ return rank, ordered, edges, resolved
117
+
118
+
119
+ def _recommendation(edge: dict, cycle_path: str) -> str:
120
+ names = [symbol["name"] for symbol in edge["symbols"]]
121
+ rendered = ", ".join(f"`{name}`" for name in names)
122
+ noun = "symbol" if len(names) == 1 else "symbols"
123
+ source = edge["source"]["file"]
124
+ target = edge["target"]["file"]
125
+ return (
126
+ f"Extract {noun} {rendered} from `{target}` into a new leaf module imported by both "
127
+ f"`{source}` and `{target}` to break `{cycle_path}`."
128
+ )
129
+
130
+
131
+ def _analyze_cycle(
132
+ conn: sqlite3.Connection,
133
+ graph: nx.DiGraph,
134
+ members: list[int],
135
+ project_root: str,
136
+ imported_names_cache: dict[str, set[str] | None],
137
+ crossing_symbols_cache: dict[tuple[int, int], list[dict]],
138
+ ) -> dict:
139
+ candidates = find_minimum_cycle_break_edge_sets(graph, members)
140
+ if not candidates:
141
+ ordered = sorted(members, key=lambda file_id: _path(graph, file_id))
142
+ return {
143
+ "members": [{"id": file_id, "file": _path(graph, file_id)} for file_id in ordered],
144
+ "closing_edges": [],
145
+ "recommendations": [],
146
+ "recommendation_state": "minimum_break_not_computed",
147
+ "recommendation_reason": "exact search is limited to SCCs with at most 14 internal edges",
148
+ }
149
+
150
+ _rank, ordered, edges, resolved = min(
151
+ (
152
+ _candidate_details(
153
+ conn,
154
+ graph,
155
+ members,
156
+ removed,
157
+ project_root,
158
+ imported_names_cache,
159
+ crossing_symbols_cache,
160
+ )
161
+ for removed in candidates
162
+ ),
163
+ key=lambda item: item[0],
164
+ )
165
+ ordered_paths = [_path(graph, file_id) for file_id in ordered]
166
+ cycle_path = " → ".join([*ordered_paths, ordered_paths[0]])
167
+ recommendations = []
168
+ if resolved:
169
+ for edge in edges:
170
+ edge["recommendation"] = _recommendation(edge, cycle_path)
171
+ recommendations.append(edge["recommendation"])
172
+
173
+ return {
174
+ "members": [{"id": file_id, "file": _path(graph, file_id)} for file_id in ordered],
175
+ "closing_edges": edges,
176
+ "recommendations": recommendations,
177
+ "recommendation_state": "resolved" if resolved else "unresolved_crossing_symbols",
178
+ }
179
+
180
+
181
+ @roam_capability(
182
+ name="cycle-break",
183
+ category="architecture",
184
+ summary="Recommend the minimum resolved extraction that breaks each file cycle",
185
+ maturity="stable",
186
+ mcp_expose=False,
187
+ side_effect=False,
188
+ task_required=False,
189
+ destructive=False,
190
+ stale_sensitive=True,
191
+ ai_safe=True,
192
+ requires_index=True,
193
+ )
194
+ @click.command(name="cycle-break")
195
+ @click.option("--json", "json_output", is_flag=True, help="Output in JSON format.")
196
+ @click.pass_context
197
+ def cycle_break(ctx, json_output):
198
+ """Recommend minimal symbol extractions that break file dependency cycles."""
199
+ json_mode = json_output or (ctx.obj.get("json") if ctx.obj else False)
200
+ token_budget = ctx.obj.get("budget", 0) if ctx.obj else 0
201
+ ensure_index()
202
+
203
+ with open_db(readonly=True) as conn:
204
+ empty = empty_corpus_state(conn)
205
+ if empty is not None:
206
+ if json_mode:
207
+ click.echo(
208
+ to_json(
209
+ json_envelope(
210
+ "cycle-break",
211
+ summary={"verdict": "no dependency graph to analyze", "cycle_count": 0, **empty},
212
+ cycles=[],
213
+ budget=token_budget,
214
+ )
215
+ )
216
+ )
217
+ return
218
+
219
+ graph = build_file_graph(conn)
220
+ raw_cycles = find_cycles(graph)
221
+ project_root = str(find_project_root())
222
+ imported_names_cache: dict[str, set[str] | None] = {}
223
+ crossing_symbols_cache: dict[tuple[int, int], list[dict]] = {}
224
+ findings = [
225
+ _analyze_cycle(
226
+ conn,
227
+ graph,
228
+ members,
229
+ project_root,
230
+ imported_names_cache,
231
+ crossing_symbols_cache,
232
+ )
233
+ for members in raw_cycles
234
+ ]
235
+ recommendation_count = sum(len(finding["recommendations"]) for finding in findings)
236
+ cycle_noun = "cycle" if len(findings) == 1 else "cycles"
237
+ recommendation_noun = "recommendation" if recommendation_count == 1 else "recommendations"
238
+ verdict = (
239
+ f"{len(findings)} file dependency {cycle_noun}; "
240
+ f"{recommendation_count} minimal extraction {recommendation_noun}"
241
+ if findings
242
+ else "No file dependency cycles"
243
+ )
244
+
245
+ if json_mode:
246
+ click.echo(
247
+ to_json(
248
+ json_envelope(
249
+ "cycle-break",
250
+ summary={
251
+ "verdict": verdict,
252
+ "cycle_count": len(findings),
253
+ "recommendation_count": recommendation_count,
254
+ "cycle_count_definition": (
255
+ "strongly-connected components (Tarjan SCC) of the indexed file dependency graph"
256
+ ),
257
+ },
258
+ cycles=findings,
259
+ budget=token_budget,
260
+ )
261
+ )
262
+ )
263
+ return
264
+
265
+ if not findings:
266
+ return
267
+ click.echo(f"VERDICT: {verdict}")
268
+ for index, finding in enumerate(findings, 1):
269
+ members = [member["file"] for member in finding["members"]]
270
+ click.echo(f"\n cycle {index}: {' → '.join([*members, members[0]])}")
271
+ for edge in finding["closing_edges"]:
272
+ click.echo(f" closing edge: {edge['source']['file']} → {edge['target']['file']}")
273
+ names = ", ".join(symbol["name"] for symbol in edge["symbols"])
274
+ if names:
275
+ click.echo(f" symbols: {names}")
276
+ for recommendation in finding["recommendations"]:
277
+ click.echo(f" recommendation: {recommendation}")
@@ -57,7 +57,7 @@ from roam.rules.dataflow import collect_dataflow_findings
57
57
  # older dead-export classifier shape (e.g. before scaffolding was
58
58
  # recognised). Bump per the rules in roam.catalog.versions when the
59
59
  # classifier or action verdict mapping changes meaningfully.
60
- DEAD_DETECTOR_VERSION: str = "1.0.0"
60
+ DEAD_DETECTOR_VERSION: str = "1.1.0"
61
61
 
62
62
 
63
63
  def _dead_finding_id(symbol_id: int, file_path: str, kind: str) -> str:
@@ -480,7 +480,7 @@ def _scaffolding_signals(docstring: str | None) -> dict | None:
480
480
  }
481
481
 
482
482
 
483
- def _dead_action(r, file_imported, tested=False):
483
+ def _dead_action(r, file_imported, tested=False, external_facing=False):
484
484
  """Compute actionable verdict and confidence % for a dead symbol.
485
485
 
486
486
  Uses tiered confidence scoring (inspired by Vulture and Meta's dead
@@ -536,6 +536,12 @@ def _dead_action(r, file_imported, tested=False):
536
536
  if tested:
537
537
  return "REVIEW", 70
538
538
 
539
+ # Explicit package surfaces have legitimate consumers outside the
540
+ # indexed repository. Internal call-graph silence alone cannot make
541
+ # these symbols safe to delete.
542
+ if external_facing:
543
+ return "REVIEW", 70
544
+
539
545
  # CLI command functions — loaded dynamically via LazyGroup/importlib
540
546
  if base.startswith("cmd_") and kind == "function":
541
547
  return "INTENTIONAL", 20
@@ -1052,6 +1058,12 @@ def _dead_reason(r, consumer_meta, file_import_meta, sibling_meta):
1052
1058
  fmeta = file_import_meta.get(r["file_id"], {})
1053
1059
  smeta = sibling_meta.get(r["file_id"], {})
1054
1060
  test_consumers = cmeta.get("test_consumers", 0)
1061
+ public_surface_reason = cmeta.get("public_surface_reason")
1062
+ if public_surface_reason:
1063
+ test_clause = f"; used by {test_consumers} test consumer(s)" if test_consumers else ""
1064
+ return (
1065
+ f"external-facing public surface ({public_surface_reason}); no internal production consumers{test_clause}"
1066
+ )
1055
1067
  if test_consumers:
1056
1068
  return f"no production consumers; used by {test_consumers} test consumer(s)"
1057
1069
 
@@ -1164,6 +1176,10 @@ def _analyze_dead(conn):
1164
1176
  return [], [], set(), {}, {}, {}
1165
1177
 
1166
1178
  consumer_meta = _dead_consumer_meta(conn, [r["id"] for r in rows])
1179
+ from roam.commands.dead_public_surface import public_surface_reasons
1180
+
1181
+ for symbol_id, reason in public_surface_reasons(rows, find_project_root()).items():
1182
+ consumer_meta[symbol_id]["public_surface_reason"] = reason
1167
1183
  rows = [r for r in rows if consumer_meta.get(r["id"], {}).get("production_consumers", 0) == 0]
1168
1184
  if not rows:
1169
1185
  return [], [], set(), consumer_meta, {}, {}
@@ -2439,6 +2455,7 @@ def dead(
2439
2455
  r,
2440
2456
  r["file_id"] in imported_files,
2441
2457
  consumer_meta.get(r["id"], {}).get("test_consumers", 0) > 0,
2458
+ bool(consumer_meta.get(r["id"], {}).get("public_surface_reason")),
2442
2459
  ),
2443
2460
  )
2444
2461
  for r in all_items
@@ -2632,6 +2649,7 @@ def dead(
2632
2649
  r,
2633
2650
  r["file_id"] in imported_files,
2634
2651
  consumer_meta.get(r["id"], {}).get("test_consumers", 0) > 0,
2652
+ bool(consumer_meta.get(r["id"], {}).get("public_surface_reason")),
2635
2653
  )[0]
2636
2654
  for r in items
2637
2655
  ]
@@ -2658,7 +2676,7 @@ def dead(
2658
2676
  fmeta = file_import_meta.get(r["file_id"], {})
2659
2677
  smeta = sibling_meta.get(r["file_id"], {})
2660
2678
  tested = cmeta.get("test_consumers", 0) > 0
2661
- action, confidence = _dead_action(r, file_imported, tested)
2679
+ action, confidence = _dead_action(r, file_imported, tested, bool(cmeta.get("public_surface_reason")))
2662
2680
  scaffolding_evidence = _scaffolding_signals(r["docstring"] if "docstring" in r.keys() else None)
2663
2681
  d = {
2664
2682
  "name": r["name"],
@@ -2943,7 +2961,12 @@ def dead(
2943
2961
  click.echo("Top dead symbols (high confidence):")
2944
2962
  for r in high[:5]:
2945
2963
  tested = consumer_meta.get(r["id"], {}).get("test_consumers", 0) > 0
2946
- action, confidence = _dead_action(r, True, tested)
2964
+ action, confidence = _dead_action(
2965
+ r,
2966
+ True,
2967
+ tested,
2968
+ bool(consumer_meta.get(r["id"], {}).get("public_surface_reason")),
2969
+ )
2947
2970
  click.echo(
2948
2971
  f" {action} {confidence}% {r['name']} {abbrev_kind(r['kind'])} {loc(r['file_path'], r['line_start'])}"
2949
2972
  )
@@ -3072,7 +3095,12 @@ def dead(
3072
3095
  table_rows = []
3073
3096
  for r in high:
3074
3097
  tested = consumer_meta.get(r["id"], {}).get("test_consumers", 0) > 0
3075
- action, confidence = _dead_action(r, True, tested)
3098
+ action, confidence = _dead_action(
3099
+ r,
3100
+ True,
3101
+ tested,
3102
+ bool(consumer_meta.get(r["id"], {}).get("public_surface_reason")),
3103
+ )
3076
3104
  row = [
3077
3105
  f"{action} {confidence}%",
3078
3106
  r["name"],
@@ -3125,7 +3153,12 @@ def dead(
3125
3153
  table_rows = []
3126
3154
  for r in low:
3127
3155
  tested = consumer_meta.get(r["id"], {}).get("test_consumers", 0) > 0
3128
- action, confidence = _dead_action(r, False, tested)
3156
+ action, confidence = _dead_action(
3157
+ r,
3158
+ False,
3159
+ tested,
3160
+ bool(consumer_meta.get(r["id"], {}).get("public_surface_reason")),
3161
+ )
3129
3162
  row = [
3130
3163
  f"{action} {confidence}%",
3131
3164
  r["name"],