sidegraph 0.13.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 (551) hide show
  1. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/workflows/ci.yml +5 -1
  2. sidegraph-0.14.0/.opencode/INSTALL.md +67 -0
  3. {sidegraph-0.13.0 → sidegraph-0.14.0}/AGENTS.md +1 -1
  4. {sidegraph-0.13.0 → sidegraph-0.14.0}/CHANGELOG.md +119 -0
  5. {sidegraph-0.13.0 → sidegraph-0.14.0}/CLAUDE.md +3 -2
  6. {sidegraph-0.13.0 → sidegraph-0.14.0}/PKG-INFO +134 -31
  7. {sidegraph-0.13.0 → sidegraph-0.14.0}/README.md +133 -30
  8. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/README.md +5 -2
  9. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/anchoring.md +12 -3
  10. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/data-model.md +7 -6
  11. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/decision-memory.md +1 -1
  12. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/mind-model.md +11 -1
  13. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/retrieval.md +4 -1
  14. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/bootstrap.md +8 -4
  15. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/claude-code-setup.md +25 -0
  16. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/codex-setup.md +24 -8
  17. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/installation.md +33 -12
  18. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/quickstart.md +19 -5
  19. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/capturing-decisions.md +6 -3
  20. {sidegraph-0.13.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.13.0 → sidegraph-0.14.0}/docs/guides/naming-your-domains.md +6 -0
  23. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/retrieval-in-sessions.md +1 -1
  24. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/semantic-docs.md +13 -5
  25. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/surviving-refactors.md +16 -7
  26. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/troubleshooting.md +30 -2
  27. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/verifying-your-setup.md +2 -0
  28. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/integrations/claude-code.md +20 -1
  29. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/integrations/codex.md +60 -67
  30. {sidegraph-0.13.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.13.0 → sidegraph-0.14.0}/docs/llms.txt +4 -0
  34. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/cli.md +152 -37
  35. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/configuration.md +21 -3
  36. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/git-bindings.md +4 -2
  37. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/hooks.md +68 -21
  38. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/mcp-tools.md +57 -33
  39. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/releasing.md +16 -3
  40. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/stability.md +3 -3
  41. {sidegraph-0.13.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.13.0 → sidegraph-0.14.0}/plugin/sidegraph/.claude-plugin/plugin.json +1 -1
  45. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/.codex-plugin/plugin.json +1 -1
  46. sidegraph-0.14.0/plugin/sidegraph/.muse-plugin/plugin.json +77 -0
  47. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/heal-anchors/SKILL.md +31 -20
  48. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/import-adrs/SKILL.md +3 -2
  49. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/manage-domains/SKILL.md +33 -7
  50. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/name-domains/SKILL.md +6 -3
  51. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-decision/SKILL.md +8 -4
  52. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-fact/SKILL.md +3 -2
  53. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/setup/SKILL.md +28 -17
  54. {sidegraph-0.13.0 → sidegraph-0.14.0}/pyproject.toml +2 -1
  55. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/__init__.py +1 -1
  56. sidegraph-0.14.0/src/sidegraph/anchoring.py +411 -0
  57. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/apply.py +2 -2
  58. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/cli.py +7 -5
  59. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/model.py +2 -1
  60. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/planner.py +1 -1
  61. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/capture.py +41 -14
  62. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/cli.py +440 -26
  63. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/config.py +27 -2
  64. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/doc_import.py +2 -2
  65. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/doctor.py +215 -55
  66. sidegraph-0.14.0/src/sidegraph/domain_snapshot.py +494 -0
  67. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/domains.py +15 -2
  68. sidegraph-0.14.0/src/sidegraph/engine/rationale.py +51 -0
  69. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/engine/reader.py +406 -44
  70. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/githooks.py +51 -3
  71. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/gitio.py +7 -1
  72. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/hooks.py +36 -9
  73. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/mcp_entry.py +12 -3
  74. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/hot_index.py +23 -7
  75. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/importer.py +53 -16
  76. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/integrity.py +148 -10
  77. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/retrieval.py +149 -66
  78. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/schema.py +31 -2
  79. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/seed_ladder.py +8 -5
  80. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/server.py +161 -44
  81. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/stats/model.py +5 -1
  82. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/stats/render.py +4 -3
  83. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/store.py +477 -102
  84. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/store_layout.py +271 -1
  85. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/sync.py +696 -116
  86. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/verify.py +97 -13
  87. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/openspec/_provenance.json +1 -1
  88. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/openspec/graph.json +2396 -457
  89. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/_provenance.json +1 -1
  90. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +8 -8
  91. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/graph.json +293 -113
  92. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/githooks_support.py +2 -0
  93. sidegraph-0.14.0/tests/graph_fixtures.py +53 -0
  94. sidegraph-0.14.0/tests/opencode_plugin_runner.mjs +71 -0
  95. sidegraph-0.14.0/tests/snapshot_support.py +205 -0
  96. sidegraph-0.14.0/tests/test_anchor_descriptor.py +199 -0
  97. sidegraph-0.14.0/tests/test_anchor_paths.py +264 -0
  98. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_anchoring.py +1 -1
  99. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_anchoring_mapping_refresh.py +1 -1
  100. sidegraph-0.14.0/tests/test_anchoring_membership.py +372 -0
  101. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_apply.py +9 -0
  102. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_cli.py +3 -2
  103. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_unanchored.py +6 -5
  104. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_doctor.py +41 -0
  105. sidegraph-0.14.0/tests/test_cli_domains_snapshot.py +379 -0
  106. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_import.py +1 -1
  107. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_init.py +69 -1
  108. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_stats.py +23 -0
  109. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_sync_check.py +1 -0
  110. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_command_windows.py +46 -0
  111. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_community_baseline.py +1 -1
  112. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_config_ancestor_lookup.py +5 -5
  113. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_corpus_self_corpus.py +9 -0
  114. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_docs_claims.py +217 -3
  115. sidegraph-0.14.0/tests/test_doctor_code_drift.py +648 -0
  116. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_duplicate_entity.py +54 -1
  117. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_integrity.py +2 -1
  118. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_scan.py +14 -6
  119. sidegraph-0.14.0/tests/test_domain_seed_names.py +38 -0
  120. sidegraph-0.14.0/tests/test_domain_snapshot_format.py +243 -0
  121. sidegraph-0.14.0/tests/test_domain_snapshot_notices.py +92 -0
  122. sidegraph-0.14.0/tests/test_engine_build.py +164 -0
  123. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_bindings_blame.py +26 -0
  124. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_bindings_hook.py +22 -0
  125. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_githooks.py +18 -0
  126. sidegraph-0.14.0/tests/test_graphify_pin.py +60 -0
  127. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hook_payload_encoding.py +3 -0
  128. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_borrowed_graph.py +2 -1
  129. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_drift_nudge.py +29 -12
  130. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_integrity.py +32 -4
  131. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_pretool.py +3 -0
  132. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_pretool_records.py +3 -1
  133. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_session_key.py +6 -0
  134. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_session_start.py +53 -4
  135. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_session_start_concurrent.py +3 -0
  136. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_stop.py +124 -34
  137. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_subagent_start.py +5 -0
  138. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_subdirectory_launch.py +3 -0
  139. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_wiring_checks.py +3 -0
  140. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hot_index.py +251 -1
  141. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_import_dry_run_preview.py +1 -1
  142. sidegraph-0.14.0/tests/test_importer.py +1180 -0
  143. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_installed_wheel_smoke.py +2 -0
  144. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_integrity.py +23 -8
  145. sidegraph-0.14.0/tests/test_integrity_engine_version.py +180 -0
  146. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_integrity_refresh_hook.py +245 -0
  147. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_integrity_replay.py +2 -1
  148. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_integrity_stranded.py +9 -0
  149. sidegraph-0.14.0/tests/test_mcp_entry_ratify_policy.py +282 -0
  150. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_member_anchor_wiring.py +1 -1
  151. sidegraph-0.14.0/tests/test_muse_plugin.py +60 -0
  152. sidegraph-0.14.0/tests/test_opencode_plugin.py +213 -0
  153. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_pathless_descriptor_adoption.py +2 -2
  154. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_ratify_policy.py +1 -1
  155. sidegraph-0.14.0/tests/test_rationale_compatibility.py +156 -0
  156. sidegraph-0.14.0/tests/test_reader_community_labels.py +174 -0
  157. sidegraph-0.14.0/tests/test_reader_engine_version.py +160 -0
  158. sidegraph-0.14.0/tests/test_reader_file_labels.py +189 -0
  159. sidegraph-0.14.0/tests/test_reader_label_conventions.py +24 -0
  160. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_member_name_lookup.py +4 -4
  161. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_member_names.py +5 -3
  162. sidegraph-0.14.0/tests/test_reader_stub_collapse.py +451 -0
  163. sidegraph-0.14.0/tests/test_reader_type_split.py +95 -0
  164. sidegraph-0.14.0/tests/test_rebuild_instruction.py +134 -0
  165. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_context.py +17 -7
  166. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_drilldown.py +28 -11
  167. sidegraph-0.14.0/tests/test_retrieval_membership_generations.py +81 -0
  168. sidegraph-0.14.0/tests/test_retrieval_membership_index.py +151 -0
  169. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_toc.py +1 -0
  170. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_add_anchors.py +1 -1
  171. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_borrowed_graph.py +8 -5
  172. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_drilldown.py +1 -0
  173. sidegraph-0.14.0/tests/test_server_get_store.py +178 -0
  174. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_graph_freshness.py +5 -2
  175. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_mcp_smoke.py +100 -0
  176. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_refresh.py +27 -0
  177. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_tolerant_seeds.py +2 -1
  178. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_session_attribution.py +1 -0
  179. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stop_rearm.py +1 -0
  180. sidegraph-0.14.0/tests/test_store_domain_members.py +207 -0
  181. sidegraph-0.14.0/tests/test_store_file_anchor_names.py +226 -0
  182. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_mutation_guard.py +22 -0
  183. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_persistence.py +40 -55
  184. sidegraph-0.14.0/tests/test_store_requirement.py +608 -0
  185. sidegraph-0.14.0/tests/test_store_snapshot_wiring.py +107 -0
  186. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_symlinks.py +7 -1
  187. sidegraph-0.14.0/tests/test_sync_membership.py +779 -0
  188. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_rebind.py +4 -4
  189. sidegraph-0.14.0/tests/test_sync_snapshot_membership.py +487 -0
  190. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_wiring.py +1 -0
  191. sidegraph-0.14.0/tests/test_verify_domain_snapshot.py +100 -0
  192. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_snapshot.py +59 -0
  193. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/wheel_smoke.py +17 -1
  194. {sidegraph-0.13.0 → sidegraph-0.14.0}/uv.lock +1 -1
  195. sidegraph-0.13.0/src/sidegraph/anchoring.py +0 -229
  196. sidegraph-0.13.0/tests/test_doctor_code_drift.py +0 -323
  197. sidegraph-0.13.0/tests/test_importer.py +0 -573
  198. sidegraph-0.13.0/tests/test_mcp_entry_ratify_policy.py +0 -104
  199. sidegraph-0.13.0/tests/test_reader_community_labels.py +0 -82
  200. sidegraph-0.13.0/tests/test_server_get_store.py +0 -62
  201. {sidegraph-0.13.0 → sidegraph-0.14.0}/.agents/plugins/marketplace.json +0 -0
  202. {sidegraph-0.13.0 → sidegraph-0.14.0}/.claude-plugin/marketplace.json +0 -0
  203. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/CODEOWNERS +0 -0
  204. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  205. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  206. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  207. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  208. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/secret_scanning.yml +0 -0
  209. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/workflows/publish.yml +0 -0
  210. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/workflows/scorecard.yml +0 -0
  211. {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/workflows/session-link-gate.yml +0 -0
  212. {sidegraph-0.13.0 → sidegraph-0.14.0}/.gitignore +0 -0
  213. {sidegraph-0.13.0 → sidegraph-0.14.0}/.gitleaks.toml +0 -0
  214. {sidegraph-0.13.0 → sidegraph-0.14.0}/.pre-commit-config.yaml +0 -0
  215. {sidegraph-0.13.0 → sidegraph-0.14.0}/.python-version +0 -0
  216. {sidegraph-0.13.0 → sidegraph-0.14.0}/CODE_OF_CONDUCT.md +0 -0
  217. {sidegraph-0.13.0 → sidegraph-0.14.0}/CONTRIBUTING.md +0 -0
  218. {sidegraph-0.13.0 → sidegraph-0.14.0}/LICENSE +0 -0
  219. {sidegraph-0.13.0 → sidegraph-0.14.0}/SECURITY.md +0 -0
  220. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/team-workflow.md +0 -0
  221. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/README.md +0 -0
  222. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/corpus_fit.py +0 -0
  223. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/judge-prompt.md +0 -0
  224. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/questions-prompt.md +0 -0
  225. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/rubric-template.md +0 -0
  226. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/operations.md +0 -0
  227. {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/whitepaper/index.md +0 -0
  228. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/.mcp.json +0 -0
  229. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/codex/hooks.json +0 -0
  230. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/codex/mcp.json +0 -0
  231. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/hooks/hooks.json +0 -0
  232. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
  233. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
  234. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/explain-why/SKILL.md +0 -0
  235. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
  236. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
  237. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/import-adrs/agents/openai.yaml +0 -0
  238. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/manage-domains/agents/openai.yaml +0 -0
  239. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/name-domains/agents/openai.yaml +0 -0
  240. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +0 -0
  241. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
  242. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
  243. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
  244. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/setup/agents/openai.yaml +0 -0
  245. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
  246. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/stats/agents/openai.yaml +0 -0
  247. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/triage-drift/SKILL.md +0 -0
  248. {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
  249. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bash_paths.py +0 -0
  250. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/__init__.py +0 -0
  251. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/catalog.py +0 -0
  252. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/integrations.py +0 -0
  253. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/proof.py +0 -0
  254. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/review.py +0 -0
  255. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/scan.py +0 -0
  256. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/engine/__init__.py +0 -0
  257. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/freshness.py +0 -0
  258. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/gitenv.py +0 -0
  259. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/__init__.py +0 -0
  260. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/claude_settings.py +0 -0
  261. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/launch.py +0 -0
  262. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/session_identity.py +0 -0
  263. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/subagent.py +0 -0
  264. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/input_limits.py +0 -0
  265. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/nearest_anchored.py +0 -0
  266. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/okf.py +0 -0
  267. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/profiles.py +0 -0
  268. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/redaction_scan.py +0 -0
  269. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/redaction_tokens.py +0 -0
  270. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/stats/__init__.py +0 -0
  271. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/text_paths.py +0 -0
  272. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/tool_rate_limit.py +0 -0
  273. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/validation_errors.py +0 -0
  274. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/__init__.py +0 -0
  275. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
  276. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/model.py +0 -0
  277. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/render.py +0 -0
  278. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/template.html +0 -0
  279. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/worktree_seeds.py +0 -0
  280. {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/write_boundary.py +0 -0
  281. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/__init__.py +0 -0
  282. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/conftest.py +0 -0
  283. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
  284. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bitfinex_slice.json +0 -0
  285. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
  286. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
  287. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
  288. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
  289. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
  290. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/graph.json +0 -0
  291. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
  292. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
  293. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
  294. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
  295. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
  296. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
  297. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
  298. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
  299. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/.memlog.md +0 -0
  300. {sidegraph-0.13.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
  301. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/prds/prd-payments-2026-07-30/prd.md +0 -0
  302. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
  303. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/sad.md +0 -0
  304. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
  305. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
  306. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
  307. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-empty.md +0 -0
  308. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
  309. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
  310. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design.md +0 -0
  311. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
  312. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/proposal.md +0 -0
  313. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
  314. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
  315. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
  316. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
  317. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/design.md +0 -0
  318. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/proposal.md +0 -0
  319. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
  320. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
  321. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/plan.md +0 -0
  322. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
  323. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
  324. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
  325. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
  326. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/member_names_python_graph.json +0 -0
  327. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/member_names_swift_graph.json +0 -0
  328. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/mini_graph.json +0 -0
  329. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_agent_brief_manifests.py +0 -0
  330. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bash_paths.py +0 -0
  331. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_batch_panel_fixes.py +0 -0
  332. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_catalog.py +0 -0
  333. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
  334. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_integrations.py +0 -0
  335. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_model.py +0 -0
  336. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_planner.py +0 -0
  337. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_proof.py +0 -0
  338. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_review.py +0 -0
  339. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_scan.py +0 -0
  340. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_scan_regular.py +0 -0
  341. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bounded_listings.py +0 -0
  342. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_auto_accept.py +0 -0
  343. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_facts.py +0 -0
  344. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_initiative.py +0 -0
  345. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_integration.py +0 -0
  346. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_neighbors.py +0 -0
  347. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_propose.py +0 -0
  348. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_redact.py +0 -0
  349. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_compact.py +0 -0
  350. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_domains.py +0 -0
  351. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_graph_paths.py +0 -0
  352. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_init_hooks.py +0 -0
  353. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_okf.py +0 -0
  354. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_ratify.py +0 -0
  355. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_ratify_facts.py +0 -0
  356. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_sync.py +0 -0
  357. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_unreadable_paths.py +0 -0
  358. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_viz.py +0 -0
  359. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_codex_plugin.py +0 -0
  360. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_config.py +0 -0
  361. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_config_borrowed_graph.py +0 -0
  362. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_corpus_expected_renders.py +0 -0
  363. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_coverage_telemetry_e2e.py +0 -0
  364. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_digest_integrity.py +0 -0
  365. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doc_corpus_integration.py +0 -0
  366. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doc_import.py +0 -0
  367. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor.py +0 -0
  368. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_auto_share.py +0 -0
  369. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_dangling_supports.py +0 -0
  370. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_graph_root_mismatch.py +0 -0
  371. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_graph_stale.py +0 -0
  372. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_never_surfaced.py +0 -0
  373. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_stale_instructions.py +0 -0
  374. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_unhashable_payload.py +0 -0
  375. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_unratified_accept.py +0 -0
  376. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_domains.py +0 -0
  377. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_entity_duplicate_resolution.py +0 -0
  378. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_entity_get_or_create_race.py +0 -0
  379. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_entry_point_arguments.py +0 -0
  380. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_env_isolation.py +0 -0
  381. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_fact_reachability_gate.py +0 -0
  382. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_flow_profile.py +0 -0
  383. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_bindings_provenance.py +0 -0
  384. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_config_isolation.py +0 -0
  385. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_env.py +0 -0
  386. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_output_utf8.py +0 -0
  387. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_graph_freshness.py +0 -0
  388. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hook_showings.py +0 -0
  389. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hook_spawn_guard.py +0 -0
  390. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_agent_brief.py +0 -0
  391. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_agent_state.py +0 -0
  392. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_claude_settings.py +0 -0
  393. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_launch.py +0 -0
  394. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_touch_events.py +0 -0
  395. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hot_index_hook.py +0 -0
  396. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hot_path_imports.py +0 -0
  397. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_index_journal_mode.py +0 -0
  398. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_lazy_root.py +0 -0
  399. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_mcp_entry_repo_root.py +0 -0
  400. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_mind_model_additive_fields.py +0 -0
  401. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_nearest_anchored.py +0 -0
  402. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_okf.py +0 -0
  403. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_openspec_profile.py +0 -0
  404. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_pilot_kit_corpus_fit.py +0 -0
  405. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_portable_json.py +0 -0
  406. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_proposal_lifecycle.py +0 -0
  407. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_public_hook_launch.py +0 -0
  408. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_ratify_listing_gone_dark.py +0 -0
  409. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_doc_nodes.py +0 -0
  410. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_graph.py +0 -0
  411. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_integration.py +0 -0
  412. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_nodes_in_file.py +0 -0
  413. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_perf.py +0 -0
  414. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_rationale.py +0 -0
  415. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_read.py +0 -0
  416. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_resolve.py +0 -0
  417. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_subdir_mismatch.py +0 -0
  418. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_version.py +0 -0
  419. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_redaction_scan.py +0 -0
  420. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_redaction_seeded.py +0 -0
  421. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_redaction_tokens.py +0 -0
  422. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_repo_relative_paths_portable.py +0 -0
  423. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_repoint_integration.py +0 -0
  424. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_budget_counters.py +0 -0
  425. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_drift_marker.py +0 -0
  426. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_facts.py +0 -0
  427. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_guessed.py +0 -0
  428. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_ids.py +0 -0
  429. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_integration.py +0 -0
  430. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_rank.py +0 -0
  431. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_seeds.py +0 -0
  432. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_shown_ids.py +0 -0
  433. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_terminal_evidence.py +0 -0
  434. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_thin_tools.py +0 -0
  435. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_toptier.py +0 -0
  436. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_unratified.py +0 -0
  437. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sandbox_hygiene.py +0 -0
  438. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_schema_descriptor.py +0 -0
  439. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_schema_domain.py +0 -0
  440. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_schema_fact.py +0 -0
  441. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_secret_scan_gate.py +0 -0
  442. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_binary_limits.py +0 -0
  443. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_capture_diagnostics.py +0 -0
  444. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_capture_limits.py +0 -0
  445. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_cli_diagnostics.py +0 -0
  446. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_doc_limits.py +0 -0
  447. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_input_limits.py +0 -0
  448. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_mcp_write_diagnostics.py +0 -0
  449. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_numeric_enums.py +0 -0
  450. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_python_shapes.py +0 -0
  451. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_redaction_cursor.py +0 -0
  452. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_redaction_scaling.py +0 -0
  453. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_validation_errors.py +0 -0
  454. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_write_boundary.py +0 -0
  455. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_seed_ladder.py +0 -0
  456. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_seed_paths_portable.py +0 -0
  457. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_anchoring.py +0 -0
  458. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_annotations.py +0 -0
  459. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_argument_names.py +0 -0
  460. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_capture.py +0 -0
  461. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_commit_hint.py +0 -0
  462. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_coverage_events.py +0 -0
  463. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_decision_listing.py +0 -0
  464. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_domains.py +0 -0
  465. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_facts.py +0 -0
  466. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_find_entity.py +0 -0
  467. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_get_task_context.py +0 -0
  468. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_graph_path.py +0 -0
  469. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_import.py +0 -0
  470. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_invocation_policy.py +0 -0
  471. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_nearest_anchored.py +0 -0
  472. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_prewrite_anchor_validation.py +0 -0
  473. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_ratify_facts.py +0 -0
  474. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_record_types.py +0 -0
  475. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_redaction.py +0 -0
  476. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_render_events.py +0 -0
  477. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_result_contract.py +0 -0
  478. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_supersede.py +0 -0
  479. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_sync_anchors.py +0 -0
  480. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_telemetry.py +0 -0
  481. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_thin_tools.py +0 -0
  482. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_verify.py +0 -0
  483. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_skill_frontmatter.py +0 -0
  484. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_graph.py +0 -0
  485. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_health.py +0 -0
  486. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_model.py +0 -0
  487. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_render.py +0 -0
  488. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_skill.py +0 -0
  489. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_snapshot.py +0 -0
  490. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stop_hot_path.py +0 -0
  491. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store.py +0 -0
  492. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_agent_state.py +0 -0
  493. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_atomic_write_tmp_names.py +0 -0
  494. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_bad_file.py +0 -0
  495. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_binding_index.py +0 -0
  496. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_canonical_stat.py +0 -0
  497. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_compact.py +0 -0
  498. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_compact_review.py +0 -0
  499. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_concurrent_open.py +0 -0
  500. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_coverage_telemetry.py +0 -0
  501. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_cross_process_mutations.py +0 -0
  502. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_derived_community.py +0 -0
  503. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_domains.py +0 -0
  504. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_entities.py +0 -0
  505. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_fact_cascade.py +0 -0
  506. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_facts.py +0 -0
  507. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_git_root_symlink.py +0 -0
  508. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_meta.py +0 -0
  509. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_migration.py +0 -0
  510. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_mutation_immediate.py +0 -0
  511. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_non_file_entries.py +0 -0
  512. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_opens_with_merged_duplicate.py +0 -0
  513. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_ratification.py +0 -0
  514. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_rebuild_atomicity.py +0 -0
  515. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_record_identity.py +0 -0
  516. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_record_types.py +0 -0
  517. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_render_events.py +0 -0
  518. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_retrieval.py +0 -0
  519. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_slug_conflicts.py +0 -0
  520. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_stamping_marker.py +0 -0
  521. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_telemetry.py +0 -0
  522. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_threading.py +0 -0
  523. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_tmp_sweep_age.py +0 -0
  524. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_update_meta_if.py +0 -0
  525. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_subagent_start_manifests.py +0 -0
  526. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_subprocess_text_encoding.py +0 -0
  527. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_canonical_writes.py +0 -0
  528. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_clean.py +0 -0
  529. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_domains.py +0 -0
  530. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_drift_cache.py +0 -0
  531. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_fresh_clone.py +0 -0
  532. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_integration.py +0 -0
  533. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_moved_adoption.py +0 -0
  534. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_repoint.py +0 -0
  535. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_report_has_findings.py +0 -0
  536. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_run.py +0 -0
  537. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_toc_cache.py +0 -0
  538. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_volatile_heal.py +0 -0
  539. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_telemetry_retention.py +0 -0
  540. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_text_paths.py +0 -0
  541. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_git_framing.py +0 -0
  542. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_git_revisions.py +0 -0
  543. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_git_stdin.py +0 -0
  544. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_transitions.py +0 -0
  545. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_viz_asset_packaged.py +0 -0
  546. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_viz_model.py +0 -0
  547. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_viz_render_html.py +0 -0
  548. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_viz_render_json.py +0 -0
  549. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_worktree_seeds.py +0 -0
  550. {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/wheel_server_trace.py +0 -0
  551. {sidegraph-0.13.0 → sidegraph-0.14.0}/tools/check_no_session_links.py +0 -0
@@ -329,11 +329,15 @@ jobs:
329
329
  cache-dependency-glob: "uv.lock"
330
330
 
331
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"
332
336
  run: |
333
337
  if [ ! -d .sidegraph ]; then
334
338
  echo "no .sidegraph in this checkout — anchor health not applicable"
335
339
  exit 0
336
340
  fi
337
- uvx --from graphifyy==0.9.6 graphify update .
341
+ uvx --from graphifyy==0.9.90 graphify update .
338
342
  uv sync --locked
339
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,125 @@ 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
+
10
129
  ## [0.13.0] — 2026-10-14
11
130
 
12
131
  ### 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.13.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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sidegraph
3
- Version: 0.13.0
3
+ Version: 0.14.0
4
4
  Summary: Own the memory, rent the graph — a durable decision/lessons layer as a sidecar over a code-graph engine.
5
5
  Project-URL: Homepage, https://github.com/SantyagoSeaman/sidegraph
6
6
  Project-URL: Repository, https://github.com/SantyagoSeaman/sidegraph
@@ -44,9 +44,10 @@ rejected, and what was learned during implementation, then retrieves that contex
44
44
  the files and symbols an agent is working on.
45
45
 
46
46
  Records live in your repository as reviewable JSON files. A derived SQLite index supports
47
- retrieval; [Graphify](https://github.com/safishamsi/graphify) supplies the code and document
47
+ retrieval; [Graphify](https://github.com/Graphify-Labs/graphify) supplies the code and document
48
48
  graph used to anchor records. Claude Code and Codex plugins connect capture and retrieval
49
- to coding sessions.
49
+ to coding sessions. OpenCode V2 and experimental Muse expose MCP tools and shared skills
50
+ for explicit retrieval and capture.
50
51
 
51
52
  - Keep decisions, rejected alternatives, and evidence with their provenance and history.
52
53
  - Hand the agent the relevant mistakes and constraints before it edits, sized to fit its context.
@@ -60,7 +61,7 @@ to coding sessions.
60
61
 
61
62
  ### Set up a repository (once)
62
63
 
63
- **You need** Git, Claude Code or Codex, and [uv](https://docs.astral.sh/uv/getting-started/installation/),
64
+ **You need** Git, one of the four hosts below, and [uv](https://docs.astral.sh/uv/getting-started/installation/),
64
65
  which also downloads Python 3.13 if you do not have it. On Windows you also need
65
66
  [Git for Windows](https://gitforwindows.org/) with its default options
66
67
  ([details](docs/getting-started/installation.md#windows)); run the commands below in
@@ -71,12 +72,19 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
71
72
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # uv on Windows
72
73
  ```
73
74
 
74
- **1. Build the code graph.** [Graphify](https://github.com/safishamsi/graphify) maps your
75
+ **Already using Sidegraph?** Follow the [0.14 migration guide](docs/guides/migrating-to-0.14.md)
76
+ before upgrading Graphify, so accepted domains keep their membership. Update every client
77
+ first, then use the existing-install update recipe for your host below. Claude Code and
78
+ Codex keep the same `sidegraph@sidegraph` identity; no uninstall/reinstall is needed.
79
+
80
+ **1. Build the code graph.** [Graphify](https://github.com/Graphify-Labs/graphify) maps your
75
81
  functions, classes and files, so a record can point at the exact function it is about.
76
82
 
77
83
  ```sh
78
- uv tool install "graphifyy==0.9.6" # two y's in the package name; the command is graphify
84
+ uv tool install "graphifyy==0.9.90" # two y's in the package name; the command is graphify
79
85
  cd /path/to/your/repo
86
+ export GRAPHIFY_NO_AUTO_REFRESH=1 # macOS, Linux: keeps Graphify off your agent skills
87
+ $env:GRAPHIFY_NO_AUTO_REFRESH = "1" # Windows PowerShell: use this line instead
80
88
  graphify update .
81
89
  echo "graphify-out/" >> .gitignore # the graph is rebuilt from your code; keep it out of git
82
90
  Add-Content .gitignore "graphify-out/" # the same line on Windows (PowerShell); do not use >> there
@@ -93,41 +101,134 @@ It asks two questions. Both default to yes, so press Enter twice.
93
101
  - *Keep the code graph fresh?* Yes installs a git hook that rebuilds the graph after each commit.
94
102
  - *Auto-ratify low-risk records?* Yes means the lessons, gotchas and facts the agent proposes
95
103
  are accepted without review. Other proposals still wait for you. The answer is saved in
96
- `.claude/settings.json`, which you commit. The plugin applies it in Claude Code and in Codex,
97
- so it covers the whole team.
104
+ `.claude/settings.json`, which you commit. Sidegraph reads it for all four MCP integrations unless an explicit
105
+ `SIDEGRAPH_RATIFY_POLICY` overrides it, so teammates use the same project policy.
98
106
 
99
107
  Details: [`sidegraph-init`](docs/reference/cli.md#sidegraph-init).
100
108
 
101
- **3. Install the plugin.** It gives the agent the memory at session start and asks it to save
102
- new decisions at the end of a session. It updates itself: each new session downloads and runs
103
- the latest Sidegraph release.
109
+ **3. Choose one host.** Install its cached plugin assets, then start a new session in this
110
+ repository. Host plugin updates and the MCP runtime are separate: the default runtime
111
+ follows the public repository's `main`, which advances at releases; that does not refresh
112
+ cached skills, manifests or hook definitions. Use your host's update recipe after a release.
113
+
114
+ #### Claude Code
104
115
 
105
- In Claude Code, run these inside a session in the repository, then start a new session:
116
+ In a Claude Code session in the repository:
106
117
 
107
118
  ```text
108
119
  /plugin marketplace add SantyagoSeaman/sidegraph
109
120
  /plugin install sidegraph@sidegraph
110
121
  ```
111
122
 
112
- In Codex, run these in a terminal in the repository, then start `codex` and approve the
113
- Sidegraph hooks when it asks:
123
+ Review the installation summary and any approval prompts, then start a new Claude Code
124
+ session. It provides MCP, skills, session memory, capture reminders and context on reads.
125
+ For an existing install, run these in your terminal:
126
+
127
+ ```sh
128
+ claude plugin marketplace update sidegraph
129
+ claude plugin update sidegraph@sidegraph
130
+ ```
131
+
132
+ Keep the same install scope; see the [Claude Code guide](docs/getting-started/claude-code-setup.md#update-an-existing-plugin).
133
+ Start a new session after updating, or use `/reload-plugins` and review its prompts.
134
+
135
+ #### Codex
136
+
137
+ Run these in a terminal in the repository:
114
138
 
115
139
  ```sh
116
140
  codex plugin marketplace add SantyagoSeaman/sidegraph
117
141
  codex plugin add sidegraph@sidegraph
118
142
  ```
119
143
 
144
+ Start a new interactive Codex session. Review Sidegraph's hooks through the startup warning
145
+ or `/hooks`, then approve them. Without approval, MCP remains available but automatic session
146
+ memory, capture reminders and subagent notices stay silent.
147
+ For an existing install, run this in your terminal:
148
+
149
+ ```sh
150
+ codex plugin marketplace upgrade sidegraph
151
+ ```
152
+
153
+ Start a new session and review any changed hook definitions through the startup warning or
154
+ `/hooks`; updating does not grant approval. This update recipe requires Codex CLI 0.162.1
155
+ or a version with that command. See the [Codex guide](docs/getting-started/codex-setup.md#keep-the-plugin-updated).
156
+
157
+ #### Muse (experimental)
158
+
159
+ MCP and shared skills only; no automatic session map, read context or capture reminder.
160
+ Run the install and update commands from the same stable directory outside any project
161
+ (for example, your home directory). Keep that checkout with LF line endings:
162
+
163
+ ```sh
164
+ git clone -c core.autocrlf=false https://github.com/SantyagoSeaman/sidegraph.git sidegraph-plugin
165
+ muse plugins install ./sidegraph-plugin/plugin/sidegraph
166
+ muse plugins inspect sidegraph
167
+ ```
168
+
169
+ Review the MCP capability, then approve it:
170
+
171
+ ```sh
172
+ muse plugins approve sidegraph
173
+ ```
174
+
175
+ Exit Muse and start a new Muse process from the intended project directory. Restart it there
176
+ whenever you switch projects; selecting a workspace in a running process is insufficient.
177
+ For an existing install, refresh the maintained checkout and inspect the changed capability:
178
+
179
+ ```sh
180
+ git -C sidegraph-plugin pull --ff-only
181
+ muse plugins update sidegraph
182
+ muse plugins inspect sidegraph
183
+ ```
184
+
185
+ Review changes, then approve and restart Muse from the target project:
186
+
187
+ ```sh
188
+ muse plugins approve sidegraph
189
+ ```
190
+
191
+ Basic installation and MCP access were checked on Muse 1.4.7 on macOS; the update command is supported by native
192
+ help, with full lifecycle and Windows acceptance deferred. See the [Muse guide](docs/integrations/muse.md).
193
+
194
+ #### OpenCode V2
195
+
196
+ Requires OpenCode V2 (native baseline 2.0.29), `uv` and Git on PATH. Native packaging/MCP
197
+ was checked on macOS; Windows acceptance is pending. In your terminal:
198
+
199
+ ```sh
200
+ opencode plugin add 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
201
+ ```
202
+
203
+ Start a new OpenCode session in your project and use `@sidegraph-setup`. Keep OpenCode's
204
+ normal MCP and skill permissions; no additional plugin-approval command is needed. This
205
+ route supplies MCP and skills only: ask for context and capture decisions explicitly.
206
+ For an existing install, check and update the Git package, then restart OpenCode:
207
+
208
+ ```sh
209
+ opencode plugin check 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
210
+ opencode plugin update 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
211
+ ```
212
+
213
+ The [OpenCode installation guide](.opencode/INSTALL.md) is the canonical recipe, including
214
+ configuration overrides. The package target `#main` and the MCP runtime's Git ref are
215
+ separate settings.
216
+
217
+ ### First memory
218
+
120
219
  **4. Record a decision.** In a session, ask the agent, naming a real file and function:
121
220
 
122
221
  > Record this gotcha: the upstream API limits batch requests to 100 items. We rejected
123
222
  > a single unbounded request because it fails for larger imports. Anchor it to
124
223
  > `import_batch` in `src/importer.py`.
125
224
 
126
- It is saved right away. Records the agent proposes on its own may wait for your review: run
127
- `/sidegraph:ratify-decisions` in Claude Code, or ask Codex to "review pending decisions".
225
+ It is saved right away. Records the agent proposes on its own may wait for your review.
226
+ Ask the agent to review pending Sidegraph decisions through MCP on any host; Claude Code
227
+ also offers `/sidegraph:ratify-decisions`.
128
228
 
129
229
  **5. Check and commit.** Start a new session and ask: "Before I edit `src/importer.py`, what
130
- should I know?" The agent should show the gotcha. Then commit `.sidegraph/` and `.gitignore`,
230
+ should I know? Retrieve Sidegraph context for that file with `get_task_context`." The agent
231
+ should show the gotcha on every host, including those without lifecycle hooks. Then commit `.sidegraph/` and `.gitignore`,
131
232
  and `.claude/settings.json` if step 2 created or changed it. The index file inside
132
233
  `.sidegraph/` is git-ignored automatically.
133
234
 
@@ -145,9 +246,9 @@ contents, or import existing ADRs and design specs with the
145
246
 
146
247
  - **Without the graph.** Skip step 1 and answer no to the first question in step 2. Records
147
248
  then attach to whole files instead of functions.
148
- - **Versions.** You always run the latest release. The plugin and the step 2 command install
149
- Sidegraph from the public repository on GitHub, whose `main` branch changes only when a
150
- release is published. To pin a version instead, see
249
+ - **Versions.** The default MCP runtime and the step 2 command install Sidegraph from the
250
+ public repository on GitHub, whose `main` branch changes only when a release is published.
251
+ Update cached plugin assets with your host recipe above. To pin a version instead, see
151
252
  [pinning](docs/getting-started/installation.md#mutable-development-references).
152
253
  - **Sidegraph commands in your own terminal.** Optional:
153
254
  `uv tool install git+https://github.com/SantyagoSeaman/sidegraph.git@main`, from the same place as the plugin. It does not update itself, so
@@ -176,17 +277,17 @@ evaluate it on your own repository.
176
277
  ## How it works
177
278
 
178
279
  1. **Capture.** During a session the agent saves a decision when you ask for one. At the end of
179
- a session the plugin reminds it to propose the decisions worth keeping. Secrets are redacted
180
- before anything is written.
280
+ a Claude Code or Codex session the plugin reminds it to propose decisions worth keeping.
281
+ In OpenCode and Muse, ask for capture explicitly. Secrets are redacted before storage.
181
282
  2. **Review.** You accept or drop what the agent proposed; Sidegraph calls this *ratifying*.
182
283
  Records are JSON files in `.sidegraph/`, committed with your code.
183
284
  3. **Anchoring.** Each record is linked to the functions, classes, files or document headings it
184
285
  is about, using the graph Graphify builds from your code. When a refactor moves code,
185
286
  Sidegraph follows the move; when it cannot tell where the code went, it flags the record for
186
287
  review.
187
- 4. **Recall.** At the start of the next session the agent gets a short table of contents of the
188
- project's areas, called *domains*. Before changing a file it asks for that file's records,
189
- with known mistakes first. In Claude Code, the agent also receives a file's records the
288
+ 4. **Recall.** Claude Code and Codex inject a short table of contents of the project's areas,
289
+ called *domains*, at session start. In every host, ask the agent to retrieve a file's
290
+ records with `get_task_context` before changing it, with known mistakes first. In Claude Code, the agent also receives a file's records the
190
291
  first time it reads or edits that file.
191
292
  5. **Subagents.** In Claude Code, when the agent hands a task to a subagent, the records for the
192
293
  files named in that task are added to it. In Claude Code and Codex, each new subagent is told
@@ -262,7 +363,7 @@ concepts and themes that records can anchor to. Walkthrough:
262
363
  ## The engine underneath
263
364
 
264
365
  The graph of your code and documents comes from
265
- [Graphify](https://github.com/safishamsi/graphify), built without an LLM. Sidegraph only reads
366
+ [Graphify](https://github.com/Graphify-Labs/graphify), built without an LLM. Sidegraph only reads
266
367
  it and never writes into it. Without a graph, records anchor to files and domains, and recall
267
368
  still works. Three things need the graph: anchoring a record to a function, grouping related
268
369
  code automatically, and following moved code (see the
@@ -273,13 +374,14 @@ cannot: they are the source of truth, so keep them in your repository and backup
273
374
  ## Status
274
375
 
275
376
  Sidegraph is in beta. Read the [stability policy](docs/reference/stability.md) before
276
- building automation against it. By default the plugin follows the latest release; for
377
+ building automation against it. By default the MCP runtime follows the latest release; for
277
378
  reproducible deployments, [pin a version](docs/getting-started/installation.md#mutable-development-references).
278
379
  The [changelog](CHANGELOG.md) records release changes.
279
380
 
280
- The platform badges at the top summarize the 0.13.0 release checks of 2026-10-14: Windows x64
281
- and macOS arm64 both ran the full plugin session for Claude Code and Codex. The badges are not
282
- live CI status; see [Platform coverage](docs/getting-started/installation.md#platform-coverage).
381
+ The platform badges summarize the release gate: full Claude Code and Codex plugin sessions
382
+ on Windows x64 and macOS arm64, with Python 3.13 and 3.14. Publication of 0.14.0 requires
383
+ this gate, including Windows PowerShell 5.1 without PowerShell 7. See
384
+ [Platform coverage](docs/getting-started/installation.md#platform-coverage) for limits.
283
385
 
284
386
  ## Contributing and support
285
387
 
@@ -299,7 +401,8 @@ Contributions are reviewed here and carried over, with attribution, before the n
299
401
  [Concepts](docs/concepts/decision-memory.md) ·
300
402
  [Guides](docs/guides/capturing-decisions.md) ·
301
403
  [Reference](docs/reference/mcp-tools.md) ·
302
- [Integrations](docs/integrations/graphify.md) (Graphify · Claude Code · Codex) ·
404
+ [Integrations](docs/integrations/graphify.md) (Graphify · [Claude Code](docs/integrations/claude-code.md) · [Codex](docs/integrations/codex.md) ·
405
+ [Muse](docs/integrations/muse.md) · [OpenCode V2](docs/integrations/opencode.md)) ·
303
406
  [Verify your setup](docs/guides/verifying-your-setup.md) ·
304
407
  [Operations](docs/reference/operations.md) ·
305
408
  [Pilot kit](docs/pilot-kit/README.md) ·