sidegraph 0.21.0__tar.gz → 0.22.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 (654) hide show
  1. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/workflows/ci.yml +9 -0
  2. {sidegraph-0.21.0 → sidegraph-0.22.0}/CHANGELOG.md +63 -0
  3. {sidegraph-0.21.0 → sidegraph-0.22.0}/CLAUDE.md +1 -1
  4. {sidegraph-0.21.0 → sidegraph-0.22.0}/PKG-INFO +31 -27
  5. {sidegraph-0.21.0 → sidegraph-0.22.0}/README.md +30 -26
  6. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/README.md +5 -5
  7. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/concepts/data-model.md +5 -3
  8. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/getting-started/installation.md +11 -7
  9. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/getting-started/quickstart.md +8 -5
  10. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/ci-cd-maintenance.md +7 -1
  11. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/migrating-to-0.17.md +1 -1
  12. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/team-workflow.md +3 -1
  13. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/troubleshooting.md +2 -2
  14. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/verifying-your-setup.md +7 -3
  15. sidegraph-0.22.0/docs/integrations/grok.md +131 -0
  16. sidegraph-0.22.0/docs/integrations/muse.md +62 -0
  17. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/llms.txt +2 -2
  18. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/cli.md +40 -7
  19. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/configuration.md +1 -1
  20. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/hooks.md +45 -15
  21. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/mcp-tools.md +2 -0
  22. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/releasing.md +1 -0
  23. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/stability.md +1 -1
  24. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/store-format.md +38 -8
  25. {sidegraph-0.21.0 → sidegraph-0.22.0}/package.json +1 -1
  26. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/.claude-plugin/plugin.json +1 -1
  27. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/.codex-plugin/plugin.json +1 -1
  28. sidegraph-0.22.0/plugin/sidegraph/.grok-plugin/plugin.json +21 -0
  29. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/.muse-plugin/plugin.json +21 -1
  30. sidegraph-0.22.0/plugin/sidegraph/grok/hooks.json +68 -0
  31. sidegraph-0.22.0/plugin/sidegraph/muse/hook.py +165 -0
  32. sidegraph-0.22.0/plugin/sidegraph/muse/session_start.py +3 -0
  33. sidegraph-0.22.0/plugin/sidegraph/muse/subagent_start.py +3 -0
  34. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/compact/SKILL.md +4 -0
  35. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/setup/SKILL.md +10 -6
  36. {sidegraph-0.21.0 → sidegraph-0.22.0}/pyproject.toml +1 -1
  37. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/__init__.py +1 -1
  38. sidegraph-0.22.0/src/sidegraph/check_fold.py +200 -0
  39. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/cli.py +8 -3
  40. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/config.py +4 -4
  41. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/doctor.py +1 -1
  42. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/drift_checks.py +217 -22
  43. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/host/hooks.py +245 -22
  44. sidegraph-0.22.0/src/sidegraph/host/mcp_entry.py +289 -0
  45. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/host/session_identity.py +13 -2
  46. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/integrity.py +43 -8
  47. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/maintenance.py +299 -13
  48. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/maintenance_clock.py +35 -0
  49. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/store.py +64 -1
  50. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/store_layout.py +10 -2
  51. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/verify.py +240 -15
  52. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/store_format2_support.py +64 -6
  53. sidegraph-0.22.0/tests/test_check_fold_plan.py +291 -0
  54. sidegraph-0.22.0/tests/test_check_fold_publish.py +474 -0
  55. sidegraph-0.22.0/tests/test_check_fold_wiring.py +188 -0
  56. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_compact_format2.py +181 -0
  57. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_docs_claims.py +22 -4
  58. sidegraph-0.22.0/tests/test_drift_checks_packed.py +335 -0
  59. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_format2_notices.py +25 -0
  60. sidegraph-0.22.0/tests/test_grok_hooks_manifest.py +258 -0
  61. sidegraph-0.22.0/tests/test_grok_session_map.py +330 -0
  62. sidegraph-0.22.0/tests/test_grok_stop.py +278 -0
  63. sidegraph-0.22.0/tests/test_host_grok_tools.py +306 -0
  64. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_wiring_checks.py +71 -0
  65. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_integrity_stranded.py +66 -0
  66. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_maintenance_clock.py +39 -0
  67. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_maintenance_dry_run_parity.py +62 -0
  68. sidegraph-0.22.0/tests/test_muse_hook_adapter.py +746 -0
  69. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_muse_plugin.py +17 -3
  70. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_readers_format2.py +3 -0
  71. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_session_attribution.py +32 -1
  72. sidegraph-0.22.0/tests/test_verify_packed_checks.py +230 -0
  73. sidegraph-0.22.0/tests/test_verify_packed_checks_against.py +368 -0
  74. {sidegraph-0.21.0 → sidegraph-0.22.0}/uv.lock +1 -1
  75. sidegraph-0.21.0/docs/integrations/grok.md +0 -36
  76. sidegraph-0.21.0/docs/integrations/muse.md +0 -52
  77. sidegraph-0.21.0/src/sidegraph/host/mcp_entry.py +0 -140
  78. {sidegraph-0.21.0 → sidegraph-0.22.0}/.agents/plugins/marketplace.json +0 -0
  79. {sidegraph-0.21.0 → sidegraph-0.22.0}/.claude-plugin/marketplace.json +0 -0
  80. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/CODEOWNERS +0 -0
  81. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  82. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  83. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  84. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  85. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/secret_scanning.yml +0 -0
  86. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/workflows/publish.yml +0 -0
  87. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/workflows/scorecard.yml +0 -0
  88. {sidegraph-0.21.0 → sidegraph-0.22.0}/.github/workflows/session-link-gate.yml +0 -0
  89. {sidegraph-0.21.0 → sidegraph-0.22.0}/.gitignore +0 -0
  90. {sidegraph-0.21.0 → sidegraph-0.22.0}/.gitleaks.toml +0 -0
  91. {sidegraph-0.21.0 → sidegraph-0.22.0}/.opencode/INSTALL.md +0 -0
  92. {sidegraph-0.21.0 → sidegraph-0.22.0}/.pre-commit-config.yaml +0 -0
  93. {sidegraph-0.21.0 → sidegraph-0.22.0}/.python-version +0 -0
  94. {sidegraph-0.21.0 → sidegraph-0.22.0}/AGENTS.md +0 -0
  95. {sidegraph-0.21.0 → sidegraph-0.22.0}/CODE_OF_CONDUCT.md +0 -0
  96. {sidegraph-0.21.0 → sidegraph-0.22.0}/CONTRIBUTING.md +0 -0
  97. {sidegraph-0.21.0 → sidegraph-0.22.0}/LICENSE +0 -0
  98. {sidegraph-0.21.0 → sidegraph-0.22.0}/SECURITY.md +0 -0
  99. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/concepts/anchoring.md +0 -0
  100. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/concepts/decision-memory.md +0 -0
  101. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/concepts/mind-model.md +0 -0
  102. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/concepts/retrieval.md +0 -0
  103. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/getting-started/bootstrap.md +0 -0
  104. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/getting-started/claude-code-setup.md +0 -0
  105. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/getting-started/codex-setup.md +0 -0
  106. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/adr-export.md +0 -0
  107. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/capturing-decisions.md +0 -0
  108. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/health-check.md +0 -0
  109. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/migrating-to-0.14.md +0 -0
  110. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/naming-your-domains.md +0 -0
  111. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/retrieval-in-sessions.md +0 -0
  112. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/semantic-docs.md +0 -0
  113. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/surviving-refactors.md +0 -0
  114. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/using-0.15.md +0 -0
  115. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/guides/using-0.16.md +0 -0
  116. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/integrations/claude-code.md +0 -0
  117. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/integrations/codex.md +0 -0
  118. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/integrations/graphify.md +0 -0
  119. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/integrations/opencode.md +0 -0
  120. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/pilot-kit/README.md +0 -0
  121. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/pilot-kit/corpus_fit.py +0 -0
  122. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/pilot-kit/judge-prompt.md +0 -0
  123. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/pilot-kit/questions-prompt.md +0 -0
  124. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/pilot-kit/rubric-template.md +0 -0
  125. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/git-bindings.md +0 -0
  126. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/reference/operations.md +0 -0
  127. {sidegraph-0.21.0 → sidegraph-0.22.0}/docs/whitepaper/index.md +0 -0
  128. {sidegraph-0.21.0 → sidegraph-0.22.0}/index.js +0 -0
  129. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/.mcp.json +0 -0
  130. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/codex/hooks.json +0 -0
  131. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/codex/mcp.json +0 -0
  132. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/hooks/hooks.json +0 -0
  133. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
  134. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
  135. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/compact/agents/openai.yaml +0 -0
  136. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/explain-why/SKILL.md +0 -0
  137. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
  138. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/heal-anchors/SKILL.md +0 -0
  139. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
  140. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/health-check/SKILL.md +0 -0
  141. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/health-check/agents/openai.yaml +0 -0
  142. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/health-check/scripts/collect.py +0 -0
  143. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/import-adrs/SKILL.md +0 -0
  144. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/import-adrs/agents/openai.yaml +0 -0
  145. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/manage-domains/SKILL.md +0 -0
  146. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/manage-domains/agents/openai.yaml +0 -0
  147. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/name-domains/SKILL.md +0 -0
  148. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/name-domains/agents/openai.yaml +0 -0
  149. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +0 -0
  150. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
  151. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/record-decision/SKILL.md +0 -0
  152. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
  153. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/record-fact/SKILL.md +0 -0
  154. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
  155. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/setup/agents/openai.yaml +0 -0
  156. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
  157. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/stats/agents/openai.yaml +0 -0
  158. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/triage-drift/SKILL.md +0 -0
  159. {sidegraph-0.21.0 → sidegraph-0.22.0}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
  160. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/adr.py +0 -0
  161. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/adr_cli.py +0 -0
  162. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/adr_files.py +0 -0
  163. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/adr_identity.py +0 -0
  164. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/anchoring.py +0 -0
  165. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bash_paths.py +0 -0
  166. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/__init__.py +0 -0
  167. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/apply.py +0 -0
  168. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/catalog.py +0 -0
  169. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/cli.py +0 -0
  170. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/integrations.py +0 -0
  171. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/model.py +0 -0
  172. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/planner.py +0 -0
  173. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/proof.py +0 -0
  174. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/review.py +0 -0
  175. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/bootstrap/scan.py +0 -0
  176. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/capture.py +0 -0
  177. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/checkout_window.py +0 -0
  178. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/delivery.py +0 -0
  179. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/doc_import.py +0 -0
  180. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/domain_snapshot.py +0 -0
  181. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/domains.py +0 -0
  182. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/drift_groups.py +0 -0
  183. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/engine/__init__.py +0 -0
  184. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/engine/rationale.py +0 -0
  185. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/engine/reader.py +0 -0
  186. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/freshness.py +0 -0
  187. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/gitenv.py +0 -0
  188. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/githooks.py +0 -0
  189. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/gitio.py +0 -0
  190. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/host/__init__.py +0 -0
  191. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/host/claude_settings.py +0 -0
  192. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/host/diagnostics.py +0 -0
  193. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/host/launch.py +0 -0
  194. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/host/subagent.py +0 -0
  195. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/hot_index.py +0 -0
  196. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/importer.py +0 -0
  197. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/input_limits.py +0 -0
  198. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/md_sections.py +0 -0
  199. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/migrate.py +0 -0
  200. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/nearest_anchored.py +0 -0
  201. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/okf.py +0 -0
  202. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/profiles.py +0 -0
  203. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/redaction_scan.py +0 -0
  204. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/redaction_tokens.py +0 -0
  205. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/retrieval.py +0 -0
  206. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/schema.py +0 -0
  207. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/seed_ladder.py +0 -0
  208. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/server.py +0 -0
  209. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/stats/__init__.py +0 -0
  210. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/stats/model.py +0 -0
  211. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/stats/render.py +0 -0
  212. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/store_format.py +0 -0
  213. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/store_rules.py +0 -0
  214. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/store_view.py +0 -0
  215. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/sync.py +0 -0
  216. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/text_paths.py +0 -0
  217. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/tool_rate_limit.py +0 -0
  218. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/validation_errors.py +0 -0
  219. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/viz/__init__.py +0 -0
  220. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
  221. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/viz/model.py +0 -0
  222. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/viz/render.py +0 -0
  223. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/viz/template.html +0 -0
  224. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/worktree_seeds.py +0 -0
  225. {sidegraph-0.21.0 → sidegraph-0.22.0}/src/sidegraph/write_boundary.py +0 -0
  226. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/__init__.py +0 -0
  227. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/bounded_listings_support.py +0 -0
  228. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/conftest.py +0 -0
  229. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/drift_checks_support.py +0 -0
  230. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/drift_groups_support.py +0 -0
  231. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
  232. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bitfinex_slice.json +0 -0
  233. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
  234. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
  235. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
  236. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
  237. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
  238. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/graph.json +0 -0
  239. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
  240. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
  241. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
  242. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
  243. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
  244. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
  245. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/corpus/openspec/_provenance.json +0 -0
  246. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/corpus/openspec/graph.json +0 -0
  247. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/corpus/self-corpus/_provenance.json +0 -0
  248. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +0 -0
  249. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/corpus/self-corpus/graph.json +0 -0
  250. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
  251. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
  252. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/.memlog.md +0 -0
  253. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/ARCHITECTURE-SPINE.md +0 -0
  254. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/prds/prd-payments-2026-07-30/prd.md +0 -0
  255. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
  256. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/genkovich/sad.md +0 -0
  257. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
  258. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
  259. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
  260. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/design-empty.md +0 -0
  261. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
  262. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
  263. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/design.md +0 -0
  264. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
  265. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/proposal.md +0 -0
  266. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
  267. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
  268. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
  269. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
  270. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/design.md +0 -0
  271. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/proposal.md +0 -0
  272. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
  273. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
  274. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/spec-kit/plan.md +0 -0
  275. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
  276. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
  277. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
  278. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
  279. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/member_names_python_graph.json +0 -0
  280. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/member_names_swift_graph.json +0 -0
  281. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/fixtures/mini_graph.json +0 -0
  282. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/githooks_legacy_helper.py +0 -0
  283. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/githooks_support.py +0 -0
  284. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/graph_fixtures.py +0 -0
  285. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/graph_repo_support.py +0 -0
  286. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/membership_support.py +0 -0
  287. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/moved_adoption_support.py +0 -0
  288. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/opencode_plugin_runner.mjs +0 -0
  289. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/snapshot_support.py +0 -0
  290. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/store_non_file_support.py +0 -0
  291. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/store_record_support.py +0 -0
  292. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_adr.py +0 -0
  293. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_adr_files.py +0 -0
  294. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_adr_identity.py +0 -0
  295. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_agent_brief_manifests.py +0 -0
  296. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_anchor_descriptor.py +0 -0
  297. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_anchor_paths.py +0 -0
  298. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_anchoring.py +0 -0
  299. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_anchoring_mapping_refresh.py +0 -0
  300. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_anchoring_membership.py +0 -0
  301. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bash_paths.py +0 -0
  302. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_batch_panel_fixes.py +0 -0
  303. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_apply.py +0 -0
  304. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_catalog.py +0 -0
  305. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_cli.py +0 -0
  306. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
  307. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_integrations.py +0 -0
  308. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_model.py +0 -0
  309. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_planner.py +0 -0
  310. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_proof.py +0 -0
  311. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_review.py +0 -0
  312. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_scan.py +0 -0
  313. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_scan_regular.py +0 -0
  314. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bootstrap_unanchored.py +0 -0
  315. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_bounded_listings.py +0 -0
  316. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_capture_auto_accept.py +0 -0
  317. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_capture_facts.py +0 -0
  318. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_capture_initiative.py +0 -0
  319. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_capture_integration.py +0 -0
  320. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_capture_neighbors.py +0 -0
  321. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_capture_propose.py +0 -0
  322. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_capture_redact.py +0 -0
  323. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_checkout_window.py +0 -0
  324. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_ci_workflow.py +0 -0
  325. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_claude_plugin_enabled.py +0 -0
  326. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_adr.py +0 -0
  327. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_compact.py +0 -0
  328. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_doctor.py +0 -0
  329. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_domains.py +0 -0
  330. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_domains_snapshot.py +0 -0
  331. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_graph_paths.py +0 -0
  332. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_import.py +0 -0
  333. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_init.py +0 -0
  334. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_init_hooks.py +0 -0
  335. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_okf.py +0 -0
  336. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_ratify.py +0 -0
  337. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_ratify_facts.py +0 -0
  338. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_stats.py +0 -0
  339. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_store_open_errors.py +0 -0
  340. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_store_precedence.py +0 -0
  341. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_sync.py +0 -0
  342. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_sync_check.py +0 -0
  343. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_unreadable_paths.py +0 -0
  344. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_cli_viz.py +0 -0
  345. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_codex_plugin.py +0 -0
  346. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_command_windows.py +0 -0
  347. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_community_baseline.py +0 -0
  348. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_compact_skill.py +0 -0
  349. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_config.py +0 -0
  350. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_config_ancestor_lookup.py +0 -0
  351. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_config_borrowed_graph.py +0 -0
  352. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_corpus_expected_renders.py +0 -0
  353. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_corpus_self_corpus.py +0 -0
  354. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_coverage_telemetry_e2e.py +0 -0
  355. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_declared_sections_docs.py +0 -0
  356. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_declared_sections_schema.py +0 -0
  357. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_delivery_evidence.py +0 -0
  358. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_delivery_stats.py +0 -0
  359. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_delivery_surfaces.py +0 -0
  360. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_digest_integrity.py +0 -0
  361. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doc_corpus_integration.py +0 -0
  362. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doc_import.py +0 -0
  363. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor.py +0 -0
  364. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_auto_share.py +0 -0
  365. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_code_drift.py +0 -0
  366. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_dangling_supports.py +0 -0
  367. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_declared_sections.py +0 -0
  368. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_duplicate_entity.py +0 -0
  369. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_graph_root_mismatch.py +0 -0
  370. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_graph_stale.py +0 -0
  371. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_grouped_drift.py +0 -0
  372. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_integrity.py +0 -0
  373. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_never_surfaced.py +0 -0
  374. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_record_identity.py +0 -0
  375. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_scan.py +0 -0
  376. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_stale_instructions.py +0 -0
  377. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_unhashable_payload.py +0 -0
  378. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_doctor_unratified_accept.py +0 -0
  379. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_domain_seed_names.py +0 -0
  380. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_domain_snapshot_format.py +0 -0
  381. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_domain_snapshot_notices.py +0 -0
  382. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_domains.py +0 -0
  383. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_drift_checks.py +0 -0
  384. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_drift_checks_blobs.py +0 -0
  385. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_drift_groups.py +0 -0
  386. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_drift_recency.py +0 -0
  387. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_drift_stamp_cache.py +0 -0
  388. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_engine_build.py +0 -0
  389. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_entity_duplicate_resolution.py +0 -0
  390. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_entity_get_or_create_race.py +0 -0
  391. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_entity_twins.py +0 -0
  392. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_entry_point_arguments.py +0 -0
  393. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_env_isolation.py +0 -0
  394. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_fact_reachability_gate.py +0 -0
  395. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_file_bound_retrieval.py +0 -0
  396. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_flow_profile.py +0 -0
  397. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_format2_windows.py +0 -0
  398. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_git_bindings_blame.py +0 -0
  399. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_git_bindings_hook.py +0 -0
  400. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_git_bindings_provenance.py +0 -0
  401. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_git_env.py +0 -0
  402. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_git_output_utf8.py +0 -0
  403. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_githooks.py +0 -0
  404. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_githooks_atomic_lock.py +0 -0
  405. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_graph_freshness.py +0 -0
  406. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_graphify_pin.py +0 -0
  407. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_health_check_skill.py +0 -0
  408. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hook_body_compaction.py +0 -0
  409. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hook_contention.py +0 -0
  410. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hook_failure_diagnostics.py +0 -0
  411. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hook_payload_encoding.py +0 -0
  412. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hook_showings.py +0 -0
  413. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hook_spawn_guard.py +0 -0
  414. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_agent_brief.py +0 -0
  415. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_agent_state.py +0 -0
  416. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_borrowed_graph.py +0 -0
  417. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_claude_settings.py +0 -0
  418. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_drift_nudge.py +0 -0
  419. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_integrity.py +0 -0
  420. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_launch.py +0 -0
  421. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_pretool.py +0 -0
  422. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_pretool_records.py +0 -0
  423. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_session_key.py +0 -0
  424. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_session_start.py +0 -0
  425. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_session_start_concurrent.py +0 -0
  426. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_stop.py +0 -0
  427. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_subagent_start.py +0 -0
  428. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_subdirectory_launch.py +0 -0
  429. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_host_touch_events.py +0 -0
  430. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hot_index.py +0 -0
  431. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hot_index_facts.py +0 -0
  432. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hot_index_hook.py +0 -0
  433. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_hot_path_imports.py +0 -0
  434. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_import_dry_run_preview.py +0 -0
  435. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_importer.py +0 -0
  436. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_index_journal_mode.py +0 -0
  437. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_integrity.py +0 -0
  438. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_integrity_engine_version.py +0 -0
  439. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_integrity_refresh_hook.py +0 -0
  440. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_integrity_replay.py +0 -0
  441. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_lazy_root.py +0 -0
  442. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_maintenance_plan.py +0 -0
  443. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_maintenance_publish.py +0 -0
  444. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_markdown_it_dependency.py +0 -0
  445. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_mcp_entry_ratify_policy.py +0 -0
  446. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_mcp_entry_repo_root.py +0 -0
  447. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_md_sections.py +0 -0
  448. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_member_anchor_wiring.py +0 -0
  449. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_merge_matrix_format2.py +0 -0
  450. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_migrate.py +0 -0
  451. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_mind_model_additive_fields.py +0 -0
  452. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_nearest_anchored.py +0 -0
  453. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_okf.py +0 -0
  454. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_opencode_plugin.py +0 -0
  455. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_openspec_profile.py +0 -0
  456. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_pathless_descriptor_adoption.py +0 -0
  457. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_pilot_kit_corpus_fit.py +0 -0
  458. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_portable_json.py +0 -0
  459. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_private_tests_isolation.py +0 -0
  460. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_proposal_lifecycle.py +0 -0
  461. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_public_hook_launch.py +0 -0
  462. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_ratify_listing_gone_dark.py +0 -0
  463. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_ratify_policy.py +0 -0
  464. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_rationale_compatibility.py +0 -0
  465. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_community_labels.py +0 -0
  466. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_doc_nodes.py +0 -0
  467. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_engine_version.py +0 -0
  468. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_file_labels.py +0 -0
  469. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_graph.py +0 -0
  470. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_integration.py +0 -0
  471. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_label_conventions.py +0 -0
  472. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_member_name_lookup.py +0 -0
  473. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_member_names.py +0 -0
  474. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_nodes_in_file.py +0 -0
  475. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_perf.py +0 -0
  476. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_rationale.py +0 -0
  477. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_read.py +0 -0
  478. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_resolve.py +0 -0
  479. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_stub_collapse.py +0 -0
  480. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_subdir_mismatch.py +0 -0
  481. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_type_split.py +0 -0
  482. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_reader_version.py +0 -0
  483. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_rebuild_instruction.py +0 -0
  484. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_record_drift_check_sections.py +0 -0
  485. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_record_drift_check_sections_input.py +0 -0
  486. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_redaction_scan.py +0 -0
  487. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_redaction_seeded.py +0 -0
  488. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_redaction_tokens.py +0 -0
  489. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_repo_relative_paths_portable.py +0 -0
  490. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_repoint_integration.py +0 -0
  491. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_budget_counters.py +0 -0
  492. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_context.py +0 -0
  493. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_drift_marker.py +0 -0
  494. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_drilldown.py +0 -0
  495. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_facts.py +0 -0
  496. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_guessed.py +0 -0
  497. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_ids.py +0 -0
  498. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_integration.py +0 -0
  499. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_membership_generations.py +0 -0
  500. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_membership_index.py +0 -0
  501. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_rank.py +0 -0
  502. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_related_cap.py +0 -0
  503. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_seeds.py +0 -0
  504. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_shown_ids.py +0 -0
  505. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_terminal_evidence.py +0 -0
  506. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_thin_tools.py +0 -0
  507. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_toc.py +0 -0
  508. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_toptier.py +0 -0
  509. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_retrieval_unratified.py +0 -0
  510. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_schema_descriptor.py +0 -0
  511. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_schema_domain.py +0 -0
  512. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_schema_fact.py +0 -0
  513. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_capture_diagnostics.py +0 -0
  514. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_capture_limits.py +0 -0
  515. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_cli_diagnostics.py +0 -0
  516. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_doc_limits.py +0 -0
  517. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_input_limits.py +0 -0
  518. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_mcp_write_diagnostics.py +0 -0
  519. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_numeric_enums.py +0 -0
  520. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_python_shapes.py +0 -0
  521. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_redaction_cursor.py +0 -0
  522. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_validation_errors.py +0 -0
  523. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_security_write_boundary.py +0 -0
  524. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_seed_ladder.py +0 -0
  525. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_seed_paths_portable.py +0 -0
  526. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_add_anchors.py +0 -0
  527. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_anchoring.py +0 -0
  528. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_annotations.py +0 -0
  529. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_argument_names.py +0 -0
  530. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_borrowed_graph.py +0 -0
  531. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_capture.py +0 -0
  532. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_commit_hint.py +0 -0
  533. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_coverage_events.py +0 -0
  534. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_decision_listing.py +0 -0
  535. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_domains.py +0 -0
  536. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_drilldown.py +0 -0
  537. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_facts.py +0 -0
  538. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_find_entity.py +0 -0
  539. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_get_store.py +0 -0
  540. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_get_task_context.py +0 -0
  541. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_graph_freshness.py +0 -0
  542. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_graph_path.py +0 -0
  543. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_import.py +0 -0
  544. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_invocation_policy.py +0 -0
  545. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_mcp_smoke.py +0 -0
  546. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_nearest_anchored.py +0 -0
  547. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_prewrite_anchor_validation.py +0 -0
  548. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_ratify_facts.py +0 -0
  549. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_record_types.py +0 -0
  550. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_redaction.py +0 -0
  551. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_refresh.py +0 -0
  552. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_render_events.py +0 -0
  553. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_result_contract.py +0 -0
  554. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_supersede.py +0 -0
  555. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_sync_anchors.py +0 -0
  556. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_telemetry.py +0 -0
  557. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_thin_tools.py +0 -0
  558. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_tolerant_seeds.py +0 -0
  559. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_server_verify.py +0 -0
  560. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_skill_frontmatter.py +0 -0
  561. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_stats_graph.py +0 -0
  562. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_stats_health.py +0 -0
  563. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_stats_model.py +0 -0
  564. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_stats_render.py +0 -0
  565. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_stats_skill.py +0 -0
  566. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_stats_snapshot.py +0 -0
  567. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_stop_hot_path.py +0 -0
  568. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_stop_rearm.py +0 -0
  569. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store.py +0 -0
  570. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_agent_state.py +0 -0
  571. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_atomic_write_tmp_names.py +0 -0
  572. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_bad_file.py +0 -0
  573. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_binding_index.py +0 -0
  574. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_canonical_stat.py +0 -0
  575. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_compact.py +0 -0
  576. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_coverage_telemetry.py +0 -0
  577. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_cross_process_mutations.py +0 -0
  578. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_derived_community.py +0 -0
  579. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_domain_members.py +0 -0
  580. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_domains.py +0 -0
  581. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_entities.py +0 -0
  582. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_fact_cascade.py +0 -0
  583. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_facts.py +0 -0
  584. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_file_anchor_names.py +0 -0
  585. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_format.py +0 -0
  586. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_format2_load.py +0 -0
  587. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_format2_marker.py +0 -0
  588. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_format2_writes.py +0 -0
  589. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_git_root_symlink.py +0 -0
  590. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_inventory.py +0 -0
  591. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_junctions.py +0 -0
  592. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_marker_checkout.py +0 -0
  593. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_marker_checkout_race.py +0 -0
  594. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_meta.py +0 -0
  595. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_migration.py +0 -0
  596. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_mutation_guard.py +0 -0
  597. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_mutation_immediate.py +0 -0
  598. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_non_file_entries.py +0 -0
  599. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_opens_with_merged_duplicate.py +0 -0
  600. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_persistence.py +0 -0
  601. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_ratification.py +0 -0
  602. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_rebuild_atomicity.py +0 -0
  603. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_record_identity.py +0 -0
  604. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_record_types.py +0 -0
  605. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_render_events.py +0 -0
  606. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_requirement.py +0 -0
  607. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_retrieval.py +0 -0
  608. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_rules.py +0 -0
  609. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_rules_legacy_defaults.py +0 -0
  610. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_slug_conflicts.py +0 -0
  611. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_snapshot_wiring.py +0 -0
  612. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_stamping_marker.py +0 -0
  613. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_symlinks.py +0 -0
  614. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_telemetry.py +0 -0
  615. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_threading.py +0 -0
  616. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_tmp_sweep_age.py +0 -0
  617. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_store_update_meta_if.py +0 -0
  618. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_subagent_start_manifests.py +0 -0
  619. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_subprocess_text_encoding.py +0 -0
  620. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_canonical_writes.py +0 -0
  621. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_clean.py +0 -0
  622. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_domains.py +0 -0
  623. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_drift_cache.py +0 -0
  624. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_drift_stamps.py +0 -0
  625. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_fresh_clone.py +0 -0
  626. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_integration.py +0 -0
  627. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_membership.py +0 -0
  628. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_moved_adoption.py +0 -0
  629. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_rebind.py +0 -0
  630. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_repoint.py +0 -0
  631. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_report_has_findings.py +0 -0
  632. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_run.py +0 -0
  633. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_snapshot_membership.py +0 -0
  634. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_toc_cache.py +0 -0
  635. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_volatile_heal.py +0 -0
  636. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_sync_wiring.py +0 -0
  637. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_telemetry_retention.py +0 -0
  638. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_text_paths.py +0 -0
  639. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_verify_domain_snapshot.py +0 -0
  640. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_verify_format2_against.py +0 -0
  641. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_verify_format2_snapshot.py +0 -0
  642. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_verify_git_framing.py +0 -0
  643. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_verify_git_revisions.py +0 -0
  644. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_verify_git_stdin.py +0 -0
  645. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_verify_snapshot.py +0 -0
  646. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_verify_transitions.py +0 -0
  647. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_viz_asset_packaged.py +0 -0
  648. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_viz_model.py +0 -0
  649. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_viz_render_html.py +0 -0
  650. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_viz_render_json.py +0 -0
  651. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/test_worktree_seeds.py +0 -0
  652. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/wheel_server_trace.py +0 -0
  653. {sidegraph-0.21.0 → sidegraph-0.22.0}/tests/wheel_smoke.py +0 -0
  654. {sidegraph-0.21.0 → sidegraph-0.22.0}/tools/check_no_session_links.py +0 -0
