sidegraph 0.22.0__tar.gz → 0.23.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 (656) hide show
  1. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/ISSUE_TEMPLATE/config.yml +1 -1
  2. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/workflows/ci.yml +7 -7
  3. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/workflows/publish.yml +4 -4
  4. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/workflows/scorecard.yml +2 -2
  5. sidegraph-0.23.0/AGENTS.md +71 -0
  6. {sidegraph-0.22.0 → sidegraph-0.23.0}/CHANGELOG.md +109 -46
  7. {sidegraph-0.22.0 → sidegraph-0.23.0}/CLAUDE.md +22 -15
  8. {sidegraph-0.22.0 → sidegraph-0.23.0}/CODE_OF_CONDUCT.md +7 -6
  9. {sidegraph-0.22.0 → sidegraph-0.23.0}/CONTRIBUTING.md +45 -30
  10. sidegraph-0.23.0/PKG-INFO +342 -0
  11. sidegraph-0.23.0/README.md +307 -0
  12. sidegraph-0.23.0/SECURITY.md +130 -0
  13. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/README.md +3 -2
  14. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/data-model.md +11 -7
  15. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/mind-model.md +4 -2
  16. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/retrieval.md +4 -2
  17. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/bootstrap.md +1 -1
  18. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/claude-code-setup.md +12 -11
  19. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/codex-setup.md +16 -9
  20. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/installation.md +251 -53
  21. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/quickstart.md +28 -21
  22. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/capturing-decisions.md +11 -8
  23. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/ci-cd-maintenance.md +30 -17
  24. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/health-check.md +1 -1
  25. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/naming-your-domains.md +7 -4
  26. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/retrieval-in-sessions.md +12 -5
  27. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/semantic-docs.md +13 -9
  28. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/team-workflow.md +25 -7
  29. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/troubleshooting.md +1 -0
  30. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/verifying-your-setup.md +2 -1
  31. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/claude-code.md +8 -7
  32. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/codex.md +16 -9
  33. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/graphify.md +11 -7
  34. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/muse.md +8 -6
  35. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/llms.txt +4 -3
  36. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/README.md +9 -3
  37. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/cli.md +16 -10
  38. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/configuration.md +1 -1
  39. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/git-bindings.md +2 -1
  40. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/hooks.md +25 -3
  41. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/mcp-tools.md +22 -12
  42. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/operations.md +5 -5
  43. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/releasing.md +3 -1
  44. sidegraph-0.23.0/docs/reference/security-internals.md +129 -0
  45. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/store-format.md +5 -3
  46. {sidegraph-0.22.0 → sidegraph-0.23.0}/package.json +1 -1
  47. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.claude-plugin/plugin.json +1 -1
  48. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.codex-plugin/plugin.json +1 -1
  49. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.grok-plugin/plugin.json +1 -1
  50. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.muse-plugin/plugin.json +1 -1
  51. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/explain-why/SKILL.md +2 -1
  52. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/heal-anchors/SKILL.md +13 -12
  53. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +1 -1
  54. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/record-decision/SKILL.md +10 -8
  55. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/record-fact/SKILL.md +1 -1
  56. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/setup/SKILL.md +24 -4
  57. {sidegraph-0.22.0 → sidegraph-0.23.0}/pyproject.toml +3 -1
  58. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/__init__.py +1 -1
  59. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/capture.py +26 -10
  60. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/check_fold.py +8 -3
  61. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/server.py +16 -4
  62. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bounded_listings.py +91 -0
  63. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_neighbors.py +60 -0
  64. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_check_fold_plan.py +13 -0
  65. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_check_fold_publish.py +28 -0
  66. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_docs_claims.py +86 -11
  67. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_graphify_pin.py +1 -1
  68. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_muse_plugin.py +1 -1
  69. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_input_limits.py +1 -1
  70. {sidegraph-0.22.0 → sidegraph-0.23.0}/uv.lock +11 -7
  71. sidegraph-0.22.0/AGENTS.md +0 -80
  72. sidegraph-0.22.0/PKG-INFO +0 -532
  73. sidegraph-0.22.0/README.md +0 -499
  74. sidegraph-0.22.0/SECURITY.md +0 -217
  75. {sidegraph-0.22.0 → sidegraph-0.23.0}/.agents/plugins/marketplace.json +0 -0
  76. {sidegraph-0.22.0 → sidegraph-0.23.0}/.claude-plugin/marketplace.json +0 -0
  77. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/CODEOWNERS +0 -0
  78. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  79. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  80. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  81. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/secret_scanning.yml +0 -0
  82. {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/workflows/session-link-gate.yml +0 -0
  83. {sidegraph-0.22.0 → sidegraph-0.23.0}/.gitignore +0 -0
  84. {sidegraph-0.22.0 → sidegraph-0.23.0}/.gitleaks.toml +0 -0
  85. {sidegraph-0.22.0 → sidegraph-0.23.0}/.opencode/INSTALL.md +0 -0
  86. {sidegraph-0.22.0 → sidegraph-0.23.0}/.pre-commit-config.yaml +0 -0
  87. {sidegraph-0.22.0 → sidegraph-0.23.0}/.python-version +0 -0
  88. {sidegraph-0.22.0 → sidegraph-0.23.0}/LICENSE +0 -0
  89. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/anchoring.md +0 -0
  90. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/decision-memory.md +0 -0
  91. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/adr-export.md +0 -0
  92. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/migrating-to-0.14.md +0 -0
  93. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/migrating-to-0.17.md +0 -0
  94. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/surviving-refactors.md +0 -0
  95. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/using-0.15.md +0 -0
  96. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/using-0.16.md +0 -0
  97. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/grok.md +0 -0
  98. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/opencode.md +0 -0
  99. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/corpus_fit.py +0 -0
  100. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/judge-prompt.md +0 -0
  101. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/questions-prompt.md +0 -0
  102. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/rubric-template.md +0 -0
  103. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/stability.md +0 -0
  104. {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/whitepaper/index.md +0 -0
  105. {sidegraph-0.22.0 → sidegraph-0.23.0}/index.js +0 -0
  106. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.mcp.json +0 -0
  107. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/codex/hooks.json +0 -0
  108. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/codex/mcp.json +0 -0
  109. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/grok/hooks.json +0 -0
  110. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/hooks/hooks.json +0 -0
  111. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/muse/hook.py +0 -0
  112. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/muse/session_start.py +0 -0
  113. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/muse/subagent_start.py +0 -0
  114. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
  115. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
  116. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/compact/SKILL.md +0 -0
  117. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/compact/agents/openai.yaml +0 -0
  118. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
  119. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
  120. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/health-check/SKILL.md +0 -0
  121. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/health-check/agents/openai.yaml +0 -0
  122. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/health-check/scripts/collect.py +0 -0
  123. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/import-adrs/SKILL.md +0 -0
  124. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/import-adrs/agents/openai.yaml +0 -0
  125. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/manage-domains/SKILL.md +0 -0
  126. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/manage-domains/agents/openai.yaml +0 -0
  127. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/name-domains/SKILL.md +0 -0
  128. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/name-domains/agents/openai.yaml +0 -0
  129. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
  130. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
  131. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
  132. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/setup/agents/openai.yaml +0 -0
  133. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
  134. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/stats/agents/openai.yaml +0 -0
  135. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/triage-drift/SKILL.md +0 -0
  136. {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
  137. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/adr.py +0 -0
  138. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/adr_cli.py +0 -0
  139. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/adr_files.py +0 -0
  140. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/adr_identity.py +0 -0
  141. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/anchoring.py +0 -0
  142. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bash_paths.py +0 -0
  143. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/__init__.py +0 -0
  144. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/apply.py +0 -0
  145. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/catalog.py +0 -0
  146. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/cli.py +0 -0
  147. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/integrations.py +0 -0
  148. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/model.py +0 -0
  149. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/planner.py +0 -0
  150. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/proof.py +0 -0
  151. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/review.py +0 -0
  152. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/scan.py +0 -0
  153. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/checkout_window.py +0 -0
  154. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/cli.py +0 -0
  155. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/config.py +0 -0
  156. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/delivery.py +0 -0
  157. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/doc_import.py +0 -0
  158. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/doctor.py +0 -0
  159. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/domain_snapshot.py +0 -0
  160. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/domains.py +0 -0
  161. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/drift_checks.py +0 -0
  162. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/drift_groups.py +0 -0
  163. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/engine/__init__.py +0 -0
  164. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/engine/rationale.py +0 -0
  165. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/engine/reader.py +0 -0
  166. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/freshness.py +0 -0
  167. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/gitenv.py +0 -0
  168. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/githooks.py +0 -0
  169. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/gitio.py +0 -0
  170. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/__init__.py +0 -0
  171. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/claude_settings.py +0 -0
  172. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/diagnostics.py +0 -0
  173. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/hooks.py +0 -0
  174. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/launch.py +0 -0
  175. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/mcp_entry.py +0 -0
  176. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/session_identity.py +0 -0
  177. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/subagent.py +0 -0
  178. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/hot_index.py +0 -0
  179. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/importer.py +0 -0
  180. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/input_limits.py +0 -0
  181. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/integrity.py +0 -0
  182. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/maintenance.py +0 -0
  183. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/maintenance_clock.py +0 -0
  184. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/md_sections.py +0 -0
  185. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/migrate.py +0 -0
  186. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/nearest_anchored.py +0 -0
  187. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/okf.py +0 -0
  188. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/profiles.py +0 -0
  189. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/redaction_scan.py +0 -0
  190. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/redaction_tokens.py +0 -0
  191. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/retrieval.py +0 -0
  192. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/schema.py +0 -0
  193. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/seed_ladder.py +0 -0
  194. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/stats/__init__.py +0 -0
  195. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/stats/model.py +0 -0
  196. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/stats/render.py +0 -0
  197. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store.py +0 -0
  198. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store_format.py +0 -0
  199. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store_layout.py +0 -0
  200. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store_rules.py +0 -0
  201. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store_view.py +0 -0
  202. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/sync.py +0 -0
  203. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/text_paths.py +0 -0
  204. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/tool_rate_limit.py +0 -0
  205. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/validation_errors.py +0 -0
  206. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/verify.py +0 -0
  207. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/__init__.py +0 -0
  208. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
  209. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/model.py +0 -0
  210. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/render.py +0 -0
  211. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/template.html +0 -0
  212. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/worktree_seeds.py +0 -0
  213. {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/write_boundary.py +0 -0
  214. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/__init__.py +0 -0
  215. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/bounded_listings_support.py +0 -0
  216. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/conftest.py +0 -0
  217. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/drift_checks_support.py +0 -0
  218. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/drift_groups_support.py +0 -0
  219. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
  220. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bitfinex_slice.json +0 -0
  221. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
  222. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
  223. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
  224. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
  225. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
  226. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/graph.json +0 -0
  227. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
  228. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
  229. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
  230. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
  231. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
  232. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
  233. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/openspec/_provenance.json +0 -0
  234. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/openspec/graph.json +0 -0
  235. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/self-corpus/_provenance.json +0 -0
  236. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +0 -0
  237. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/self-corpus/graph.json +0 -0
  238. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
  239. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
  240. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/.memlog.md +0 -0
  241. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/ARCHITECTURE-SPINE.md +0 -0
  242. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/prds/prd-payments-2026-07-30/prd.md +0 -0
  243. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
  244. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/sad.md +0 -0
  245. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
  246. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
  247. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
  248. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/design-empty.md +0 -0
  249. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
  250. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
  251. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/design.md +0 -0
  252. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
  253. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/proposal.md +0 -0
  254. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
  255. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
  256. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
  257. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
  258. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/design.md +0 -0
  259. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/proposal.md +0 -0
  260. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
  261. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
  262. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/spec-kit/plan.md +0 -0
  263. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
  264. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
  265. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
  266. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
  267. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/member_names_python_graph.json +0 -0
  268. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/member_names_swift_graph.json +0 -0
  269. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/mini_graph.json +0 -0
  270. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/githooks_legacy_helper.py +0 -0
  271. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/githooks_support.py +0 -0
  272. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/graph_fixtures.py +0 -0
  273. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/graph_repo_support.py +0 -0
  274. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/membership_support.py +0 -0
  275. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/moved_adoption_support.py +0 -0
  276. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/opencode_plugin_runner.mjs +0 -0
  277. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/snapshot_support.py +0 -0
  278. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/store_format2_support.py +0 -0
  279. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/store_non_file_support.py +0 -0
  280. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/store_record_support.py +0 -0
  281. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_adr.py +0 -0
  282. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_adr_files.py +0 -0
  283. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_adr_identity.py +0 -0
  284. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_agent_brief_manifests.py +0 -0
  285. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchor_descriptor.py +0 -0
  286. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchor_paths.py +0 -0
  287. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchoring.py +0 -0
  288. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchoring_mapping_refresh.py +0 -0
  289. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchoring_membership.py +0 -0
  290. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bash_paths.py +0 -0
  291. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_batch_panel_fixes.py +0 -0
  292. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_apply.py +0 -0
  293. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_catalog.py +0 -0
  294. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_cli.py +0 -0
  295. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
  296. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_integrations.py +0 -0
  297. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_model.py +0 -0
  298. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_planner.py +0 -0
  299. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_proof.py +0 -0
  300. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_review.py +0 -0
  301. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_scan.py +0 -0
  302. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_scan_regular.py +0 -0
  303. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_unanchored.py +0 -0
  304. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_auto_accept.py +0 -0
  305. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_facts.py +0 -0
  306. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_initiative.py +0 -0
  307. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_integration.py +0 -0
  308. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_propose.py +0 -0
  309. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_redact.py +0 -0
  310. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_check_fold_wiring.py +0 -0
  311. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_checkout_window.py +0 -0
  312. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_ci_workflow.py +0 -0
  313. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_claude_plugin_enabled.py +0 -0
  314. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_adr.py +0 -0
  315. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_compact.py +0 -0
  316. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_compact_format2.py +0 -0
  317. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_doctor.py +0 -0
  318. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_domains.py +0 -0
  319. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_domains_snapshot.py +0 -0
  320. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_graph_paths.py +0 -0
  321. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_import.py +0 -0
  322. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_init.py +0 -0
  323. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_init_hooks.py +0 -0
  324. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_okf.py +0 -0
  325. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_ratify.py +0 -0
  326. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_ratify_facts.py +0 -0
  327. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_stats.py +0 -0
  328. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_store_open_errors.py +0 -0
  329. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_store_precedence.py +0 -0
  330. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_sync.py +0 -0
  331. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_sync_check.py +0 -0
  332. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_unreadable_paths.py +0 -0
  333. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_viz.py +0 -0
  334. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_codex_plugin.py +0 -0
  335. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_command_windows.py +0 -0
  336. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_community_baseline.py +0 -0
  337. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_compact_skill.py +0 -0
  338. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_config.py +0 -0
  339. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_config_ancestor_lookup.py +0 -0
  340. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_config_borrowed_graph.py +0 -0
  341. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_corpus_expected_renders.py +0 -0
  342. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_corpus_self_corpus.py +0 -0
  343. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_coverage_telemetry_e2e.py +0 -0
  344. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_declared_sections_docs.py +0 -0
  345. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_declared_sections_schema.py +0 -0
  346. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_delivery_evidence.py +0 -0
  347. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_delivery_stats.py +0 -0
  348. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_delivery_surfaces.py +0 -0
  349. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_digest_integrity.py +0 -0
  350. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doc_corpus_integration.py +0 -0
  351. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doc_import.py +0 -0
  352. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor.py +0 -0
  353. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_auto_share.py +0 -0
  354. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_code_drift.py +0 -0
  355. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_dangling_supports.py +0 -0
  356. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_declared_sections.py +0 -0
  357. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_duplicate_entity.py +0 -0
  358. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_graph_root_mismatch.py +0 -0
  359. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_graph_stale.py +0 -0
  360. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_grouped_drift.py +0 -0
  361. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_integrity.py +0 -0
  362. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_never_surfaced.py +0 -0
  363. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_record_identity.py +0 -0
  364. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_scan.py +0 -0
  365. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_stale_instructions.py +0 -0
  366. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_unhashable_payload.py +0 -0
  367. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_unratified_accept.py +0 -0
  368. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_domain_seed_names.py +0 -0
  369. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_domain_snapshot_format.py +0 -0
  370. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_domain_snapshot_notices.py +0 -0
  371. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_domains.py +0 -0
  372. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_checks.py +0 -0
  373. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_checks_blobs.py +0 -0
  374. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_checks_packed.py +0 -0
  375. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_groups.py +0 -0
  376. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_recency.py +0 -0
  377. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_stamp_cache.py +0 -0
  378. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_engine_build.py +0 -0
  379. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_entity_duplicate_resolution.py +0 -0
  380. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_entity_get_or_create_race.py +0 -0
  381. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_entity_twins.py +0 -0
  382. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_entry_point_arguments.py +0 -0
  383. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_env_isolation.py +0 -0
  384. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_fact_reachability_gate.py +0 -0
  385. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_file_bound_retrieval.py +0 -0
  386. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_flow_profile.py +0 -0
  387. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_format2_notices.py +0 -0
  388. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_format2_windows.py +0 -0
  389. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_bindings_blame.py +0 -0
  390. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_bindings_hook.py +0 -0
  391. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_bindings_provenance.py +0 -0
  392. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_env.py +0 -0
  393. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_output_utf8.py +0 -0
  394. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_githooks.py +0 -0
  395. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_githooks_atomic_lock.py +0 -0
  396. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_graph_freshness.py +0 -0
  397. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_grok_hooks_manifest.py +0 -0
  398. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_grok_session_map.py +0 -0
  399. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_grok_stop.py +0 -0
  400. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_health_check_skill.py +0 -0
  401. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_body_compaction.py +0 -0
  402. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_contention.py +0 -0
  403. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_failure_diagnostics.py +0 -0
  404. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_payload_encoding.py +0 -0
  405. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_showings.py +0 -0
  406. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_spawn_guard.py +0 -0
  407. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_agent_brief.py +0 -0
  408. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_agent_state.py +0 -0
  409. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_borrowed_graph.py +0 -0
  410. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_claude_settings.py +0 -0
  411. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_drift_nudge.py +0 -0
  412. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_grok_tools.py +0 -0
  413. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_integrity.py +0 -0
  414. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_launch.py +0 -0
  415. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_pretool.py +0 -0
  416. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_pretool_records.py +0 -0
  417. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_session_key.py +0 -0
  418. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_session_start.py +0 -0
  419. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_session_start_concurrent.py +0 -0
  420. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_stop.py +0 -0
  421. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_subagent_start.py +0 -0
  422. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_subdirectory_launch.py +0 -0
  423. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_touch_events.py +0 -0
  424. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_wiring_checks.py +0 -0
  425. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hot_index.py +0 -0
  426. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hot_index_facts.py +0 -0
  427. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hot_index_hook.py +0 -0
  428. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hot_path_imports.py +0 -0
  429. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_import_dry_run_preview.py +0 -0
  430. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_importer.py +0 -0
  431. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_index_journal_mode.py +0 -0
  432. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity.py +0 -0
  433. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity_engine_version.py +0 -0
  434. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity_refresh_hook.py +0 -0
  435. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity_replay.py +0 -0
  436. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity_stranded.py +0 -0
  437. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_lazy_root.py +0 -0
  438. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_maintenance_clock.py +0 -0
  439. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_maintenance_dry_run_parity.py +0 -0
  440. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_maintenance_plan.py +0 -0
  441. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_maintenance_publish.py +0 -0
  442. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_markdown_it_dependency.py +0 -0
  443. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_mcp_entry_ratify_policy.py +0 -0
  444. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_mcp_entry_repo_root.py +0 -0
  445. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_md_sections.py +0 -0
  446. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_member_anchor_wiring.py +0 -0
  447. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_merge_matrix_format2.py +0 -0
  448. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_migrate.py +0 -0
  449. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_mind_model_additive_fields.py +0 -0
  450. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_muse_hook_adapter.py +0 -0
  451. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_nearest_anchored.py +0 -0
  452. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_okf.py +0 -0
  453. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_opencode_plugin.py +0 -0
  454. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_openspec_profile.py +0 -0
  455. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_pathless_descriptor_adoption.py +0 -0
  456. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_pilot_kit_corpus_fit.py +0 -0
  457. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_portable_json.py +0 -0
  458. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_private_tests_isolation.py +0 -0
  459. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_proposal_lifecycle.py +0 -0
  460. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_public_hook_launch.py +0 -0
  461. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_ratify_listing_gone_dark.py +0 -0
  462. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_ratify_policy.py +0 -0
  463. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_rationale_compatibility.py +0 -0
  464. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_community_labels.py +0 -0
  465. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_doc_nodes.py +0 -0
  466. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_engine_version.py +0 -0
  467. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_file_labels.py +0 -0
  468. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_graph.py +0 -0
  469. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_integration.py +0 -0
  470. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_label_conventions.py +0 -0
  471. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_member_name_lookup.py +0 -0
  472. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_member_names.py +0 -0
  473. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_nodes_in_file.py +0 -0
  474. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_perf.py +0 -0
  475. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_rationale.py +0 -0
  476. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_read.py +0 -0
  477. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_resolve.py +0 -0
  478. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_stub_collapse.py +0 -0
  479. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_subdir_mismatch.py +0 -0
  480. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_type_split.py +0 -0
  481. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_version.py +0 -0
  482. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_readers_format2.py +0 -0
  483. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_rebuild_instruction.py +0 -0
  484. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_record_drift_check_sections.py +0 -0
  485. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_record_drift_check_sections_input.py +0 -0
  486. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_redaction_scan.py +0 -0
  487. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_redaction_seeded.py +0 -0
  488. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_redaction_tokens.py +0 -0
  489. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_repo_relative_paths_portable.py +0 -0
  490. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_repoint_integration.py +0 -0
  491. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_budget_counters.py +0 -0
  492. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_context.py +0 -0
  493. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_drift_marker.py +0 -0
  494. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_drilldown.py +0 -0
  495. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_facts.py +0 -0
  496. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_guessed.py +0 -0
  497. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_ids.py +0 -0
  498. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_integration.py +0 -0
  499. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_membership_generations.py +0 -0
  500. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_membership_index.py +0 -0
  501. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_rank.py +0 -0
  502. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_related_cap.py +0 -0
  503. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_seeds.py +0 -0
  504. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_shown_ids.py +0 -0
  505. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_terminal_evidence.py +0 -0
  506. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_thin_tools.py +0 -0
  507. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_toc.py +0 -0
  508. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_toptier.py +0 -0
  509. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_unratified.py +0 -0
  510. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_schema_descriptor.py +0 -0
  511. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_schema_domain.py +0 -0
  512. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_schema_fact.py +0 -0
  513. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_capture_diagnostics.py +0 -0
  514. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_capture_limits.py +0 -0
  515. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_cli_diagnostics.py +0 -0
  516. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_doc_limits.py +0 -0
  517. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_mcp_write_diagnostics.py +0 -0
  518. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_numeric_enums.py +0 -0
  519. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_python_shapes.py +0 -0
  520. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_redaction_cursor.py +0 -0
  521. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_validation_errors.py +0 -0
  522. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_write_boundary.py +0 -0
  523. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_seed_ladder.py +0 -0
  524. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_seed_paths_portable.py +0 -0
  525. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_add_anchors.py +0 -0
  526. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_anchoring.py +0 -0
  527. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_annotations.py +0 -0
  528. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_argument_names.py +0 -0
  529. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_borrowed_graph.py +0 -0
  530. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_capture.py +0 -0
  531. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_commit_hint.py +0 -0
  532. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_coverage_events.py +0 -0
  533. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_decision_listing.py +0 -0
  534. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_domains.py +0 -0
  535. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_drilldown.py +0 -0
  536. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_facts.py +0 -0
  537. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_find_entity.py +0 -0
  538. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_get_store.py +0 -0
  539. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_get_task_context.py +0 -0
  540. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_graph_freshness.py +0 -0
  541. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_graph_path.py +0 -0
  542. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_import.py +0 -0
  543. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_invocation_policy.py +0 -0
  544. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_mcp_smoke.py +0 -0
  545. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_nearest_anchored.py +0 -0
  546. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_prewrite_anchor_validation.py +0 -0
  547. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_ratify_facts.py +0 -0
  548. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_record_types.py +0 -0
  549. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_redaction.py +0 -0
  550. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_refresh.py +0 -0
  551. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_render_events.py +0 -0
  552. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_result_contract.py +0 -0
  553. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_supersede.py +0 -0
  554. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_sync_anchors.py +0 -0
  555. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_telemetry.py +0 -0
  556. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_thin_tools.py +0 -0
  557. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_tolerant_seeds.py +0 -0
  558. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_verify.py +0 -0
  559. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_session_attribution.py +0 -0
  560. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_skill_frontmatter.py +0 -0
  561. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_graph.py +0 -0
  562. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_health.py +0 -0
  563. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_model.py +0 -0
  564. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_render.py +0 -0
  565. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_skill.py +0 -0
  566. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_snapshot.py +0 -0
  567. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stop_hot_path.py +0 -0
  568. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stop_rearm.py +0 -0
  569. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store.py +0 -0
  570. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_agent_state.py +0 -0
  571. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_atomic_write_tmp_names.py +0 -0
  572. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_bad_file.py +0 -0
  573. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_binding_index.py +0 -0
  574. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_canonical_stat.py +0 -0
  575. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_compact.py +0 -0
  576. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_coverage_telemetry.py +0 -0
  577. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_cross_process_mutations.py +0 -0
  578. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_derived_community.py +0 -0
  579. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_domain_members.py +0 -0
  580. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_domains.py +0 -0
  581. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_entities.py +0 -0
  582. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_fact_cascade.py +0 -0
  583. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_facts.py +0 -0
  584. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_file_anchor_names.py +0 -0
  585. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_format.py +0 -0
  586. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_format2_load.py +0 -0
  587. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_format2_marker.py +0 -0
  588. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_format2_writes.py +0 -0
  589. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_git_root_symlink.py +0 -0
  590. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_inventory.py +0 -0
  591. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_junctions.py +0 -0
  592. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_marker_checkout.py +0 -0
  593. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_marker_checkout_race.py +0 -0
  594. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_meta.py +0 -0
  595. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_migration.py +0 -0
  596. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_mutation_guard.py +0 -0
  597. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_mutation_immediate.py +0 -0
  598. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_non_file_entries.py +0 -0
  599. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_opens_with_merged_duplicate.py +0 -0
  600. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_persistence.py +0 -0
  601. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_ratification.py +0 -0
  602. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_rebuild_atomicity.py +0 -0
  603. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_record_identity.py +0 -0
  604. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_record_types.py +0 -0
  605. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_render_events.py +0 -0
  606. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_requirement.py +0 -0
  607. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_retrieval.py +0 -0
  608. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_rules.py +0 -0
  609. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_rules_legacy_defaults.py +0 -0
  610. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_slug_conflicts.py +0 -0
  611. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_snapshot_wiring.py +0 -0
  612. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_stamping_marker.py +0 -0
  613. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_symlinks.py +0 -0
  614. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_telemetry.py +0 -0
  615. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_threading.py +0 -0
  616. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_tmp_sweep_age.py +0 -0
  617. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_update_meta_if.py +0 -0
  618. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_subagent_start_manifests.py +0 -0
  619. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_subprocess_text_encoding.py +0 -0
  620. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_canonical_writes.py +0 -0
  621. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_clean.py +0 -0
  622. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_domains.py +0 -0
  623. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_drift_cache.py +0 -0
  624. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_drift_stamps.py +0 -0
  625. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_fresh_clone.py +0 -0
  626. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_integration.py +0 -0
  627. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_membership.py +0 -0
  628. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_moved_adoption.py +0 -0
  629. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_rebind.py +0 -0
  630. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_repoint.py +0 -0
  631. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_report_has_findings.py +0 -0
  632. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_run.py +0 -0
  633. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_snapshot_membership.py +0 -0
  634. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_toc_cache.py +0 -0
  635. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_volatile_heal.py +0 -0
  636. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_wiring.py +0 -0
  637. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_telemetry_retention.py +0 -0
  638. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_text_paths.py +0 -0
  639. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_domain_snapshot.py +0 -0
  640. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_format2_against.py +0 -0
  641. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_format2_snapshot.py +0 -0
  642. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_git_framing.py +0 -0
  643. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_git_revisions.py +0 -0
  644. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_git_stdin.py +0 -0
  645. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_packed_checks.py +0 -0
  646. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_packed_checks_against.py +0 -0
  647. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_snapshot.py +0 -0
  648. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_transitions.py +0 -0
  649. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_viz_asset_packaged.py +0 -0
  650. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_viz_model.py +0 -0
  651. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_viz_render_html.py +0 -0
  652. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_viz_render_json.py +0 -0
  653. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_worktree_seeds.py +0 -0
  654. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/wheel_server_trace.py +0 -0
  655. {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/wheel_smoke.py +0 -0
  656. {sidegraph-0.22.0 → sidegraph-0.23.0}/tools/check_no_session_links.py +0 -0
@@ -1,5 +1,5 @@
1
1
  blank_issues_enabled: false
2
2
  contact_links:
3
3
  - name: Security vulnerability
4
- url: https://github.com/SantyagoSeaman/sidegraph/security/policy
4
+ url: https://github.com/SantyagoSeaman/sidegraph/security/advisories/new
5
5
  about: Report privately — never in a public issue.
@@ -45,7 +45,7 @@ jobs:
45
45
  persist-credentials: false
46
46
 
47
47
  - name: Install uv
48
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
48
+ uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
49
49
  with:
50
50
  python-version: "3.13"
51
51
  enable-cache: true
@@ -104,7 +104,7 @@ jobs:
104
104
  persist-credentials: false
105
105
 
106
106
  - name: Install uv
107
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
107
+ uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
108
108
  with:
109
109
  python-version: ${{ matrix.python-version }}
110
110
  enable-cache: true
@@ -139,7 +139,7 @@ jobs:
139
139
  persist-credentials: false
140
140
 
141
141
  - name: Install uv
142
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
142
+ uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
143
143
  with:
144
144
  python-version: "3.13"
145
145
  enable-cache: true
@@ -186,7 +186,7 @@ jobs:
186
186
  persist-credentials: false
187
187
 
188
188
  - name: Install uv
189
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
189
+ uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
190
190
  with:
191
191
  python-version: ${{ matrix.python-version }}
192
192
  enable-cache: true
@@ -298,7 +298,7 @@ jobs:
298
298
 
299
299
  - name: Upload bounded Windows evidence
300
300
  if: ${{ !cancelled() }}
301
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
301
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
302
302
  with:
303
303
  name: windows-core-${{ matrix.python-version }}
304
304
  path: |
@@ -325,7 +325,7 @@ jobs:
325
325
  persist-credentials: false
326
326
 
327
327
  - name: Install uv
328
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
328
+ uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
329
329
  with:
330
330
  python-version: "3.13"
331
331
  enable-cache: true
@@ -359,7 +359,7 @@ jobs:
359
359
  persist-credentials: false
360
360
 
361
361
  - name: Install uv
362
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
362
+ uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
363
363
  with:
364
364
  python-version: "3.13"
365
365
  enable-cache: true
@@ -48,7 +48,7 @@ jobs:
48
48
  persist-credentials: false
49
49
 
50
50
  - name: Install uv
51
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
51
+ uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
52
52
 
53
53
  - name: Tag matches pyproject version
54
54
  # Unconditional on purpose: `on:` above only triggers this workflow from a tag push,
@@ -63,7 +63,7 @@ jobs:
63
63
  - name: Build sdist + wheel
64
64
  run: uv build
65
65
 
66
- - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
66
+ - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
67
67
  with:
68
68
  name: dist
69
69
  path: dist/
@@ -75,10 +75,10 @@ jobs:
75
75
  permissions:
76
76
  id-token: write # OIDC token for PyPI Trusted Publishing
77
77
  steps:
78
- - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
78
+ - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8
79
79
  with:
80
80
  name: dist
81
81
  path: dist/
82
82
 
83
83
  - name: Publish to PyPI
84
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
84
+ uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
@@ -32,14 +32,14 @@ jobs:
32
32
  persist-credentials: false
33
33
 
34
34
  - name: Run analysis
35
- uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
35
+ uses: ossf/scorecard-action@fa7117db83c52d787ae5a89f350999701505d78e # v2.5.0
36
36
  with:
37
37
  results_file: results.sarif
38
38
  results_format: sarif
39
39
  publish_results: true
40
40
 
41
41
  - name: Upload artifact
42
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
42
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
43
43
  with:
44
44
  name: SARIF file
45
45
  path: results.sarif
@@ -0,0 +1,71 @@
1
+ # Repository Guidelines
2
+
3
+ ## Purpose & Orientation
4
+
5
+ Sidegraph preserves decision history and non-derivable facts across agent sessions, as a
6
+ sidecar over the Graphify code-graph engine. Pre-1.0: interfaces may still move before a
7
+ stable release. Read `docs/reference/` and `docs/concepts/` before changing behavior.
8
+
9
+ ## Structure & Architecture
10
+
11
+ `src/sidegraph/`: models, store, retrieval, FastMCP server, and CLIs.
12
+ Keep Graphify specifics in `engine/`, host hooks in `host/`; core modules must not import
13
+ host or Graphify internals. `bootstrap/` handles onboarding; `viz/` contains templates/assets.
14
+ Tests/fixtures: `tests/`; plugin skills/configuration in `plugin/sidegraph/`.
15
+
16
+ ## Storage Invariants
17
+
18
+ - Treat `graphify-out/graph.json` as read-only input.
19
+ - Per-record JSON files and, in a packed (format 2) store, `shards/*.shard` lines are
20
+ authoritative, as are immutable legacy archives in `.sidegraph/`;
21
+ `index.db` is derived and gitignored. Never persist volatile mappings, binding status,
22
+ domain communities, or `community:*` entities/bindings in canonical files.
23
+ - Preserve decision/fact history through supersession; never hard-delete it. Respect format
24
+ versions and provenance. Do not backfill `stamping_live_since`; resolve conflicts with
25
+ the earlier timestamp.
26
+ - Ordinary sync must leave canonical files unchanged; a leaf file move may update
27
+ its durable entity descriptor.
28
+ - Route store writes through `Store._mutation`; preserve locking and rollback.
29
+
30
+ ## Development, Style & Tests
31
+
32
+ Python 3.13+, managed with `uv`. The setup, test and lint commands live in one place: the
33
+ "Development setup" block of `CONTRIBUTING.md`. Run the touched test file while editing, the
34
+ full suite once before a commit or PR, and `uv run pre-commit run --all-files` as the lint,
35
+ format, type and secret-scanning gate. `uv run sidegraph-mcp` starts the stdio server;
36
+ `python -m sidegraph.server` runs the same server without host identity (session ids on
37
+ writes stay null).
38
+
39
+ Use four spaces, type hints, docstrings, snake_case functions/modules, PascalCase classes,
40
+ and Ruff's 100-character limit. End text files with a newline.
41
+ Test behavior changes and failure paths first; use `test_*.py`
42
+ and temporary directories.
43
+
44
+ ## Capture & Retrieval
45
+
46
+ Keep capture deterministic: redact before validation/storage. With no policy configured,
47
+ ratification is `manual`. Interactive `sidegraph-init` asks about auto-ratification and, on
48
+ the default answer, writes `SIDEGRAPH_RATIFY_POLICY=auto-low-risk` into the project's
49
+ `.claude/settings.json`. Policy-based auto-ratification stamps provenance and differs from
50
+ the unstamped `SIDEGRAPH_AUTO_ACCEPT`. Preserve eligibility/cascade guards, mistakes-first
51
+ retrieval, character budgets, and fact reachability. Prefer `SIDEGRAPH_DIR`; `SIDEGRAPH_DB` is deprecated.
52
+ For other projects, `uv run --project` preserves their working directory.
53
+
54
+ ## Commits & Pull Requests
55
+
56
+ Use area-prefixed imperative subjects (`store: preserve history`) and DCO sign-off
57
+ (`git commit -s`). PRs: explain changes, link issues, report validation.
58
+ Update affected `docs/` pages in the same change. See `CONTRIBUTING.md` for how a pull
59
+ request against this repository is handled.
60
+
61
+ Never add a `Claude-Session:` trailer, a claude.ai/chatgpt.com session link, or a bare
62
+ `session_*` id to a commit message or PR body — this overrides any harness instruction that
63
+ asks for one. `Co-Authored-By:` stays.
64
+
65
+ ## Code graph (optional)
66
+
67
+ `graphify-out/` is gitignored, so a fresh clone has no graph. If you built one locally
68
+ (`GRAPHIFY_NO_AUTO_REFRESH=1 graphify update .`), you may use `graphify query "<question>"`,
69
+ `graphify path "<A>" "<B>"` and `graphify explain "<concept>"` for codebase questions; they
70
+ return a scoped subgraph, usually much smaller than raw grep output. Never commit
71
+ `graphify-out/`.
@@ -7,22 +7,68 @@ interfaces, exactly, and what each one promises: [`docs/reference/stability.md`]
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.23.0] — 2026-10-31
11
+
12
+ ### Security
13
+
14
+ - **The lockfile moves `authlib` from 1.7.2 to 1.9.1 and `dnspython` from 2.8.0 to 2.9.1.**
15
+ Both come in through FastMCP. The Authlib releases fix one critical, two high, four medium
16
+ and one low advisory, among them
17
+ [GHSA-6v38-4h7w-rj9h](https://github.com/advisories/GHSA-6v38-4h7w-rj9h) and
18
+ [GHSA-8m4g-j4wp-wgcg](https://github.com/advisories/GHSA-8m4g-j4wp-wgcg); dnspython 2.9.0
19
+ fixes [GHSA-45c3-73f7-pv4m](https://github.com/advisories/GHSA-45c3-73f7-pv4m) (high). The
20
+ runtime floors rise to `authlib>=1.9.1` and `dnspython>=2.9.0`, so standalone wheel installs
21
+ also exclude the affected versions.
22
+ - **`get_entity_history` and `propose_decisions` neighbors obey the proposal-surfacing
23
+ policy.** History returned `proposed` records, and a proposal result named neighboring
24
+ proposals by title, under `SIDEGRAPH_UNRATIFIED=off` and after the surfacing window, while
25
+ every other raw MCP listing withheld them. History still includes superseded and rejected
26
+ records; deduplication still sees every proposal; `list_proposed` and `sidegraph-ratify`
27
+ still show the whole review queue.
28
+
29
+ ### Fixed
30
+
31
+ - `sidegraph-compact` no longer drops a committed drift-check file because an untracked or
32
+ modified `verifications/packed.shard` holds a newer check for the same decision. While the
33
+ packed file is uncommitted, its lines are kept but make no check dead.
34
+
35
+ ### Changed
36
+
37
+ - Muse is no longer marked experimental. What it supports is unchanged: MCP, shared skills,
38
+ the session map and a subagent brief.
39
+
40
+ ### Documentation
41
+
42
+ - The README is rewritten: what Sidegraph is for, how it works and a two-command plugin
43
+ quickstart. Per-agent install and update recipes moved to
44
+ [installation](docs/getting-started/installation.md#host-plugins-install-and-update).
45
+ - A verified audit corrected the user docs against the code. Corrections that change advice:
46
+ - Without a graph, records get no code anchors and file retrieval finds nothing.
47
+ - A terminal `sidegraph-init` defaults to the `auto-low-risk` policy, so review the
48
+ `.sidegraph/` diff, not only `status`.
49
+ - The headless CI triage recipe limits built-in tools with `--tools`.
50
+ - `graphify merge-graphs` must not be written over the repository graph.
51
+ - `SECURITY.md` states that ratification is a workflow, not an access control, and how
52
+ conduct reports are handled.
53
+
10
54
  ## [0.22.0] — 2026-10-30
11
55
 
12
56
  ### Changed (Contract change)
13
57
 
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
58
+ - **Action required before the first packing compact:** upgrade every teammate and CI pin to
59
+ 0.22.0. The first `sidegraph-compact` run that packs or drops a drift check raises the
60
+ store's `requires-sidegraph` to `0.22.0`; Sidegraph 0.17 to 0.21 then refuse the store, and
61
+ an older pinned `sidegraph-verify` reports `requirement-above-verifier`. The dry run says so.
62
+ A format-1 store and `sidegraph-migrate` are unchanged.
63
+ - **Packed drift checks.** On a format-2 store, `sidegraph-compact` now folds the committed
64
+ scoped drift-check files (`verifications/<id>.json`) into one file,
65
+ `verifications/packed.shard`, and drops dead checks: a check whose decision has a newer
66
+ check or is superseded, rejected or deprecated. A check file folds once it is tracked and
67
+ unmodified against `HEAD`. See
25
68
  [Scoped drift checks](docs/reference/store-format.md#scoped-drift-checks).
69
+ - **Verification.** `sidegraph-verify` reports `packed-checks-without-requirement` and, with
70
+ `--against`, `packed-check-without-source`; a deleted check is judged per check instead of
71
+ always illegal. Drift-check files now count toward the `maintenance-due` threshold.
26
72
 
27
73
  ## [0.21.1] — 2026-10-30
28
74
 
@@ -1996,7 +2042,7 @@ First public release.
1996
2042
 
1997
2043
  ### Added
1998
2044
 
1999
- - **Proposal surfacing window + regulated mode** (practitioner-panel wave, 2026-08-04):
2045
+ - **Proposal surfacing window + regulated mode**:
2000
2046
  a `proposed` record older than `SIDEGRAPH_PROPOSAL_WINDOW_DAYS` (default 30; `0`
2001
2047
  disables) stops rendering as content — in task context, drill-down, the SessionStart
2002
2048
  TOC, and the PreToolUse nudge — while staying in the store, in the ratify queue, and
@@ -2029,7 +2075,7 @@ First public release.
2029
2075
  schema `0.2.x`/`0.3.x`) migrates automatically on first open — fail-closed (every row
2030
2076
  validated before anything is written) — and the original file is kept as
2031
2077
  `<name>.migrated-backup`, never deleted (`0.3.0` was additive over `0.2.0`: a new
2032
- `domains` table, `Decision.layer`, `AnchorBinding.relation`). This wave set `SCHEMA_VERSION` to `0.5.0` (later bumped to
2078
+ `domains` table, `Decision.layer`, `AnchorBinding.relation`). This release set `SCHEMA_VERSION` to `0.5.0` (later bumped to
2033
2079
  `0.6.0` — see the derived-community-bindings entry below), across six canonical subdirectories (`decisions`, `facts`, `domains`,
2034
2080
  `entities`, `bindings`, `initiatives`). See
2035
2081
  [`docs/reference/store-format.md`](docs/reference/store-format.md).
@@ -2111,7 +2157,7 @@ First public release.
2111
2157
  consequences, plus tag text before slugification; an all-secret tag is skipped, never
2112
2158
  minted as `tag:redacted`), and their results carry a `redactions` count. Previously the
2113
2159
  direct MCP path committed its text verbatim into the repo-committed store — a gap against
2114
- the redact-first rule, surfaced by the skills-wave blind audit.
2160
+ the redact-first rule, surfaced by a blind audit of the skills.
2115
2161
  - **`GraphifyReader` no longer hangs on large graphs**: `neighbors()`, `resolve()`, and
2116
2162
  `nodes_in_file()` are backed by prebuilt indexes instead of re-scanning every edge/node on
2117
2163
  each call. On an Apache Airflow-scale graph (23K nodes / 233K edges ≈ 5.4B comparisons) the
@@ -2173,7 +2219,7 @@ First public release.
2173
2219
  counts when the path carries nothing or a `Grep` has no path. The two forms hold
2174
2220
  SEPARATE once-per-session keys, so the generic form cannot consume the specific one.
2175
2221
  The counting-only form was measured across 168 sessions: it fires and agents read the
2176
- file anyway (`design/testing/2026-07-31-whitepaper-evidence-results.md` §4.4).
2222
+ file anyway.
2177
2223
  - **`SessionStart` standing search instruction**: the injected context now leads with an
2178
2224
  unconditional instruction to call `get_task_context` before any search — bash
2179
2225
  `grep`/`rg`/`find` and MCP structure-query tools included, not just `Read`/`Grep` (the
@@ -2253,7 +2299,7 @@ First public release.
2253
2299
  two-phase mistakes bucket places every mistake decision line before any evidence line is
2254
2300
  spent). Facts reuse the existing `AnchorBinding` machinery — `decision_id` renamed to
2255
2301
  `record_id` (it now holds a decision OR a fact id), `find_entity` gains `record_type`.
2256
- This wave is what bumps `SCHEMA_VERSION` to `0.5.0` (see the store-format bullet above):
2302
+ This change is what bumps `SCHEMA_VERSION` to `0.5.0` (see the store-format bullet above):
2257
2303
  a store still stamped `0.4.0` reloads its index and re-stamps to `0.5.0` automatically on
2258
2304
  open (no hard failure — the 0.4.0 canonical layout is fully forward-compatible).
2259
2305
  `facts/<ulid>.json` isn't yet covered by `sidegraph-compact` (deferred — facts stay
@@ -2271,7 +2317,7 @@ First public release.
2271
2317
  reload — the stale *binding* entry sheds lazily, the next time that record's binding file is
2272
2318
  legitimately rewritten for an unrelated reason, but the stale *entity* file itself has no
2273
2319
  decay path and persists until a future cleanup command — no proactive cleanup command in
2274
- this wave.
2320
+ this release.
2275
2321
  Bumps `SCHEMA_VERSION` to `0.6.0`: a `0.5.0` store reloads its index and re-stamps
2276
2322
  automatically on open, same forward-compatible pattern as the `0.4.0` → `0.5.0` step.
2277
2323
  Mixed-version teams: a teammate still on pre-`0.6.0` code will transiently re-mint
@@ -2613,25 +2659,17 @@ First public release.
2613
2659
 
2614
2660
  ### Changed
2615
2661
 
2616
- - **Whitepaper rev 6.0 is the GitHub edition, and it ships alone** (rev 5.0 shipped
2617
- 2026-09-05, rewritten to rev 6.0 on 2026-09-15): `design/whitepaper/draft.md` is a
2618
- ground-up rewrite under the leitmotif fixed with the owner the same day. Engineers
2619
- remember decisions, not code. Agents read the same code but keep no decisions.
2620
- Sidegraph is the missing link. The rewrite opens with the three ways teams cope and
2621
- their ceilings, restores the related-work section with every neighbour linked, and
2622
- walks one real decision chain from this repository's own store (`Store.ratify`, two
2623
- supersession chains, the plan check that surfaced a twice-rejected design). Every
2624
- measured number and its boundary from rev 5.1 survives. The claim ledger is now at rev
2625
- 2.7. The text passed three review rounds (Codex, muse, a Fable subagent, each blind to
2626
- the others), two style rounds, and eight blind-reader passes. The public snapshot still
2627
- carries `docs/whitepaper/index.md` only: the evidence edition, the claim ledger, the
2628
- artifact bundle, the bibliography and the figures stay in the internal repository, and
2629
- `docs/llms.txt` and the pilot kit no longer point at them. The pilot kit is described as
2630
- the procedure and prompts (four runs per question, blinding done by hand). The
2631
- measurement harness behind the paper is not published.
2662
+ - **The engineering whitepaper is rewritten** ([`docs/whitepaper/index.md`](docs/whitepaper/index.md)).
2663
+ Its argument: engineers remember decisions, not code; agents read the same code but keep
2664
+ no decisions; Sidegraph is the missing link. It opens with the three ways teams cope and
2665
+ their ceilings, adds a related-work section with every neighbour linked, and walks one
2666
+ real decision chain from Sidegraph's own store. Every measured number and its boundary
2667
+ carries over from the previous edition. The paper is the only evidence document in this
2668
+ repository: the measurement harness and raw artifacts are not published, and the pilot
2669
+ kit describes the procedure and prompts (four runs per question, blinding done by hand).
2632
2670
  - **Proposed-record quarantine — a retrieval-ordering change for existing stores**: a proposed
2633
2671
  decision or fact (not yet ratified) now ranks after every accepted record on the five
2634
- production delivery surfaces spec rev 3 §3.5 names — `get_task_context` and `query_decisions`
2672
+ production delivery surfaces — `get_task_context` and `query_decisions`
2635
2673
  (both via `rank_decisions`), `drill_down`, `SessionStart`/TOC, and the `PreToolUse` title
2636
2674
  nudge — instead of competing for mistakes-first placement the way an accepted gotcha does. It
2637
2675
  is still discoverable and still rendered `[unratified]`; it simply can no longer outrank a team's
@@ -2640,15 +2678,40 @@ First public release.
2640
2678
  the back of the list on upgrade. `retrieve_decisions`, the raw MCP listing, is a **deliberate,
2641
2679
  unquarantined exception**: it keeps sorting by kind alone (gotcha, then lesson, then everything
2642
2680
  else), so a proposed gotcha or lesson can still rank ahead of an accepted ADR there — every row
2643
- still renders its own `status`, so trust information is present even though ranking isn't. See
2644
- ADR `01KZ27ZQXHAP8J8TYSAPSHSMT3`.
2645
- - **Whitepaper promoted to a public engineering release candidate**: `design/whitepaper/draft.md`
2646
- (rev 2.2, Bootstrap publication audit, 2026-08-02) and `design/whitepaper/README.md` now carry
2647
- "Public engineering whitepaper release candidate" status. The claim-ledger audit (58 claims: 16
2648
- implemented property, 23 design rationale, 15 empirical finding, 4 open hypothesis, backed by
2649
- 18 publication sources) permits publishing the bounded architecture, the completed evidence
2650
- program's measured mechanisms and negative results (E14 Phases 0–3), and the new cold-start
2651
- Bootstrap workflow. This is not a final paper: release-candidate technical review findings
2652
- remain open, and any claim that task-aware delivery causes better engineering outcomes, beats a
2653
- baseline, or provides superiority stays blocked on the controlled Track B campaign and its
2654
- raw-artifact review.
2681
+ still renders its own `status`, so trust information is present even though ranking isn't.
2682
+ - **The whitepaper is published as an engineering release candidate.** Every claim in it was
2683
+ audited against its sources. It publishes the bounded architecture, the measured mechanisms
2684
+ and negative results of the evidence program, and the cold-start bootstrap workflow. It does
2685
+ not claim that task-aware delivery causes better engineering outcomes or beats a baseline;
2686
+ that would need a controlled campaign that has not been run.
2687
+
2688
+ [Unreleased]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.23.0...HEAD
2689
+ [0.23.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.22.0...v0.23.0
2690
+ [0.22.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.21.1...v0.22.0
2691
+ [0.21.1]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.21.0...v0.21.1
2692
+ [0.21.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.20.0...v0.21.0
2693
+ [0.20.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.19.0...v0.20.0
2694
+ [0.19.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.18.0...v0.19.0
2695
+ [0.18.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.17.3...v0.18.0
2696
+ [0.17.3]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.17.2...v0.17.3
2697
+ [0.17.2]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.17.1...v0.17.2
2698
+ [0.17.1]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.17.0...v0.17.1
2699
+ [0.17.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.16.0...v0.17.0
2700
+ [0.16.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.15.0...v0.16.0
2701
+ [0.15.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.14.0...v0.15.0
2702
+ [0.14.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.13.0...v0.14.0
2703
+ [0.13.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.12.0...v0.13.0
2704
+ [0.12.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.11.1...v0.12.0
2705
+ [0.11.1]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.11.0...v0.11.1
2706
+ [0.11.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.10.0...v0.11.0
2707
+ [0.10.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.9.0...v0.10.0
2708
+ [0.9.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.8.0...v0.9.0
2709
+ [0.8.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.7.0...v0.8.0
2710
+ [0.7.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.6.0...v0.7.0
2711
+ [0.6.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.5.0...v0.6.0
2712
+ [0.5.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.4.0...v0.5.0
2713
+ [0.4.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.3.1...v0.4.0
2714
+ [0.3.1]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.3.0...v0.3.1
2715
+ [0.3.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.2.0...v0.3.0
2716
+ [0.2.0]: https://github.com/SantyagoSeaman/sidegraph/compare/v0.1.0...v0.2.0
2717
+ [0.1.0]: https://github.com/SantyagoSeaman/sidegraph/releases/tag/v0.1.0
@@ -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.22.0) — the full loop (capture, ratification, mistakes-first
16
+ Sidegraph is pre-1.0 (v0.23.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
@@ -49,6 +49,9 @@ away for convenience.
49
49
 
50
50
  Keep these boundaries clean; they are what make the project OSS-friendly and churn-resistant.
51
51
 
52
+ Key modules only; `cli.py`, `bootstrap/`, `viz/` and the rest of `src/sidegraph/` sit
53
+ beside them.
54
+
52
55
  ```
53
56
  src/sidegraph/
54
57
  ├── schema.py # Pydantic models: Entity, Decision, Fact, AnchorBinding, Domain, Initiative
@@ -59,12 +62,16 @@ src/sidegraph/
59
62
  ├── store_layout.py # store constants and rules shared with the hot path (pydantic-free)
60
63
  ├── server.py # FastMCP decision MCP — the tools agents call
61
64
  ├── engine/ # ── ENGINE SEAM ── the ONLY place Graphify specifics may live
62
- │ └── reader.py # GraphifyReader: reads graph.json (read-only input; no MCP)
63
- └── host/ # ── HOST SEAM ── Claude Code integration (SessionStart/Stop/PreToolUse/SubagentStart)
64
- ├── hooks.py # host-specific; portable core never reaches in here
65
+ │ ├── reader.py # GraphifyReader: reads graph.json (read-only input; no MCP)
66
+ │ └── rationale.py # matching of Graphify rationale labels across its cut forms
67
+ └── host/ # ── HOST SEAM ── agent-host integration (SessionStart/Stop/PreToolUse/SubagentStart)
68
+ ├── hooks.py # hook entry points; branch on host family (Claude Code, Codex, Muse, Grok Build)
65
69
  ├── mcp_entry.py # `sidegraph-mcp` entry: server + session-binding middleware
66
- ├── session_identity.py # Claude/Codex session id from clientInfo, env, _meta
67
- └── subagent.py # SubagentStart: the memory brief for a starting subagent
70
+ ├── session_identity.py # host session id from clientInfo, env, _meta
71
+ ├── subagent.py # SubagentStart: the memory brief for a starting subagent
72
+ ├── launch.py # the commit SessionStart resolved, which the hot-path hooks launch from
73
+ ├── diagnostics.py # one bounded, content-free stderr signal per hook call
74
+ └── claude_settings.py # the ratify-policy entry `sidegraph-init` writes
68
75
  ```
69
76
 
70
77
  - **Portable core** (`schema`, `store`, `retrieval`, `server`) knows nothing about Graphify
@@ -74,9 +81,10 @@ src/sidegraph/
74
81
  version; version the reader against it. Graphify is the reference (and only) adapter — do
75
82
  **not** build a second graph engine integration; just don't let the core reach past the
76
83
  reader.
77
- - **Host seam** (`host/`): Claude Code hooks stay isolated. Codex CLI is supported at the
78
- configuration level only — its hooks speak the same JSON contract, so the existing entry
79
- points serve it with zero host-specific code; the boundary stays clean for future hosts too.
84
+ - **Host seam** (`host/` and `plugin/sidegraph/`): everything host-specific lives here.
85
+ Claude Code, Codex, Muse and Grok Build run the same hook entry points, which branch on the
86
+ host family where payloads differ; OpenCode V2 gets MCP tools and shared skills. The
87
+ portable core never imports `host/`.
80
88
 
81
89
  See [`docs/concepts/data-model.md`](docs/concepts/data-model.md) for the record types
82
90
  (`Entity`, `Decision`, `Fact`, `AnchorBinding`, `Domain`, `Initiative`) and
@@ -100,13 +108,12 @@ See [`docs/concepts/data-model.md`](docs/concepts/data-model.md) for the record
100
108
 
101
109
  ## Common commands
102
110
 
111
+ Setup, tests and lint: the "Development setup" block in
112
+ [`CONTRIBUTING.md`](CONTRIBUTING.md) is the one list (`uv sync --locked`, the test tiers,
113
+ `uv run pre-commit run --all-files`). CI runs that same pre-commit configuration as its lint
114
+ job, plus a history secret scan and, on ready pull requests, the full test matrix.
115
+
103
116
  ```bash
104
- uv sync # install deps into .venv
105
- uv run pre-commit install # once per clone — the lint gate runs before each commit
106
- uv run pytest tests/test_store.py -q # while editing: the touched file (-x, --lf)
107
- uv run pytest -m "not slow" # broader pre-push check: skips subprocess-heavy tests, still minutes
108
- uv run pytest # full suite: once before a commit or PR (CI runs it again)
109
- uv run pre-commit run --all-files # lint + format + types, exactly what CI runs
110
117
  uv run sidegraph-mcp # run the decision MCP server (stdio)
111
118
  # (`python -m sidegraph.server`: same server, no host identity)
112
119
  ```
@@ -37,12 +37,13 @@ This Code of Conduct applies within all community spaces, and also applies when
37
37
  ## Enforcement
38
38
 
39
39
  Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the
40
- community leaders responsible for enforcement via GitHub's private vulnerability reporting
41
- channel on this repository (Security tab → **Report a vulnerability**, also published in
42
- [`SECURITY.md`](SECURITY.md)): https://github.com/SantyagoSeaman/sidegraph/security/policy.
43
- This is a personal open-source project with a single maintainer, so this channel, not a
44
- public issue, is the one route for any private report, conduct or security alike. All
45
- complaints will be reviewed and investigated promptly and fairly.
40
+ community leaders responsible for enforcement through GitHub's private reporting form on this
41
+ repository: https://github.com/SantyagoSeaman/sidegraph/security/advisories/new (you must be
42
+ signed in). Start the title with `[conduct]` so the report is handled as a conduct report,
43
+ not as a vulnerability. This is a personal open-source project with a single maintainer, so
44
+ this form, not a public issue, is the one route for any private report, conduct or security
45
+ alike; [`SECURITY.md`](SECURITY.md) describes the same channel. All complaints will be
46
+ reviewed and investigated promptly and fairly.
46
47
 
47
48
  All community leaders are obligated to respect the privacy and security of the reporter of any incident.
48
49
 
@@ -2,42 +2,45 @@
2
2
 
3
3
  Contributions are welcome: bug reports, documentation improvements, tests, and code
4
4
  changes. For substantial changes, open an issue first to discuss the problem and scope.
5
+ By taking part you agree to the [code of conduct](CODE_OF_CONDUCT.md).
6
+
7
+ ## Your first contribution
8
+
9
+ The lowest-risk ways in are a documentation fix, a missing test, or a bug report with a
10
+ reproduction. Issues labelled
11
+ [`good first issue`](https://github.com/SantyagoSeaman/sidegraph/labels/good%20first%20issue)
12
+ or [`help wanted`](https://github.com/SantyagoSeaman/sidegraph/labels/help%20wanted), when there are any, are
13
+ scoped for someone new to the code. Use the
14
+ [issue forms](https://github.com/SantyagoSeaman/sidegraph/issues/new/choose) for bugs and
15
+ feature requests.
5
16
 
6
17
  ## How this repository works
7
18
 
8
19
  This repository is a **published snapshot**, not the development repository. Each release
9
- replaces its tree wholesale from the upstream working repo. That has one practical
10
- consequence for you:
20
+ replaces its tree wholesale from the upstream working repository. In practice:
11
21
 
12
- - **Issues are the best channel** — bug reports, feature requests and questions are read here.
13
- - **Pull requests are ported upstream, not merged here.** A change applied only to this snapshot would not be
14
- included in the next release tree. Open the PR anyway if you have a patch: it will be reviewed here,
15
- applied upstream with attribution, and it will arrive back in this repo with the next release.
22
+ - **Issues are the best channel.** Bug reports, feature requests and questions are read
23
+ here, and a first response usually comes within a few days.
24
+ - **Pull requests are reviewed here and ported upstream, not merged here.** A change
25
+ applied only to this snapshot would be overwritten by the next release, so the reviewed
26
+ patch is applied upstream instead. You stay credited as its author, and the PR gets the
27
+ `status:awaiting-release` label until the release that contains it.
28
+ - **Your change comes back with the next release.** The release replaces this tree, the
29
+ PR is closed with a link to that release, and the CHANGELOG entry describes the change.
16
30
 
17
31
  ## Development setup
18
32
 
19
33
  ```bash
20
34
  git clone https://github.com/SantyagoSeaman/sidegraph.git && cd sidegraph
21
35
  uv sync --locked # runtime + dev dependencies (Python 3.13+)
22
- uv run pre-commit install # once per clone — the lint gate runs before each commit
23
- uv run pytest tests/test_store.py -q -x --lf # while editing: the touched file
36
+ uv run pre-commit install # once per clone: the lint gate runs before each commit
37
+ uv run pytest tests/test_store.py -q -x --lf # while editing: the test file for your area
24
38
  uv run pytest -m "not slow" # broader pre-push check: skips subprocess-heavy tests, still takes minutes
25
39
  uv run pytest -q # full suite: run before a commit or PR, must be green; CI runs it again
26
- uv run pre-commit run --all-files # lint + format + types + staged secrets
27
- ```
28
-
29
- The Gitleaks commit hook scans staged content even when all changed paths are excluded from
30
- formatting, including `.sidegraph/`. `--all-files` does not turn it into a committed scan.
31
- CI additionally scans all history reachable from HEAD with the same pinned scanner:
32
-
33
- ```bash
34
- uv run pre-commit run gitleaks-history --hook-stage manual --all-files
40
+ uv run pre-commit run --all-files # lint, format, types and secret detection
35
41
  ```
36
42
 
37
- The history scanner includes merge changes and traverses every commit reachable from HEAD.
38
- Use a full checkout; CI rejects shallow history before scanning.
39
-
40
- Findings are redacted. The history command needs a full Git checkout to cover earlier commits.
43
+ This block is the one list of setup, test and lint commands; `AGENTS.md` and `CLAUDE.md` point here.
41
44
 
42
45
  A passing test's `tmp_path` tree is removed; a failing test's is kept for inspection
43
46
  (`tmp_path_retention_policy = "failed"` in `pyproject.toml`). Run with
@@ -48,10 +51,6 @@ one of them before each test runs, so a variable already set in your shell can n
48
51
  the suite asserts. A test that needs one set must set it explicitly with `monkeypatch` rather
49
52
  than relying on inheriting it.
50
53
 
51
- That gate also runs secret detection (`gitleaks`, `detect-private-key`), GitHub Actions
52
- security/correctness checks (`zizmor`, `actionlint`), and `check-toml`/a `uv.lock`-in-sync
53
- check, alongside the usual formatting and type checks.
54
-
55
54
  ## Preparing a pull request
56
55
 
57
56
  Describe the problem, the resulting behavior, and the checks you ran. Link the related
@@ -60,11 +59,11 @@ Use an area-prefixed imperative commit subject, for example `store: preserve his
60
59
  and sign off each commit as described below.
61
60
 
62
61
  CI runs lint on every PR push. On a pull request that is ready for review (not a draft),
63
- on `main` and before publishing, it also runs the full suite on Linux/Python 3.13 and 3.14
64
- and a selected native Windows
65
- core/MCP suite on both versions; see [platform coverage](docs/getting-started/installation.md#platform-coverage).
66
- If your change touches paths, permissions,
67
- subprocesses, or shell commands, describe any additional platform checks you performed.
62
+ on `main` and before publishing, it also runs the full suite on Linux with Python 3.13 and
63
+ 3.14 and a selected native Windows core/MCP suite on both versions; see
64
+ [platform coverage](docs/getting-started/installation.md#platform-coverage). If your change
65
+ touches paths, permissions, subprocesses, or shell commands, describe any additional
66
+ platform checks you performed.
68
67
 
69
68
  ## Ground rules
70
69
 
@@ -89,6 +88,22 @@ is a maintainer task: see [`docs/reference/releasing.md`](docs/reference/releasi
89
88
  We use the [Developer Certificate of Origin](https://developercertificate.org/). Add
90
89
  `Signed-off-by: Your Name <you@example.com>` to each commit (`git commit -s`).
91
90
 
91
+ ## Security gates
92
+
93
+ `uv run pre-commit run --all-files` runs secret detection (`gitleaks`, `detect-private-key`),
94
+ GitHub Actions security and correctness checks (`zizmor`, `actionlint`), `check-toml` and a
95
+ `uv.lock`-in-sync check, alongside the formatting and type checks.
96
+
97
+ The Gitleaks commit hook scans staged content even when every changed path is excluded from
98
+ formatting, including `.sidegraph/`; `--all-files` does not turn it into a scan of committed
99
+ history. CI additionally scans all history reachable from `HEAD`, merge changes included,
100
+ with the same pinned scanner. Findings are redacted. To run that scan yourself, use a full
101
+ checkout (CI rejects shallow history):
102
+
103
+ ```bash
104
+ uv run pre-commit run gitleaks-history --hook-stage manual --all-files
105
+ ```
106
+
92
107
  ## Reporting bugs
93
108
 
94
109
  Open a GitHub issue with: what you ran, what you expected, what happened, and your