sidegraph 0.12.0__tar.gz → 0.14.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 (554) hide show
  1. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/workflows/ci.yml +8 -1
  2. sidegraph-0.14.0/.opencode/INSTALL.md +67 -0
  3. {sidegraph-0.12.0 → sidegraph-0.14.0}/AGENTS.md +1 -1
  4. {sidegraph-0.12.0 → sidegraph-0.14.0}/CHANGELOG.md +161 -0
  5. {sidegraph-0.12.0 → sidegraph-0.14.0}/CLAUDE.md +3 -2
  6. sidegraph-0.14.0/PKG-INFO +413 -0
  7. sidegraph-0.14.0/README.md +383 -0
  8. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/README.md +5 -2
  9. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/anchoring.md +12 -3
  10. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/data-model.md +7 -6
  11. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/decision-memory.md +1 -1
  12. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/mind-model.md +11 -1
  13. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/retrieval.md +4 -1
  14. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/bootstrap.md +9 -5
  15. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/claude-code-setup.md +33 -6
  16. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/codex-setup.md +31 -14
  17. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/installation.md +75 -50
  18. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/quickstart.md +49 -15
  19. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/capturing-decisions.md +6 -3
  20. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/ci-cd-maintenance.md +6 -2
  21. sidegraph-0.14.0/docs/guides/migrating-to-0.14.md +289 -0
  22. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/naming-your-domains.md +6 -0
  23. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/retrieval-in-sessions.md +1 -1
  24. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/semantic-docs.md +13 -5
  25. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/surviving-refactors.md +16 -7
  26. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/troubleshooting.md +62 -28
  27. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/verifying-your-setup.md +3 -1
  28. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/integrations/claude-code.md +37 -16
  29. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/integrations/codex.md +84 -81
  30. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/integrations/graphify.md +22 -11
  31. sidegraph-0.14.0/docs/integrations/muse.md +48 -0
  32. sidegraph-0.14.0/docs/integrations/opencode.md +12 -0
  33. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/llms.txt +4 -0
  34. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/cli.md +160 -43
  35. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/configuration.md +24 -3
  36. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/git-bindings.md +4 -2
  37. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/hooks.md +70 -23
  38. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/mcp-tools.md +61 -34
  39. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/releasing.md +16 -3
  40. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/stability.md +3 -3
  41. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/store-format.md +105 -16
  42. sidegraph-0.14.0/index.js +63 -0
  43. sidegraph-0.14.0/package.json +6 -0
  44. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/.claude-plugin/plugin.json +1 -1
  45. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/.codex-plugin/plugin.json +1 -1
  46. sidegraph-0.14.0/plugin/sidegraph/.mcp.json +17 -0
  47. sidegraph-0.14.0/plugin/sidegraph/.muse-plugin/plugin.json +77 -0
  48. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/codex/hooks.json +6 -3
  49. sidegraph-0.14.0/plugin/sidegraph/codex/mcp.json +15 -0
  50. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/heal-anchors/SKILL.md +31 -20
  51. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/import-adrs/SKILL.md +3 -2
  52. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/manage-domains/SKILL.md +33 -7
  53. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/name-domains/SKILL.md +6 -3
  54. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-decision/SKILL.md +8 -4
  55. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-fact/SKILL.md +3 -2
  56. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/setup/SKILL.md +28 -17
  57. {sidegraph-0.12.0 → sidegraph-0.14.0}/pyproject.toml +2 -1
  58. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/__init__.py +1 -1
  59. sidegraph-0.14.0/src/sidegraph/anchoring.py +411 -0
  60. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/apply.py +2 -2
  61. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/cli.py +7 -5
  62. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/model.py +2 -1
  63. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/planner.py +1 -1
  64. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/capture.py +44 -15
  65. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/cli.py +440 -26
  66. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/config.py +27 -2
  67. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/doc_import.py +2 -2
  68. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/doctor.py +221 -57
  69. sidegraph-0.14.0/src/sidegraph/domain_snapshot.py +494 -0
  70. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/domains.py +15 -2
  71. sidegraph-0.14.0/src/sidegraph/engine/rationale.py +51 -0
  72. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/engine/reader.py +423 -49
  73. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/githooks.py +53 -3
  74. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/gitio.py +30 -7
  75. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/hooks.py +45 -12
  76. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/mcp_entry.py +56 -1
  77. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/hot_index.py +23 -7
  78. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/importer.py +53 -16
  79. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/integrity.py +148 -10
  80. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/retrieval.py +149 -66
  81. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/schema.py +31 -2
  82. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/seed_ladder.py +8 -5
  83. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/server.py +165 -45
  84. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/stats/model.py +5 -1
  85. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/stats/render.py +4 -3
  86. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/store.py +479 -102
  87. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/store_layout.py +271 -1
  88. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/sync.py +696 -116
  89. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/verify.py +104 -16
  90. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/openspec/_provenance.json +1 -1
  91. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/openspec/graph.json +2396 -457
  92. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/_provenance.json +1 -1
  93. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +8 -8
  94. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/graph.json +293 -113
  95. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/githooks_support.py +2 -0
  96. sidegraph-0.14.0/tests/graph_fixtures.py +53 -0
  97. sidegraph-0.14.0/tests/opencode_plugin_runner.mjs +71 -0
  98. sidegraph-0.14.0/tests/snapshot_support.py +205 -0
  99. sidegraph-0.14.0/tests/test_anchor_descriptor.py +199 -0
  100. sidegraph-0.14.0/tests/test_anchor_paths.py +264 -0
  101. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_anchoring.py +1 -1
  102. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_anchoring_mapping_refresh.py +1 -1
  103. sidegraph-0.14.0/tests/test_anchoring_membership.py +372 -0
  104. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_apply.py +9 -0
  105. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_cli.py +3 -2
  106. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_unanchored.py +6 -5
  107. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_doctor.py +41 -0
  108. sidegraph-0.14.0/tests/test_cli_domains_snapshot.py +379 -0
  109. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_import.py +1 -1
  110. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_init.py +69 -1
  111. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_stats.py +23 -0
  112. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_sync_check.py +1 -0
  113. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_codex_plugin.py +26 -9
  114. sidegraph-0.14.0/tests/test_command_windows.py +454 -0
  115. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_community_baseline.py +1 -1
  116. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_config_ancestor_lookup.py +5 -5
  117. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_corpus_self_corpus.py +9 -0
  118. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_docs_claims.py +225 -5
  119. sidegraph-0.14.0/tests/test_doctor_code_drift.py +648 -0
  120. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_duplicate_entity.py +54 -1
  121. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_integrity.py +2 -1
  122. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_scan.py +14 -6
  123. sidegraph-0.14.0/tests/test_domain_seed_names.py +38 -0
  124. sidegraph-0.14.0/tests/test_domain_snapshot_format.py +243 -0
  125. sidegraph-0.14.0/tests/test_domain_snapshot_notices.py +92 -0
  126. sidegraph-0.14.0/tests/test_engine_build.py +164 -0
  127. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_bindings_blame.py +26 -0
  128. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_bindings_hook.py +22 -0
  129. sidegraph-0.14.0/tests/test_git_output_utf8.py +222 -0
  130. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_githooks.py +18 -0
  131. sidegraph-0.14.0/tests/test_graphify_pin.py +60 -0
  132. sidegraph-0.14.0/tests/test_hook_payload_encoding.py +102 -0
  133. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_borrowed_graph.py +2 -1
  134. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_drift_nudge.py +29 -12
  135. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_integrity.py +32 -4
  136. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_pretool.py +3 -0
  137. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_pretool_records.py +3 -1
  138. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_session_key.py +6 -0
  139. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_session_start.py +53 -4
  140. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_session_start_concurrent.py +3 -0
  141. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_stop.py +124 -34
  142. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_subagent_start.py +5 -0
  143. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_subdirectory_launch.py +3 -0
  144. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_wiring_checks.py +5 -1
  145. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hot_index.py +251 -1
  146. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_import_dry_run_preview.py +1 -1
  147. sidegraph-0.14.0/tests/test_importer.py +1180 -0
  148. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_installed_wheel_smoke.py +2 -0
  149. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_integrity.py +23 -8
  150. sidegraph-0.14.0/tests/test_integrity_engine_version.py +180 -0
  151. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_integrity_refresh_hook.py +245 -0
  152. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_integrity_replay.py +2 -1
  153. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_integrity_stranded.py +9 -0
  154. sidegraph-0.14.0/tests/test_mcp_entry_ratify_policy.py +282 -0
  155. sidegraph-0.14.0/tests/test_mcp_entry_repo_root.py +148 -0
  156. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_member_anchor_wiring.py +1 -1
  157. sidegraph-0.14.0/tests/test_muse_plugin.py +60 -0
  158. sidegraph-0.14.0/tests/test_opencode_plugin.py +213 -0
  159. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_pathless_descriptor_adoption.py +2 -2
  160. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_public_hook_launch.py +63 -0
  161. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_ratify_policy.py +1 -1
  162. sidegraph-0.14.0/tests/test_rationale_compatibility.py +156 -0
  163. sidegraph-0.14.0/tests/test_reader_community_labels.py +174 -0
  164. sidegraph-0.14.0/tests/test_reader_engine_version.py +160 -0
  165. sidegraph-0.14.0/tests/test_reader_file_labels.py +189 -0
  166. sidegraph-0.14.0/tests/test_reader_label_conventions.py +24 -0
  167. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_member_name_lookup.py +4 -4
  168. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_member_names.py +5 -3
  169. sidegraph-0.14.0/tests/test_reader_stub_collapse.py +451 -0
  170. sidegraph-0.14.0/tests/test_reader_type_split.py +95 -0
  171. sidegraph-0.14.0/tests/test_rebuild_instruction.py +134 -0
  172. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_context.py +17 -7
  173. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_drilldown.py +28 -11
  174. sidegraph-0.14.0/tests/test_retrieval_membership_generations.py +81 -0
  175. sidegraph-0.14.0/tests/test_retrieval_membership_index.py +151 -0
  176. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_toc.py +1 -0
  177. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_add_anchors.py +1 -1
  178. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_borrowed_graph.py +8 -5
  179. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_drilldown.py +1 -0
  180. sidegraph-0.14.0/tests/test_server_get_store.py +178 -0
  181. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_graph_freshness.py +5 -2
  182. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_mcp_smoke.py +100 -0
  183. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_refresh.py +27 -0
  184. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_tolerant_seeds.py +2 -1
  185. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_session_attribution.py +13 -0
  186. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stop_rearm.py +1 -0
  187. sidegraph-0.14.0/tests/test_store_domain_members.py +207 -0
  188. sidegraph-0.14.0/tests/test_store_file_anchor_names.py +226 -0
  189. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_mutation_guard.py +22 -0
  190. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_persistence.py +40 -55
  191. sidegraph-0.14.0/tests/test_store_requirement.py +608 -0
  192. sidegraph-0.14.0/tests/test_store_snapshot_wiring.py +107 -0
  193. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_symlinks.py +7 -1
  194. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_subagent_start_manifests.py +6 -0
  195. sidegraph-0.14.0/tests/test_subprocess_text_encoding.py +111 -0
  196. sidegraph-0.14.0/tests/test_sync_membership.py +779 -0
  197. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_rebind.py +4 -4
  198. sidegraph-0.14.0/tests/test_sync_snapshot_membership.py +487 -0
  199. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_wiring.py +1 -0
  200. sidegraph-0.14.0/tests/test_verify_domain_snapshot.py +100 -0
  201. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_git_stdin.py +2 -1
  202. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_snapshot.py +59 -0
  203. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/wheel_smoke.py +17 -1
  204. {sidegraph-0.12.0 → sidegraph-0.14.0}/uv.lock +1 -1
  205. sidegraph-0.12.0/PKG-INFO +0 -262
  206. sidegraph-0.12.0/README.md +0 -232
  207. sidegraph-0.12.0/plugin/sidegraph/.mcp.json +0 -16
  208. sidegraph-0.12.0/plugin/sidegraph/codex/mcp.json +0 -9
  209. sidegraph-0.12.0/src/sidegraph/anchoring.py +0 -229
  210. sidegraph-0.12.0/tests/test_doctor_code_drift.py +0 -323
  211. sidegraph-0.12.0/tests/test_importer.py +0 -573
  212. sidegraph-0.12.0/tests/test_reader_community_labels.py +0 -82
  213. sidegraph-0.12.0/tests/test_server_get_store.py +0 -62
  214. {sidegraph-0.12.0 → sidegraph-0.14.0}/.agents/plugins/marketplace.json +0 -0
  215. {sidegraph-0.12.0 → sidegraph-0.14.0}/.claude-plugin/marketplace.json +0 -0
  216. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/CODEOWNERS +0 -0
  217. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  218. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  219. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  220. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  221. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/secret_scanning.yml +0 -0
  222. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/workflows/publish.yml +0 -0
  223. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/workflows/scorecard.yml +0 -0
  224. {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/workflows/session-link-gate.yml +0 -0
  225. {sidegraph-0.12.0 → sidegraph-0.14.0}/.gitignore +0 -0
  226. {sidegraph-0.12.0 → sidegraph-0.14.0}/.gitleaks.toml +0 -0
  227. {sidegraph-0.12.0 → sidegraph-0.14.0}/.pre-commit-config.yaml +0 -0
  228. {sidegraph-0.12.0 → sidegraph-0.14.0}/.python-version +0 -0
  229. {sidegraph-0.12.0 → sidegraph-0.14.0}/CODE_OF_CONDUCT.md +0 -0
  230. {sidegraph-0.12.0 → sidegraph-0.14.0}/CONTRIBUTING.md +0 -0
  231. {sidegraph-0.12.0 → sidegraph-0.14.0}/LICENSE +0 -0
  232. {sidegraph-0.12.0 → sidegraph-0.14.0}/SECURITY.md +0 -0
  233. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/team-workflow.md +0 -0
  234. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/README.md +0 -0
  235. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/corpus_fit.py +0 -0
  236. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/judge-prompt.md +0 -0
  237. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/questions-prompt.md +0 -0
  238. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/rubric-template.md +0 -0
  239. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/operations.md +0 -0
  240. {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/whitepaper/index.md +0 -0
  241. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/hooks/hooks.json +0 -0
  242. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
  243. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
  244. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/explain-why/SKILL.md +0 -0
  245. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
  246. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
  247. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/import-adrs/agents/openai.yaml +0 -0
  248. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/manage-domains/agents/openai.yaml +0 -0
  249. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/name-domains/agents/openai.yaml +0 -0
  250. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +0 -0
  251. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
  252. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
  253. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
  254. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/setup/agents/openai.yaml +0 -0
  255. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
  256. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/stats/agents/openai.yaml +0 -0
  257. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/triage-drift/SKILL.md +0 -0
  258. {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
  259. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bash_paths.py +0 -0
  260. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/__init__.py +0 -0
  261. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/catalog.py +0 -0
  262. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/integrations.py +0 -0
  263. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/proof.py +0 -0
  264. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/review.py +0 -0
  265. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/scan.py +0 -0
  266. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/engine/__init__.py +0 -0
  267. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/freshness.py +0 -0
  268. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/gitenv.py +0 -0
  269. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/__init__.py +0 -0
  270. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/claude_settings.py +0 -0
  271. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/launch.py +0 -0
  272. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/session_identity.py +0 -0
  273. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/subagent.py +0 -0
  274. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/input_limits.py +0 -0
  275. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/nearest_anchored.py +0 -0
  276. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/okf.py +0 -0
  277. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/profiles.py +0 -0
  278. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/redaction_scan.py +0 -0
  279. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/redaction_tokens.py +0 -0
  280. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/stats/__init__.py +0 -0
  281. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/text_paths.py +0 -0
  282. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/tool_rate_limit.py +0 -0
  283. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/validation_errors.py +0 -0
  284. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/__init__.py +0 -0
  285. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
  286. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/model.py +0 -0
  287. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/render.py +0 -0
  288. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/template.html +0 -0
  289. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/worktree_seeds.py +0 -0
  290. {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/write_boundary.py +0 -0
  291. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/__init__.py +0 -0
  292. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/conftest.py +0 -0
  293. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
  294. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bitfinex_slice.json +0 -0
  295. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
  296. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
  297. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
  298. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
  299. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
  300. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/graph.json +0 -0
  301. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
  302. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
  303. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
  304. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
  305. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
  306. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
  307. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
  308. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
  309. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/.memlog.md +0 -0
  310. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/ARCHITECTURE-SPINE.md +0 -0
  311. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/prds/prd-payments-2026-07-30/prd.md +0 -0
  312. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
  313. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/sad.md +0 -0
  314. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
  315. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
  316. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
  317. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-empty.md +0 -0
  318. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
  319. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
  320. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design.md +0 -0
  321. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
  322. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/proposal.md +0 -0
  323. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
  324. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
  325. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
  326. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
  327. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/design.md +0 -0
  328. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/proposal.md +0 -0
  329. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
  330. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
  331. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/plan.md +0 -0
  332. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
  333. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
  334. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
  335. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
  336. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/member_names_python_graph.json +0 -0
  337. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/member_names_swift_graph.json +0 -0
  338. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/mini_graph.json +0 -0
  339. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_agent_brief_manifests.py +0 -0
  340. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bash_paths.py +0 -0
  341. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_batch_panel_fixes.py +0 -0
  342. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_catalog.py +0 -0
  343. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
  344. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_integrations.py +0 -0
  345. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_model.py +0 -0
  346. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_planner.py +0 -0
  347. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_proof.py +0 -0
  348. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_review.py +0 -0
  349. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_scan.py +0 -0
  350. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_scan_regular.py +0 -0
  351. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bounded_listings.py +0 -0
  352. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_auto_accept.py +0 -0
  353. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_facts.py +0 -0
  354. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_initiative.py +0 -0
  355. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_integration.py +0 -0
  356. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_neighbors.py +0 -0
  357. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_propose.py +0 -0
  358. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_redact.py +0 -0
  359. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_compact.py +0 -0
  360. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_domains.py +0 -0
  361. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_graph_paths.py +0 -0
  362. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_init_hooks.py +0 -0
  363. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_okf.py +0 -0
  364. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_ratify.py +0 -0
  365. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_ratify_facts.py +0 -0
  366. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_sync.py +0 -0
  367. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_unreadable_paths.py +0 -0
  368. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_viz.py +0 -0
  369. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_config.py +0 -0
  370. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_config_borrowed_graph.py +0 -0
  371. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_corpus_expected_renders.py +0 -0
  372. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_coverage_telemetry_e2e.py +0 -0
  373. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_digest_integrity.py +0 -0
  374. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doc_corpus_integration.py +0 -0
  375. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doc_import.py +0 -0
  376. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor.py +0 -0
  377. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_auto_share.py +0 -0
  378. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_dangling_supports.py +0 -0
  379. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_graph_root_mismatch.py +0 -0
  380. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_graph_stale.py +0 -0
  381. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_never_surfaced.py +0 -0
  382. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_stale_instructions.py +0 -0
  383. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_unhashable_payload.py +0 -0
  384. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_unratified_accept.py +0 -0
  385. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_domains.py +0 -0
  386. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_entity_duplicate_resolution.py +0 -0
  387. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_entity_get_or_create_race.py +0 -0
  388. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_entry_point_arguments.py +0 -0
  389. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_env_isolation.py +0 -0
  390. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_fact_reachability_gate.py +0 -0
  391. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_flow_profile.py +0 -0
  392. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_bindings_provenance.py +0 -0
  393. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_config_isolation.py +0 -0
  394. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_env.py +0 -0
  395. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_graph_freshness.py +0 -0
  396. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hook_showings.py +0 -0
  397. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hook_spawn_guard.py +0 -0
  398. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_agent_brief.py +0 -0
  399. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_agent_state.py +0 -0
  400. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_claude_settings.py +0 -0
  401. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_launch.py +0 -0
  402. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_touch_events.py +0 -0
  403. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hot_index_hook.py +0 -0
  404. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hot_path_imports.py +0 -0
  405. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_index_journal_mode.py +0 -0
  406. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_lazy_root.py +0 -0
  407. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_mind_model_additive_fields.py +0 -0
  408. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_nearest_anchored.py +0 -0
  409. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_okf.py +0 -0
  410. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_openspec_profile.py +0 -0
  411. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_pilot_kit_corpus_fit.py +0 -0
  412. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_portable_json.py +0 -0
  413. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_proposal_lifecycle.py +0 -0
  414. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_ratify_listing_gone_dark.py +0 -0
  415. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_doc_nodes.py +0 -0
  416. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_graph.py +0 -0
  417. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_integration.py +0 -0
  418. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_nodes_in_file.py +0 -0
  419. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_perf.py +0 -0
  420. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_rationale.py +0 -0
  421. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_read.py +0 -0
  422. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_resolve.py +0 -0
  423. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_subdir_mismatch.py +0 -0
  424. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_version.py +0 -0
  425. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_redaction_scan.py +0 -0
  426. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_redaction_seeded.py +0 -0
  427. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_redaction_tokens.py +0 -0
  428. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_repo_relative_paths_portable.py +0 -0
  429. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_repoint_integration.py +0 -0
  430. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_budget_counters.py +0 -0
  431. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_drift_marker.py +0 -0
  432. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_facts.py +0 -0
  433. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_guessed.py +0 -0
  434. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_ids.py +0 -0
  435. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_integration.py +0 -0
  436. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_rank.py +0 -0
  437. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_seeds.py +0 -0
  438. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_shown_ids.py +0 -0
  439. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_terminal_evidence.py +0 -0
  440. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_thin_tools.py +0 -0
  441. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_toptier.py +0 -0
  442. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_unratified.py +0 -0
  443. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sandbox_hygiene.py +0 -0
  444. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_schema_descriptor.py +0 -0
  445. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_schema_domain.py +0 -0
  446. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_schema_fact.py +0 -0
  447. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_secret_scan_gate.py +0 -0
  448. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_binary_limits.py +0 -0
  449. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_capture_diagnostics.py +0 -0
  450. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_capture_limits.py +0 -0
  451. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_cli_diagnostics.py +0 -0
  452. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_doc_limits.py +0 -0
  453. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_input_limits.py +0 -0
  454. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_mcp_write_diagnostics.py +0 -0
  455. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_numeric_enums.py +0 -0
  456. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_python_shapes.py +0 -0
  457. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_redaction_cursor.py +0 -0
  458. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_redaction_scaling.py +0 -0
  459. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_validation_errors.py +0 -0
  460. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_write_boundary.py +0 -0
  461. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_seed_ladder.py +0 -0
  462. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_seed_paths_portable.py +0 -0
  463. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_anchoring.py +0 -0
  464. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_annotations.py +0 -0
  465. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_argument_names.py +0 -0
  466. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_capture.py +0 -0
  467. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_commit_hint.py +0 -0
  468. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_coverage_events.py +0 -0
  469. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_decision_listing.py +0 -0
  470. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_domains.py +0 -0
  471. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_facts.py +0 -0
  472. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_find_entity.py +0 -0
  473. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_get_task_context.py +0 -0
  474. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_graph_path.py +0 -0
  475. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_import.py +0 -0
  476. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_invocation_policy.py +0 -0
  477. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_nearest_anchored.py +0 -0
  478. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_prewrite_anchor_validation.py +0 -0
  479. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_ratify_facts.py +0 -0
  480. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_record_types.py +0 -0
  481. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_redaction.py +0 -0
  482. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_render_events.py +0 -0
  483. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_result_contract.py +0 -0
  484. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_supersede.py +0 -0
  485. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_sync_anchors.py +0 -0
  486. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_telemetry.py +0 -0
  487. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_thin_tools.py +0 -0
  488. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_verify.py +0 -0
  489. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_skill_frontmatter.py +0 -0
  490. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_graph.py +0 -0
  491. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_health.py +0 -0
  492. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_model.py +0 -0
  493. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_render.py +0 -0
  494. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_skill.py +0 -0
  495. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_snapshot.py +0 -0
  496. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stop_hot_path.py +0 -0
  497. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store.py +0 -0
  498. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_agent_state.py +0 -0
  499. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_atomic_write_tmp_names.py +0 -0
  500. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_bad_file.py +0 -0
  501. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_binding_index.py +0 -0
  502. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_canonical_stat.py +0 -0
  503. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_compact.py +0 -0
  504. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_compact_review.py +0 -0
  505. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_concurrent_open.py +0 -0
  506. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_coverage_telemetry.py +0 -0
  507. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_cross_process_mutations.py +0 -0
  508. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_derived_community.py +0 -0
  509. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_domains.py +0 -0
  510. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_entities.py +0 -0
  511. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_fact_cascade.py +0 -0
  512. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_facts.py +0 -0
  513. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_git_root_symlink.py +0 -0
  514. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_meta.py +0 -0
  515. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_migration.py +0 -0
  516. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_mutation_immediate.py +0 -0
  517. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_non_file_entries.py +0 -0
  518. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_opens_with_merged_duplicate.py +0 -0
  519. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_ratification.py +0 -0
  520. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_rebuild_atomicity.py +0 -0
  521. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_record_identity.py +0 -0
  522. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_record_types.py +0 -0
  523. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_render_events.py +0 -0
  524. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_retrieval.py +0 -0
  525. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_slug_conflicts.py +0 -0
  526. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_stamping_marker.py +0 -0
  527. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_telemetry.py +0 -0
  528. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_threading.py +0 -0
  529. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_tmp_sweep_age.py +0 -0
  530. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_update_meta_if.py +0 -0
  531. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_canonical_writes.py +0 -0
  532. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_clean.py +0 -0
  533. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_domains.py +0 -0
  534. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_drift_cache.py +0 -0
  535. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_fresh_clone.py +0 -0
  536. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_integration.py +0 -0
  537. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_moved_adoption.py +0 -0
  538. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_repoint.py +0 -0
  539. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_report_has_findings.py +0 -0
  540. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_run.py +0 -0
  541. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_toc_cache.py +0 -0
  542. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_volatile_heal.py +0 -0
  543. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_telemetry_retention.py +0 -0
  544. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_text_paths.py +0 -0
  545. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_git_framing.py +0 -0
  546. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_git_revisions.py +0 -0
  547. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_transitions.py +0 -0
  548. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_viz_asset_packaged.py +0 -0
  549. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_viz_model.py +0 -0
  550. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_viz_render_html.py +0 -0
  551. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_viz_render_json.py +0 -0
  552. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_worktree_seeds.py +0 -0
  553. {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/wheel_server_trace.py +0 -0
  554. {sidegraph-0.12.0 → sidegraph-0.14.0}/tools/check_no_session_links.py +0 -0
@@ -192,6 +192,9 @@ jobs:
192
192
  tests/test_server_result_contract.py tests/test_server_invocation_policy.py `
193
193
  tests/test_verify_git_stdin.py tests/test_seed_paths_portable.py `
194
194
  tests/test_repo_relative_paths_portable.py `
195
+ tests/test_command_windows.py `
196
+ tests/test_hook_payload_encoding.py `
197
+ tests/test_git_output_utf8.py `
195
198
  $privateTests `
196
199
  tests/test_installed_wheel_smoke.py
197
200
  if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
@@ -326,11 +329,15 @@ jobs:
326
329
  cache-dependency-glob: "uv.lock"
327
330
 
328
331
  - name: Rebuild graph and run sidegraph-sync --check
332
+ env:
333
+ GRAPHIFY_NO_AUTO_REFRESH: "1"
334
+ PYTHONHASHSEED: "0"
335
+ GRAPHIFY_MAX_WORKERS: "1"
329
336
  run: |
330
337
  if [ ! -d .sidegraph ]; then
331
338
  echo "no .sidegraph in this checkout — anchor health not applicable"
332
339
  exit 0
333
340
  fi
334
- uvx --from graphifyy==0.9.6 graphify update .
341
+ uvx --from graphifyy==0.9.90 graphify update .
335
342
  uv sync --locked
336
343
  uv run sidegraph-sync --json --check
@@ -0,0 +1,67 @@
1
+ # Install Sidegraph in OpenCode V2
2
+
3
+ Requires OpenCode V2, `uv` and Git on PATH. The current native integration baseline is
4
+ OpenCode 2.0.29. Sidegraph provides MCP tools and shared skills; lifecycle hooks are not
5
+ included. Ask for context and capture decisions explicitly through the tools.
6
+
7
+ Install the Git package with OpenCode's native command:
8
+
9
+ ```bash
10
+ opencode plugin add 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
11
+ ```
12
+
13
+ Start a new OpenCode session in your project. Follow `@sidegraph-setup` to prepare its
14
+ graph and store, then call `list_domains()` to check MCP access. Use
15
+ `get_task_context(files=[...])` before working on files and `propose_decisions` to capture
16
+ durable findings. Other shared skills use `@sidegraph-<skill>` (for example,
17
+ `@sidegraph-check-plan`). There is no automatic SessionStart map or Stop nudge.
18
+
19
+ The equivalent `opencode.json` entry is:
20
+
21
+ ```json
22
+ {
23
+ "$schema": "https://opencode.ai/config.json",
24
+ "plugins": ["git+https://github.com/SantyagoSeaman/sidegraph.git#main"]
25
+ }
26
+ ```
27
+
28
+ Merge that entry with any existing plugin list. The plugin supplies one `sidegraph` MCP
29
+ server only when that name has no explicit configuration. An existing entry, including
30
+ `disabled: true`, stays unchanged. OpenCode V2 stores overrides under `mcp.servers`:
31
+
32
+ ```json
33
+ {
34
+ "mcp": {
35
+ "servers": {
36
+ "sidegraph": {
37
+ "type": "local",
38
+ "command": [
39
+ "uvx",
40
+ "--from",
41
+ "git+https://github.com/SantyagoSeaman/sidegraph.git@main",
42
+ "sidegraph-mcp",
43
+ "--repo-root"
44
+ ],
45
+ "environment": {
46
+ "SIDEGRAPH_DIR": ".sidegraph",
47
+ "SIDEGRAPH_GRAPH": "graphify-out/graph.json"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ ```
54
+
55
+ Use this override only when you want to manage the server yourself. Keep OpenCode's normal
56
+ MCP and skill permissions; no additional Sidegraph plugin-approval command is required.
57
+
58
+ Check and apply package updates, then restart OpenCode:
59
+
60
+ ```bash
61
+ opencode plugin check 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
62
+ opencode plugin update 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
63
+ ```
64
+
65
+ The Git package target `#main` follows public releases. The MCP runtime uses its configured
66
+ Git ref (normally `@main`); this host has no SessionStart version pin. Updating cached
67
+ plugin files and resolving the MCP runtime are separate operations.
@@ -76,4 +76,4 @@ Rules:
76
76
  - Dirty graphify-out/ files are expected after hooks or incremental updates; dirty graph files are not a reason to skip graphify. Only skip graphify if the task is about stale or incorrect graph output, or the user explicitly says not to use it.
77
77
  - If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing.
78
78
  - Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context.
79
- - After modifying code, run `graphify update .` to keep the graph current (AST-only, no API cost).
79
+ - After modifying code, run `graphify update .` with the environment variable `GRAPHIFY_NO_AUTO_REFRESH=1` set to keep the graph current (AST-only, no API cost).
@@ -7,6 +7,167 @@ interfaces, exactly, and what each one promises: [`docs/reference/stability.md`]
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.14.0] — 2026-10-16
11
+
12
+ ### Graphify 0.9.90
13
+
14
+ Migration steps: [migrate to Sidegraph 0.14](docs/guides/migrating-to-0.14.md).
15
+
16
+ - Anchors to files with the same basename keep resolving after the engine upgrade.
17
+ - External names resolve when Graphify emits several identical stub nodes.
18
+ - Re-importing rationale does not duplicate compatible labels shortened by a newer engine.
19
+ - `sidegraph-domains snapshot` preserves domain membership across engine regrouping.
20
+ - A store can require a minimum Sidegraph version before clients read or write it.
21
+ - Graphify leaves installed agent skills alone when Sidegraph runs it.
22
+
23
+ ### Changed
24
+
25
+ - OpenCode V2 can install Sidegraph as a native Git package with shared skills and MCP
26
+ tools. Existing skill IDs and explicit MCP server settings take precedence. See the
27
+ [OpenCode installation guide](.opencode/INSTALL.md).
28
+ - Muse has an experimental native plugin with shared skills and MCP tools. Launch Muse
29
+ from the intended project directory; lifecycle hooks are deferred. See the
30
+ [Muse installation guide](docs/integrations/muse.md).
31
+ - A graph community that holds code and documents is split in two before domains are
32
+ computed. Graphify 0.9.62 and later link documents to the code they mention, which merged
33
+ them.
34
+ - Domain membership is computed by each sync and kept per node. A path prefix now adds its
35
+ files at sync time, not when a domain is read. A decision anchored under a path rule that
36
+ the 20% cap kept off the communities now reaches that domain too.
37
+ - A domain whose refresh fails keeps its previous membership whole and is reported again by
38
+ every later sync until its cause is fixed; `--force` retries it.
39
+ - A domain-membership pass that cannot run because another process holds the store is
40
+ reported once, as `domain membership not refreshed: the store's writer was busy`, and the
41
+ next sync runs it; `--check` does not count it. A pass that fails as a whole is reported
42
+ as `*` (every accepted domain) until its cause is fixed.
43
+ - The `supersede_domain` answer carries `snapshot_note` when the domain's membership is
44
+ frozen.
45
+
46
+ ### Fixed
47
+
48
+ - SessionStart and Stop no longer create an absent store. Missing host-relative stores are
49
+ selected at the Git root; MCP first use requires explicit setup for nested or non-Git
50
+ destinations. Init distinguishes an empty scaffold from a store with authored content
51
+ and still prints setup guidance.
52
+ - The MCP server applies the committed ratification policy from the selected store's
53
+ project when no policy is set in its environment, including cross-project and symlinked
54
+ stores. Missing settings keep the manual default.
55
+ - Doctor excludes committed file deletions from code drift while binding statuses are
56
+ uncomputed, and qualifies remaining changes as having unknown binding status. Projects
57
+ without a graph still report changes to surviving anchored files.
58
+ - Hot hooks withhold records and memory counts on a new store or after an index reload until
59
+ sync computes binding statuses, so placeholder `live` rows cannot revive orphaned anchors.
60
+ - Community names from newer Graphify builds are read from curated labels, pending hub names,
61
+ then node names. Hub labels use the file's basename within their own community.
62
+ - Graphify's post-merge hook marker is recognised alongside its other refresh-hook markers.
63
+ - SessionStart and doctor advise when a graph's engine stamp is outside the tested releases.
64
+ The advisory adds no human notice; doctor's `--check` exits 2 when it is present.
65
+
66
+ - `sidegraph-import` recognises compatible re-cut rationale labels by their exact file/node
67
+ context as well as the existing title/origin key, reducing duplicate imports after a
68
+ Graphify upgrade or rollback.
69
+
70
+ - Every Graphify run Sidegraph starts or tells you to start now sets `GRAPHIFY_NO_AUTO_REFRESH=1`.
71
+ Graphify 0.9.87 and later refresh the agent skills they installed (such as
72
+ `~/.claude/skills/graphify/`) on the first run after a Graphify upgrade unless that variable is
73
+ set. The graph refresh hook's helper, the CI recipes, the copyable commands in the docs and the
74
+ setup skill set it, and the rebuild instructions Sidegraph prints name it. Graphify 0.9.6 does
75
+ not read the variable.
76
+ - Anchors to files that share a basename keep resolving on newer Graphify. Graphify 0.9.87 and
77
+ later label such a file by a path suffix (`sidegraph/cli.py`) instead of its basename; Sidegraph
78
+ reads those nodes as basenames again, so an anchor `cli.py` in `src/sidegraph/cli.py` still
79
+ finds its node, and the engine's own label still resolves too.
80
+ - A path-named anchor (`src/sidegraph/store.py` with its own `file_path`) now resolves to that
81
+ file's node on any Graphify version, and is stored under the basename. Entities an earlier
82
+ version named by the full path heal at the one-time resync that follows the upgrade.
83
+ - `find_entity` reads the spelling twins of one file (an entity named by the file's path beside
84
+ one named by its basename) as one entity, and `get_entity_history` lists the records bound to
85
+ any twin. New anchors, lookups and duplicate detection compare names the same way.
86
+ - An anchor `file_path` given as an absolute path under the repository, with backslashes on
87
+ Windows, or with a leading `./` is stored repo-relative with forward slashes and binds live
88
+ instead of orphaning, through the MCP write tools and through capture. When a store sits in a
89
+ subdirectory of its repository, the root whose path the graph holds is the one used.
90
+ - An anchor naming an imported external type (`BaseModel`, `Path`) now binds even when Graphify
91
+ emits one stub node per importing file. The stubs count as one match when none has a file and
92
+ they share a label and a node type, and the anchor gets a group binding only when they share a
93
+ community. This applies on every Graphify version. A type and a module of one name (`FastMCP`
94
+ and `fastmcp`) and repository code are still told apart. Document mentions of such names do
95
+ not gain a precise leaf binding, and reading surfaces keep their earlier resolution answers.
96
+ - Sync reports an anchor whose file disappeared and whose name now matches only external stubs
97
+ as orphaned. A resolved external anchor without a community no longer prevents other anchors'
98
+ previous community bindings from being retired. A formerly shared group also retires when
99
+ the stubs split. Ambiguous anchors and failed rebinds keep those bindings when their current
100
+ community is unknown.
101
+
102
+ ### Added
103
+
104
+ - `sidegraph-domains snapshot` freezes every accepted domain's membership into
105
+ `.sidegraph/domain-snapshot.json`, so a Graphify upgrade that regroups communities does not
106
+ move domains. It raises the store's minimum Sidegraph version to 0.14.0. `--build-with
107
+ VERSION` takes the snapshot from `HEAD` rebuilt with an older Graphify; `--refresh`
108
+ re-freezes it; `--dry-run` prints the counts it would freeze and leaves committed files unchanged.
109
+ - `sidegraph-verify` reports `bad-domain-snapshot` and `snapshot-without-requirement`;
110
+ `sidegraph-doctor` reports `snapshot-split`; `sidegraph-sync --json` and `sync_anchors`
111
+ carry `snapshot_splits`.
112
+
113
+
114
+ - `sidegraph-require --sidegraph X.Y.Z` makes a store require at least that Sidegraph release:
115
+ the committed marker is raised atomically and never lowered. New clients check it before
116
+ using the store; verification reports malformed requirements and requirements above its version.
117
+
118
+ - `sidegraph-doctor` prints informational `spelling twins` lines for an entity named by a path of
119
+ its file beside one named by the basename. They are not findings and do not change the exit
120
+ code. `duplicate-entity` no longer reports such a pair.
121
+
122
+ - A new advisory check, `refresh-helper-outdated`, reports a graph refresh hook whose helper runs
123
+ Graphify without `GRAPHIFY_NO_AUTO_REFRESH=1` (the helper an earlier `sidegraph-init` wrote). It
124
+ shows as a SessionStart line and notice and as a `sidegraph-doctor` finding, and
125
+ `sidegraph-doctor --check` exits `2` on it. Run `sidegraph-init` with no flag: it rewrites the
126
+ helper and keeps your recorded hook choice. The helper lives in `.git/hooks`, so each clone
127
+ runs it once.
128
+
129
+ ## [0.13.0] — 2026-10-14
130
+
131
+ ### Fixed
132
+
133
+ - On Windows, hooks misread the payload the host sends when a path in it has a non-ASCII
134
+ character (an accented or Cyrillic user name or project folder). The Stop capture reminder
135
+ never fired, PreToolUse delivered no records, and for some names SessionStart and
136
+ SubagentStart printed nothing.
137
+ - On Windows, a non-ASCII git user name, branch name or repository path was read back garbled:
138
+ a ratified record could carry a garbled name in its provenance, and `sidegraph-verify
139
+ --against` failed or reported false changes for records containing non-ASCII text.
140
+ - A change to a file whose name has non-ASCII characters, spaces or quotes was missed by the
141
+ drift check and the commit-trailer candidates, because git escaped the name.
142
+ - On Windows, a Codex hook started from a subdirectory of a repository whose path has non-ASCII
143
+ characters now runs from the repository root.
144
+ - A default Git for Windows install no longer breaks the MCP server. Its installer puts only
145
+ `Git\cmd` on PATH, which has no `sh`, so the server, which started with `sh`, did not start.
146
+ The Codex hooks have a Windows command for the same reason (see Changed).
147
+ - The project's ratify policy now applies under Codex. `sidegraph-init` commits it to
148
+ `.claude/settings.json`, which Codex does not read, so under Codex every agent proposal
149
+ waited for review whatever the team chose. The plugin's MCP server now reads the committed
150
+ value when its environment sets none; an explicit `SIDEGRAPH_RATIFY_POLICY` still wins.
151
+
152
+ ### Changed
153
+
154
+ - The plugins launch without `sh` on PATH. Both MCP launchers start `uvx` (`uv` in the
155
+ development manifest) directly, and `sidegraph-mcp --repo-root` anchors the server to the
156
+ project: `CLAUDE_PROJECT_DIR`, else the git top-level, else the working directory. The Codex
157
+ hooks gain a PowerShell `commandWindows` that Windows PowerShell 5.1 parses. On native Windows
158
+ you need no PATH change and no PowerShell 7; Git for Windows at its default options is
159
+ enough. The Codex hooks need a Codex release that supports `commandWindows` (verified with
160
+ 0.162.1). The Windows hook definition changes, so approve the changed hooks once in `/hooks`
161
+ on Windows; other platforms are unaffected.
162
+ - The optional terminal CLI now installs from the same place as the plugin, the public
163
+ repository's `main` branch: `uv tool install git+https://github.com/SantyagoSeaman/sidegraph.git@main`,
164
+ updated after each release with `uv tool upgrade sidegraph`. The docs no longer send you to
165
+ PyPI for it; PyPI still carries every release for pinning an exact version. The `path-skew`
166
+ SessionStart line now offers `uv tool install --reinstall git+https://github.com/SantyagoSeaman/sidegraph.git@main`,
167
+ which moves an older install from PyPI, pinned or not, to the latest release.
168
+ - README: the Quickstart is one numbered sequence with the plugin commands inline, a teammate
169
+ path, and the rarer options below it; "How it works" is a numbered list instead of a diagram.
170
+
10
171
  ## [0.12.0] — 2026-10-12
11
172
 
12
173
  ### Fixed
@@ -5,7 +5,7 @@ that doesn't forget *why* things are the way they are as time passes and people
5
5
 
6
6
  **Thesis: own the memory, rent the graph.** Sidegraph owns an append-only, repo-committed
7
7
  decision store and layers it as a **sidecar** over a mature code-graph engine
8
- ([Graphify](https://github.com/safishamsi/graphify)) rather than re-building entity extraction
8
+ ([Graphify](https://github.com/Graphify-Labs/graphify)) rather than re-building entity extraction
9
9
  and graph construction. The edge over session-memory tools is durable anchoring + budgeted,
10
10
  task-aware retrieval + decision memory riding on the engine's entity graph.
11
11
 
@@ -13,7 +13,7 @@ task-aware retrieval + decision memory riding on the engine's entity graph.
13
13
  continuing participant in the project. A core feature must preserve, organize, or deliver
14
14
  accumulated project understanding. Document search by itself is not the product.
15
15
 
16
- Sidegraph is pre-1.0 (v0.12.0) — the full loop (capture, ratification, mistakes-first
16
+ Sidegraph is pre-1.0 (v0.14.0) — the full loop (capture, ratification, mistakes-first
17
17
  retrieval, refactor-surviving re-anchoring, semantic docs layer, mind-model domains, and the
18
18
  facts evidence layer) ships and is exercised end-to-end, but interfaces may still move before
19
19
  a stable release. See
@@ -53,6 +53,7 @@ src/sidegraph/
53
53
  ├── schema.py # Pydantic models: Entity, Decision, Fact, AnchorBinding, Domain, Initiative
54
54
  ├── store.py # owned append-only store (file-per-record JSON); enforces invariants on write
55
55
  ├── retrieval.py # multi-altitude, budget-bounded, task-aware read path (mistakes first)
56
+ ├── domain_snapshot.py # committed domain-membership snapshot: format and matching rules
56
57
  ├── hot_index.py # raw-sqlite handle on index.db for the hook hot path (no Store, no pydantic)
57
58
  ├── store_layout.py # store constants and rules shared with the hot path (pydantic-free)
58
59
  ├── server.py # FastMCP decision MCP — the tools agents call