@@ -113,6 +113,15 @@ jobs:
113
113
  - name: Install dependencies
114
114
  run: uv sync --locked
115
115
 
116
+ # The Muse hook adapter runs on the stock macOS python3 (3.9); its test needs a 3.9 here.
117
+ - name: Install Python 3.9 for the Muse adapter test
118
+ run: |
119
+ set -euo pipefail
120
+ uv python install 3.9
121
+ py39="$(uv python find --no-project 3.9)"
122
+ "$py39" -c 'import sys; assert sys.version_info[:2] == (3, 9)'
123
+ echo "SIDEGRAPH_TEST_PY39=$py39" >> "$GITHUB_ENV"
124
+
116
125
  - name: Run tests
117
126
  run: uv run pytest -q --durations=30 --durations-min=1
118
127
 
@@ -7,6 +7,69 @@ interfaces, exactly, and what each one promises: [`docs/reference/stability.md`]
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.22.0] — 2026-10-30
11
+
12
+ ### Changed (Contract change)
13
+
14
+ - **Packed drift checks (0.22.0).** On a format-2 store, `sidegraph-compact` now folds the
15
+ committed scoped drift-check files (`verifications/<id>.json`) into one file,
16
+ `verifications/packed.shard`, and drops dead checks: a check whose decision has a newer check
17
+ or is superseded, rejected or deprecated. A check file folds once it is tracked and
18
+ unmodified against `HEAD`. The first run that packs or drops a check raises
19
+ `requires-sidegraph` to `0.22.0`: 0.17 to 0.21 then refuse the store, and an older pinned
20
+ `sidegraph-verify` reports `requirement-above-verifier`, so move every teammate and CI pin
21
+ first. The dry run says so. `sidegraph-verify` reports `packed-checks-without-requirement`
22
+ and, with `--against`, `packed-check-without-source`; a deleted check is judged per check
23
+ instead of always illegal. Drift-check files now count toward the `maintenance-due` threshold.
24
+ A format-1 store and `sidegraph-migrate` are unchanged. See
25
+ [Scoped drift checks](docs/reference/store-format.md#scoped-drift-checks).
26
+
27
+ ## [0.21.1] — 2026-10-30
28
+
29
+ ### Added
30
+
31
+ - Muse sessions get the Sidegraph session map at start and a memory brief for subagents,
32
+ through two plugin hooks that run on the stock macOS `python3`. Approve the hook
33
+ capabilities with `muse plugins approve sidegraph`.
34
+
35
+ ### Fixed
36
+
37
+ - On Grok Build, records now reach the agent when it reads, searches, edits or writes a file and when
38
+ it starts a subagent. The hook did not recognise Grok's tool names, and resolved a relative
39
+ path against the repository root instead of the directory the session started in; see
40
+ [`docs/integrations/grok.md`](docs/integrations/grok.md).
41
+ - On Grok Build, the hook now starts for shell reads (`sed`, `grep`, `rg`, `cat`), and the Hooks
42
+ tab no longer shows the four `if` errors. The plugin gives Grok its own hooks file without the
43
+ `if` field Grok skips.
44
+ - On Grok Build, every session shared one session key, because Grok names each transcript
45
+ `updates.jsonl`. A file's records reached the agent once across all Grok sessions, and after
46
+ ten files no Grok session got records at all. Each Grok session is now keyed by its own id.
47
+ - Grok Build sessions are attributed to Grok, not to Claude Code: hooks stamp the `grok` host
48
+ family, and MCP calls from Grok are bound to the same session as its hooks. A Grok session
49
+ no longer gets the notice about Claude Code's settings in subdirectories.
50
+ - Grok Build sessions now see the project's session map. Grok drops the SessionStart hook's
51
+ output, so as a workaround the MCP server sends the map as its instructions, to Grok clients
52
+ only; the map carries the domain table of contents but not SessionStart's status lines. It
53
+ goes away once Grok passes hook context to the model.
54
+ - On Grok Build, the Stop hook now asks for a capture once a session has had two prompts: it
55
+ reads Grok's own transcript, ignores the Stop Grok sends when a process exits and on the
56
+ turns Grok starts itself, and never asks in a headless `grok -p` run, where the request would
57
+ be printed into the run's output.
58
+ - On Grok Build, the first `SessionStart` after installing no longer runs out of time: it downloads
59
+ and builds Sidegraph (5–7 seconds measured on its own, about 10 inside Grok), past Grok's
60
+ 5-second default for a hook. The Grok hooks file now gives `SessionStart` 30 seconds and the
61
+ file and subagent hooks 10.
62
+ - Grok Build is no longer marked experimental: with the hooks, the session map and the capture
63
+ request working, the README and the Grok guide list it beside Claude Code and Codex. The Grok
64
+ guide adds what to do when the plugin is disabled, and that under `--sandbox read-only` the
65
+ hooks deliver no records.
66
+ - A malformed line in a session transcript (a `method`, `origin.kind` or `promptSource` that is
67
+ a list or an object) no longer stops the prompt count, which had silently dropped the capture
68
+ reminder for that session.
69
+ - The Muse install and update instructions in the README and the Muse guide now use the
70
+ public marketplace (`muse plugins marketplace add`, `install sidegraph@sidegraph`) instead
71
+ of a maintained local clone of the repository.
72
+
10
73
  ## [0.21.0] — 2026-10-28
11
74
 
12
75
  ### Changed
@@ -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.21.0) — the full loop (capture, ratification, mistakes-first
16
+ Sidegraph is pre-1.0 (v0.22.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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sidegraph
3
- Version: 0.21.0
3
+ Version: 0.22.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
@@ -48,9 +48,10 @@ the files and symbols an agent is working on.
48
48
 
49
49
  Records live in your repository as reviewable JSON files. A derived SQLite index supports
50
50
  retrieval; [Graphify](https://github.com/Graphify-Labs/graphify) supplies the code and document
51
- graph used to anchor records. Claude Code and Codex plugins connect capture and retrieval
52
- to coding sessions. OpenCode V2 and the experimental Muse and Grok Build expose MCP tools and shared skills
53
- for explicit retrieval and capture.
51
+ graph used to anchor records. Claude Code, Codex and Grok Build plugins connect capture and
52
+ retrieval to coding sessions. OpenCode V2 and the experimental Muse expose MCP tools and shared
53
+ skills for explicit retrieval and capture; Muse also receives the session map and a subagent
54
+ brief.
54
55
 
55
56
  - Keep decisions, rejected alternatives, and evidence with their provenance and history.
56
57
  - Hand the agent the relevant mistakes and constraints before it edits, sized to fit its context.
@@ -83,8 +84,7 @@ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | ie
83
84
  ```
84
85
 
85
86
  Linux follows the macOS commands but is not among the checked platforms. Open a new terminal afterwards so `uv` is on your PATH, then change into the root of your
86
- repository (`cd /path/to/your/repo`). Every command below runs there, except the Muse
87
- install, which says otherwise.
87
+ repository (`cd /path/to/your/repo`). Every command below runs there.
88
88
 
89
89
  **Already using Sidegraph?** (New here? Skip to step 1.) Follow the [0.14 migration guide](docs/guides/migrating-to-0.14.md)
90
90
  before upgrading Graphify, so accepted domains keep their membership. Update every client
@@ -148,9 +148,9 @@ Details: [`sidegraph-init`](docs/reference/cli.md#sidegraph-init).
148
148
  |---|---|---|
149
149
  | Claude Code | yes: hooks, capture reminders, context on reads | macOS and Windows |
150
150
  | Codex | yes: hooks, after you approve them | macOS and Windows |
151
- | Muse (experimental) | no: MCP and skills | macOS |
151
+ | Muse (experimental) | partly: session map and subagent brief, after you approve them | macOS |
152
152
  | OpenCode V2 | no: MCP and skills | macOS |
153
- | Grok Build (experimental) | no: MCP and skills | macOS |
153
+ | Grok Build | yes: hooks, capture reminders, context on reads; the session map through the MCP server | macOS |
154
154
 
155
155
  Claude Code is shown first; open the section for another host. Host plugin updates and the
156
156
  MCP runtime are separate: the default runtime follows the public repository's `main`, which
@@ -207,12 +207,14 @@ or later. See the [Codex guide](docs/getting-started/codex-setup.md#keep-the-plu
207
207
  </details>
208
208
 
209
209
  <details>
210
- <summary><strong>Grok Build</strong> (experimental)</summary>
210
+ <summary><strong>Grok Build</strong></summary>
211
211
 
212
- #### Grok Build (experimental)
212
+ #### Grok Build
213
213
 
214
- MCP and skills only; no automatic session map, read context or capture reminder: ask the
215
- agent for context and for capture explicitly. Run in a terminal:
214
+ The plugin brings the MCP tools, the skills and the hooks: records arrive when the agent reads,
215
+ searches, edits or writes a file or starts a subagent, and the agent is reminded to propose
216
+ decisions once a session has done some work. Grok does not pass the `SessionStart` hook's output
217
+ to the model, so the session map comes from the MCP server instead. Run in a terminal:
216
218
 
217
219
  ```sh
218
220
  grok plugin marketplace add SantyagoSeaman/sidegraph
@@ -221,8 +223,9 @@ grok plugin install sidegraph@sidegraph
221
223
 
222
224
  Accept the trust prompt (`--trust` skips it), then start a new Grok session in the repository.
223
225
  Ask the agent which Sidegraph tools it has: `get_task_context` should be among them. Checked
224
- with Grok Build 1.0.62 on macOS: install, MCP tools, skills, and recording and retrieving a
225
- gotcha across two sessions. Windows is not checked. See the [Grok Build guide](docs/integrations/grok.md).
226
+ on macOS with Grok Build 1.0.70 (hooks, session map, capture reminder) and 1.0.62 (install,
227
+ MCP tools, skills, a gotcha recorded in one session and retrieved in the next). Windows is not
228
+ checked. See the [Grok Build guide](docs/integrations/grok.md).
226
229
  For an existing install, run these in your terminal, then start a new session:
227
230
 
228
231
  ```sh
@@ -237,17 +240,17 @@ grok plugin update sidegraph
237
240
 
238
241
  #### Muse (experimental)
239
242
 
240
- MCP and shared skills only; no automatic session map, read context or capture reminder.
241
- Run the install and update commands from the same stable directory outside any project
242
- (for example, your home directory), not from the repository. Keep that checkout with LF line endings:
243
+ MCP, shared skills, a session map at start and a memory brief for subagents; no context on
244
+ reads and no capture reminder. The hooks need `python3` (3.9 or later; the macOS one works).
245
+ Add the marketplace and install the plugin:
243
246
 
244
247
  ```sh
245
- git clone -c core.autocrlf=false https://github.com/SantyagoSeaman/sidegraph.git sidegraph-plugin
246
- muse plugins install ./sidegraph-plugin/plugin/sidegraph
248
+ muse plugins marketplace add sidegraph https://github.com/SantyagoSeaman/sidegraph
249
+ muse plugins install sidegraph@sidegraph
247
250
  muse plugins inspect sidegraph
248
251
  ```
249
252
 
250
- Review the MCP capability, then approve it:
253
+ Review the two hook capabilities and the MCP capability, then approve them:
251
254
 
252
255
  ```sh
253
256
  muse plugins approve sidegraph
@@ -255,10 +258,11 @@ muse plugins approve sidegraph
255
258
 
256
259
  Exit Muse and start a new Muse process from the intended project directory. Restart it there
257
260
  whenever you switch projects; selecting a workspace in a running process is insufficient.
258
- For an existing install, refresh the maintained checkout and inspect the changed capability:
261
+ For an existing install, refresh the marketplace and the plugin, then inspect the changed
262
+ capability:
259
263
 
260
264
  ```sh
261
- git -C sidegraph-plugin pull --ff-only
265
+ muse plugins marketplace update sidegraph
262
266
  muse plugins update sidegraph
263
267
  muse plugins inspect sidegraph
264
268
  ```
@@ -269,9 +273,8 @@ Review changes, then approve and restart Muse from the target project:
269
273
  muse plugins approve sidegraph
270
274
  ```
271
275
 
272
- Basic installation and MCP access were checked on Muse 1.4.7 on macOS; the update command is
273
- supported by native help, with its full lifecycle and Windows not checked. See the
274
- [Muse guide](docs/integrations/muse.md).
276
+ Installation, update, MCP approval, the session map and the subagent brief were checked on
277
+ Muse 1.4.14 on macOS; Windows is not checked. See the [Muse guide](docs/integrations/muse.md).
275
278
 
276
279
  </details>
277
280
 
@@ -388,8 +391,9 @@ evaluate it on your own repository.
388
391
  ## How it works
389
392
 
390
393
  1. **Capture.** During a session the agent saves a decision when you ask for one. At the end of
391
- a Claude Code or Codex session the plugin reminds it to propose decisions worth keeping.
392
- In OpenCode, Muse and Grok Build, ask for capture explicitly. Known secret patterns are redacted before storage (best effort).
394
+ a Claude Code, Codex or Grok Build session the plugin reminds it to propose decisions worth
395
+ keeping (on Grok Build in interactive sessions only). In OpenCode and Muse, ask for capture
396
+ explicitly. Known secret patterns are redacted before storage (best effort).
393
397
  2. **Review.** You accept or drop what the agent proposed; Sidegraph calls this *ratifying*.
394
398
  Records are JSON in `.sidegraph/`, committed with your code: one file per record, or lines
395
399
  in shard files once maintenance has packed them.
@@ -15,9 +15,10 @@ the files and symbols an agent is working on.
15
15
 
16
16
  Records live in your repository as reviewable JSON files. A derived SQLite index supports
17
17
  retrieval; [Graphify](https://github.com/Graphify-Labs/graphify) supplies the code and document
18
- graph used to anchor records. Claude Code and Codex plugins connect capture and retrieval
19
- to coding sessions. OpenCode V2 and the experimental Muse and Grok Build expose MCP tools and shared skills
20
- for explicit retrieval and capture.
18
+ graph used to anchor records. Claude Code, Codex and Grok Build plugins connect capture and
19
+ retrieval to coding sessions. OpenCode V2 and the experimental Muse expose MCP tools and shared
20
+ skills for explicit retrieval and capture; Muse also receives the session map and a subagent
21
+ brief.
21
22
 
22
23
  - Keep decisions, rejected alternatives, and evidence with their provenance and history.
23
24
  - Hand the agent the relevant mistakes and constraints before it edits, sized to fit its context.
@@ -50,8 +51,7 @@ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | ie
50
51
  ```
51
52
 
52
53
  Linux follows the macOS commands but is not among the checked platforms. Open a new terminal afterwards so `uv` is on your PATH, then change into the root of your
53
- repository (`cd /path/to/your/repo`). Every command below runs there, except the Muse
54
- install, which says otherwise.
54
+ repository (`cd /path/to/your/repo`). Every command below runs there.
55
55
 
56
56
  **Already using Sidegraph?** (New here? Skip to step 1.) Follow the [0.14 migration guide](docs/guides/migrating-to-0.14.md)
57
57
  before upgrading Graphify, so accepted domains keep their membership. Update every client
@@ -115,9 +115,9 @@ Details: [`sidegraph-init`](docs/reference/cli.md#sidegraph-init).
115
115
  |---|---|---|
116
116
  | Claude Code | yes: hooks, capture reminders, context on reads | macOS and Windows |
117
117
  | Codex | yes: hooks, after you approve them | macOS and Windows |
118
- | Muse (experimental) | no: MCP and skills | macOS |
118
+ | Muse (experimental) | partly: session map and subagent brief, after you approve them | macOS |
119
119
  | OpenCode V2 | no: MCP and skills | macOS |
120
- | Grok Build (experimental) | no: MCP and skills | macOS |
120
+ | Grok Build | yes: hooks, capture reminders, context on reads; the session map through the MCP server | macOS |
121
121
 
122
122
  Claude Code is shown first; open the section for another host. Host plugin updates and the
123
123
  MCP runtime are separate: the default runtime follows the public repository's `main`, which
@@ -174,12 +174,14 @@ or later. See the [Codex guide](docs/getting-started/codex-setup.md#keep-the-plu
174
174
  </details>
175
175
 
176
176
  <details>
177
- <summary><strong>Grok Build</strong> (experimental)</summary>
177
+ <summary><strong>Grok Build</strong></summary>
178
178
 
179
- #### Grok Build (experimental)
179
+ #### Grok Build
180
180
 
181
- MCP and skills only; no automatic session map, read context or capture reminder: ask the
182
- agent for context and for capture explicitly. Run in a terminal:
181
+ The plugin brings the MCP tools, the skills and the hooks: records arrive when the agent reads,
182
+ searches, edits or writes a file or starts a subagent, and the agent is reminded to propose
183
+ decisions once a session has done some work. Grok does not pass the `SessionStart` hook's output
184
+ to the model, so the session map comes from the MCP server instead. Run in a terminal:
183
185
 
184
186
  ```sh
185
187
  grok plugin marketplace add SantyagoSeaman/sidegraph
@@ -188,8 +190,9 @@ grok plugin install sidegraph@sidegraph
188
190
 
189
191
  Accept the trust prompt (`--trust` skips it), then start a new Grok session in the repository.
190
192
  Ask the agent which Sidegraph tools it has: `get_task_context` should be among them. Checked
191
- with Grok Build 1.0.62 on macOS: install, MCP tools, skills, and recording and retrieving a
192
- gotcha across two sessions. Windows is not checked. See the [Grok Build guide](docs/integrations/grok.md).
193
+ on macOS with Grok Build 1.0.70 (hooks, session map, capture reminder) and 1.0.62 (install,
194
+ MCP tools, skills, a gotcha recorded in one session and retrieved in the next). Windows is not
195
+ checked. See the [Grok Build guide](docs/integrations/grok.md).
193
196
  For an existing install, run these in your terminal, then start a new session:
194
197
 
195
198
  ```sh
@@ -204,17 +207,17 @@ grok plugin update sidegraph
204
207
 
205
208
  #### Muse (experimental)
206
209
 
207
- MCP and shared skills only; no automatic session map, read context or capture reminder.
208
- Run the install and update commands from the same stable directory outside any project
209
- (for example, your home directory), not from the repository. Keep that checkout with LF line endings:
210
+ MCP, shared skills, a session map at start and a memory brief for subagents; no context on
211
+ reads and no capture reminder. The hooks need `python3` (3.9 or later; the macOS one works).
212
+ Add the marketplace and install the plugin:
210
213
 
211
214
  ```sh
212
- git clone -c core.autocrlf=false https://github.com/SantyagoSeaman/sidegraph.git sidegraph-plugin
213
- muse plugins install ./sidegraph-plugin/plugin/sidegraph
215
+ muse plugins marketplace add sidegraph https://github.com/SantyagoSeaman/sidegraph
216
+ muse plugins install sidegraph@sidegraph
214
217
  muse plugins inspect sidegraph
215
218
  ```
216
219
 
217
- Review the MCP capability, then approve it:
220
+ Review the two hook capabilities and the MCP capability, then approve them:
218
221
 
219
222
  ```sh
220
223
  muse plugins approve sidegraph
@@ -222,10 +225,11 @@ muse plugins approve sidegraph
222
225
 
223
226
  Exit Muse and start a new Muse process from the intended project directory. Restart it there
224
227
  whenever you switch projects; selecting a workspace in a running process is insufficient.
225
- For an existing install, refresh the maintained checkout and inspect the changed capability:
228
+ For an existing install, refresh the marketplace and the plugin, then inspect the changed
229
+ capability:
226
230
 
227
231
  ```sh
228
- git -C sidegraph-plugin pull --ff-only
232
+ muse plugins marketplace update sidegraph
229
233
  muse plugins update sidegraph
230
234
  muse plugins inspect sidegraph
231
235
  ```
@@ -236,9 +240,8 @@ Review changes, then approve and restart Muse from the target project:
236
240
  muse plugins approve sidegraph
237
241
  ```
238
242
 
239
- Basic installation and MCP access were checked on Muse 1.4.7 on macOS; the update command is
240
- supported by native help, with its full lifecycle and Windows not checked. See the
241
- [Muse guide](docs/integrations/muse.md).
243
+ Installation, update, MCP approval, the session map and the subagent brief were checked on
244
+ Muse 1.4.14 on macOS; Windows is not checked. See the [Muse guide](docs/integrations/muse.md).
242
245
 
243
246
  </details>
244
247
 
@@ -355,8 +358,9 @@ evaluate it on your own repository.
355
358
  ## How it works
356
359
 
357
360
  1. **Capture.** During a session the agent saves a decision when you ask for one. At the end of
358
- a Claude Code or Codex session the plugin reminds it to propose decisions worth keeping.
359
- In OpenCode, Muse and Grok Build, ask for capture explicitly. Known secret patterns are redacted before storage (best effort).
361
+ a Claude Code, Codex or Grok Build session the plugin reminds it to propose decisions worth
362
+ keeping (on Grok Build in interactive sessions only). In OpenCode and Muse, ask for capture
363
+ explicitly. Known secret patterns are redacted before storage (best effort).
360
364
  2. **Review.** You accept or drop what the agent proposed; Sidegraph calls this *ratifying*.
361
365
  Records are JSON in `.sidegraph/`, committed with your code: one file per record, or lines
362
366
  in shard files once maintenance has packed them.
@@ -8,10 +8,10 @@ agent.
8
8
 
9
9
  1. [Install Sidegraph and Graphify](getting-started/installation.md).
10
10
  2. Follow the [end-to-end quickstart](getting-started/quickstart.md).
11
- 3. Use the recommended host path for [Claude Code](getting-started/claude-code-setup.md) or
12
- [Codex](getting-started/codex-setup.md), or the MCP/skills-only paths for
13
- [OpenCode V2](../.opencode/INSTALL.md), experimental [Muse](integrations/muse.md) and experimental
14
- [Grok Build](integrations/grok.md).
11
+ 3. Use the recommended host path for [Claude Code](getting-started/claude-code-setup.md),
12
+ [Codex](getting-started/codex-setup.md) or [Grok Build](integrations/grok.md), or the narrower
13
+ paths for [OpenCode V2](../.opencode/INSTALL.md) (MCP and skills) and experimental
14
+ [Muse](integrations/muse.md) (MCP, skills, the session map and a subagent brief).
15
15
  4. Run the [four-case verification checklist](guides/verifying-your-setup.md).
16
16
 
17
17
  If the repository already has ADRs or specs, use the
@@ -62,4 +62,4 @@ it is optional background on evidence, limits, and repository fit.
62
62
  - [Git bindings](reference/git-bindings.md)
63
63
  - Integrations: [Claude Code](integrations/claude-code.md),
64
64
  [Codex](integrations/codex.md), [OpenCode V2](integrations/opencode.md),
65
- experimental [Muse](integrations/muse.md), experimental [Grok Build](integrations/grok.md), [Graphify](integrations/graphify.md)
65
+ experimental [Muse](integrations/muse.md), [Grok Build](integrations/grok.md), [Graphify](integrations/graphify.md)
@@ -295,17 +295,19 @@ The `Initiative` model below is a separate low-level persisted record supported
295
295
 
296
296
  ## `DriftCheck` — attributed auxiliary inspection
297
297
 
298
- An optional immutable file under `.sidegraph/verifications/` records an explicit agent
298
+ An optional file under `.sidegraph/verifications/` records an explicit agent
299
299
  judgment that an existing decision still holds. It preserves the decision and original
300
300
  capture provenance; it never ratifies a proposal or proves semantic truth. It is outside
301
- the shared canonical digest/index record tables. See
301
+ the shared canonical digest/index record tables. A check file is never edited, but on a
302
+ format-2 store `sidegraph-compact` may pack it into `verifications/packed.shard` (the same JSON
303
+ body, one line) and drop it once it is dead: its decision has a newer check or is retired. See
302
304
  [scoped checks](../reference/store-format.md#scoped-drift-checks) and
303
305
  [`record_drift_check`](../reference/mcp-tools.md#record_drift_check).
304
306
 
305
307
  | Field | Type | Meaning |
306
308
  |---|---|---|
307
309
  | `schema_version` | literal `1` | Version of the auxiliary assertion and fixed subject-digest definition; independent of the store format version. |
308
- | `id` | ULID | Generated check identity, also its immutable filename. Highest generated id is the deterministic per-decision selection rule, not causal ordering. |
310
+ | `id` | ULID | Generated check identity, also its immutable filename (or, once packed, its line's key). Highest generated id is the deterministic per-decision selection rule, not causal ordering. |
309
311
  | `decision_id` | str | Existing decision id; terminal or archived decisions remain valid history references. |
310
312
  | `checked_at` | aware datetime | UTC time at which the assertion was recorded. |
311
313
  | `checked_commit` | str | Full inspected Git HEAD object id, retained as provenance even after squash/clone removes the object locally. |
@@ -9,9 +9,11 @@ file- and domain-linked records without a graph; the complete workflow below ins
9
9
  - **Python 3.13+** for Sidegraph (`.python-version` pins it).
10
10
  - **Python 3.10+** for Graphify.
11
11
  - [`uv`](https://docs.astral.sh/uv/) — used to install and run both.
12
- - For automatic session integration: [Claude Code](claude-code-setup.md) or
13
- [Codex](codex-setup.md). [OpenCode V2](../../.opencode/INSTALL.md) and experimental
14
- [Muse](../integrations/muse.md) provide MCP tools and shared skills without lifecycle hooks.
12
+ - For automatic session integration: [Claude Code](claude-code-setup.md),
13
+ [Codex](codex-setup.md) or [Grok Build](../integrations/grok.md).
14
+ [OpenCode V2](../../.opencode/INSTALL.md) provides MCP tools and shared skills without
15
+ lifecycle hooks; experimental [Muse](../integrations/muse.md) adds the session map and a
16
+ subagent brief through two hooks.
15
17
  Other stdio MCP clients can call the tools directly; the CLI also works without a host.
16
18
 
17
19
  ### Platform coverage
@@ -37,8 +39,8 @@ above, including a Windows 3.14 cell with PowerShell 7 unavailable for preflight
37
39
  real host sessions. Windows 3.13 retains PowerShell 7; its launcher checks also cover 5.1.
38
40
  Stable publication of 0.14.0 required the full gate to pass without a known-issue exception.
39
41
  The README's blue badges summarize release acceptance, rather than live workflow status or
40
- support for every published version. Muse and OpenCode have the narrower coverage in
41
- their installation guides and are outside this native matrix.
42
+ support for every published version. Muse, OpenCode and Grok Build have the narrower
43
+ coverage in their installation guides and are outside this native matrix.
42
44
 
43
45
  On native Windows, the Claude Code hooks run through Git Bash, which comes with Git for
44
46
  Windows; the MCP launchers and the Codex hooks need no POSIX shell. The native checks run
@@ -215,8 +217,10 @@ keep `sidegraph@sidegraph`; update cached assets with the host's native update c
215
217
  then start a new session and review any changed approvals. The runtime's `@main` does not
216
218
  refresh cached skills or manifests. OpenCode V2 uses the
217
219
  [canonical Git package guide](../../.opencode/INSTALL.md). Experimental
218
- [Muse](../integrations/muse.md) supplies MCP/skills only and must be restarted from the
219
- intended project when switching workspaces; expanded native acceptance is deferred.
220
+ [Muse](../integrations/muse.md) supplies MCP, skills, the session map and a subagent brief,
221
+ and must be restarted from the intended project when switching workspaces; expanded native
222
+ acceptance is deferred. Grok Build installs from its own plugin marketplace; see the
223
+ [Grok Build guide](../integrations/grok.md).
220
224
 
221
225
  ### Option C — uvx directly from git
222
226
 
@@ -33,7 +33,8 @@ creates the repo-committed `.sidegraph/` record directories and a gitignored der
33
33
 
34
34
  Run `sidegraph-init` from the repository root before starting your host session. On Claude Code and Codex, without a
35
35
  store, SessionStart shows setup guidance and Stop stays silent; neither creates one.
36
- OpenCode and Muse use explicit MCP calls instead of lifecycle hooks. If an
36
+ OpenCode uses explicit MCP calls instead of lifecycle hooks, and Muse has no `Stop` hook. On
37
+ Grok Build the setup guidance appears only in Grok's own interface, not to the agent. If an
37
38
  older hook already left an empty store, init identifies it as empty and prints setup guidance.
38
39
 
39
40
  In a terminal, `sidegraph-init` asks two questions. Both default to yes, so pressing Enter twice
@@ -74,8 +75,9 @@ codex plugin add sidegraph@sidegraph
74
75
 
75
76
  Start a new interactive session in the repository and review its approval prompts; Codex
76
77
  hooks require explicit trust through the startup warning or `/hooks`. For OpenCode V2, use
77
- the [native Git installation guide](../../.opencode/INSTALL.md); for experimental MCP/skills-only
78
- Muse, use the [Muse guide](../integrations/muse.md) and start its process in this project.
78
+ the [native Git installation guide](../../.opencode/INSTALL.md); for experimental
79
+ Muse, use the [Muse guide](../integrations/muse.md) and start its process in this project; for
80
+ Grok Build, use the [Grok Build guide](../integrations/grok.md).
79
81
  The [README host recipes](../../README.md#claude-code) describe installation and updates. For a
80
82
  manual or source-checkout setup, use the host-specific page:
81
83
  [Claude Code](claude-code-setup.md) or [Codex](codex-setup.md).
@@ -131,5 +133,6 @@ alone and only installs the graph hook.
131
133
 
132
134
  Next, run the short
133
135
  [verification checklist](../guides/verifying-your-setup.md), then
134
- [name domains](../guides/naming-your-domains.md) if you want a table of contents of your memory. Claude Code and Codex also inject it at
135
- SessionStart; OpenCode and Muse retrieve it explicitly through MCP.
136
+ [name domains](../guides/naming-your-domains.md) if you want a table of contents of your memory. Claude Code, Codex and Muse also inject it at
137
+ SessionStart; Grok Build receives it through the MCP server's instructions; OpenCode retrieves it
138
+ explicitly through MCP.
@@ -420,5 +420,11 @@ drafts. Proposed content stays below accepted memory and may be hidden by regula
420
420
 
421
421
  Scoped drift checks are committed auxiliary history under `.sidegraph/verifications/`.
422
422
  Use the current `sidegraph-verify` for their schema/reference checks and write-once
423
- `--against` enforcement; older verifiers ignore them. CI should not create semantic
423
+ `--against` enforcement; older verifiers ignore them. On a format-2 store
424
+ `sidegraph-compact` folds them into `verifications/packed.shard` and drops dead ones, and the
425
+ first such run raises the store's requirement to 0.22.0: move the CI pin to 0.22.0 or newer
426
+ before that pull request merges, or a pinned older `sidegraph-verify` fails with
427
+ `requirement-above-verifier`. `--against` accepts a fold only when each line equals a check
428
+ already on the target branch (`packed-check-without-source`), so land newly recorded checks
429
+ before folding them. CI should not create semantic
424
430
  inspection assertions automatically merely to obtain fewer drift warnings.
@@ -126,7 +126,7 @@ Maintenance only folds a file that has been on your branch for at least **7 days
126
126
  with `--settled-days`), runs on the default branch, and never commits. The 7-day window exists
127
127
  so that a record still being ratified or edited stays a plain file where merges handle it
128
128
  well. After a run, commit `.sidegraph/` in a pull request. Both SessionStart and
129
- `sidegraph-doctor` say when maintenance is due: more than 200 per-record files, a legacy
129
+ `sidegraph-doctor` say when maintenance is due: more than 200 per-record files (drift-check files count), a legacy
130
130
  `archive/` segment that maintenance would delete, a shard line in the wrong shard file or
131
131
  repeated, or a stray shard file.
132
132
 
@@ -168,7 +168,9 @@ survivor and retire the other:
168
168
 
169
169
  In a packed (format 2) store, `sidegraph-compact` is maintenance: it folds per-record files that
170
170
  have settled (landed on the default branch at least seven days ago) into the shard files, byte
171
- for byte, and deletes a file only once a shard line holds its exact content. It runs on the
171
+ for byte, and deletes a file only once a shard line holds its exact content. It also folds scoped
172
+ drift-check files into `verifications/packed.shard`, drops dead ones, and on the first such run
173
+ raises the store's minimum version to 0.22.0 for the whole team. It runs on the
172
174
  default branch and never commits, so review and commit the result in a pull request. See
173
175
  [`reference/cli.md`](../reference/cli.md#sidegraph-compact) and the
174
176
  [0.17 migration guide](migrating-to-0.17.md). The rest of this section describes the
@@ -329,7 +329,7 @@ has nothing to migrate and says nothing. Doctor lists one finding at the store p
329
329
 
330
330
  ### maintenance-due
331
331
 
332
- A packed (format 2) store has work for `sidegraph-compact`: more than 200 per-record files, a
332
+ A packed (format 2) store has work for `sidegraph-compact`: more than 200 per-record files (drift-check files count), a
333
333
  legacy `archive/` segment that maintenance would delete, a shard line in the wrong shard file or
334
334
  repeated with an equal body, or a stray shard file. Nothing is broken, and `sidegraph-verify`
335
335
  does not report these states. A segment that stays because one of its lines is not safe to
@@ -337,7 +337,7 @@ delete does not count. Run `sidegraph-compact` on the default branch. Doctor lis
337
337
  at the store path; `--check` reports it but does not exit `2` on it. A legacy segment that maintenance would delete counts, whether its records are already in shard
338
338
  lines or maintenance would pack them. The check does not consult git, so a record file that
339
339
  still has to settle (or is untracked) is not predicted. It reads the shard files once; a store
340
- with more than 200 per-record files is decided from the directory listing.
340
+ with more than 200 per-record files (drift-check files included) is decided from the directory listing.
341
341
 
342
342
  ### version-skew
343
343
 
@@ -20,12 +20,16 @@ you can drop the prefix and use the bare `sidegraph-*` names.
20
20
  **Success:** the tool is available and returns either task context or `No context found.` A
21
21
  missing record is fine; a trailing `## No code graph` block means the code graph is missing or not
22
22
  readable (build it with `graphify update .`, or fix its permissions), not that the wiring failed. “Unknown tool”, a different repository's
23
- records, or a silent SessionStart hook is not fine. For Codex, confirm hook trust before debugging the JSON.
23
+ records, or a silent SessionStart hook is not fine. For Codex, confirm hook trust before debugging the JSON. On Grok Build
24
+ the opening map comes from the MCP server rather than the hook; it is there before the first
25
+ answer, unless the server started slowly, when it arrives after the first tool call (see the [Grok Build guide](../integrations/grok.md)); on Muse, approve the hooks
26
+ first (see the [Muse guide](../integrations/muse.md)).
24
27
 
25
28
  If this fails, compare the resolved paths with
26
29
  [Configuration](../reference/configuration.md#store-path-resolution) and the relevant host
27
- page: [Claude Code](../getting-started/claude-code-setup.md) or
28
- [Codex](../getting-started/codex-setup.md).
30
+ page: [Claude Code](../getting-started/claude-code-setup.md),
31
+ [Codex](../getting-started/codex-setup.md), [Grok Build](../integrations/grok.md) or
32
+ [Muse](../integrations/muse.md).
29
33
 
30
34
  ## Case 2 — Durable capture and retrieval
31
35