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.
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/ISSUE_TEMPLATE/config.yml +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/workflows/ci.yml +7 -7
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/workflows/publish.yml +4 -4
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/workflows/scorecard.yml +2 -2
- sidegraph-0.23.0/AGENTS.md +71 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/CHANGELOG.md +109 -46
- {sidegraph-0.22.0 → sidegraph-0.23.0}/CLAUDE.md +22 -15
- {sidegraph-0.22.0 → sidegraph-0.23.0}/CODE_OF_CONDUCT.md +7 -6
- {sidegraph-0.22.0 → sidegraph-0.23.0}/CONTRIBUTING.md +45 -30
- sidegraph-0.23.0/PKG-INFO +342 -0
- sidegraph-0.23.0/README.md +307 -0
- sidegraph-0.23.0/SECURITY.md +130 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/README.md +3 -2
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/data-model.md +11 -7
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/mind-model.md +4 -2
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/retrieval.md +4 -2
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/bootstrap.md +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/claude-code-setup.md +12 -11
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/codex-setup.md +16 -9
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/installation.md +251 -53
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/getting-started/quickstart.md +28 -21
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/capturing-decisions.md +11 -8
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/ci-cd-maintenance.md +30 -17
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/health-check.md +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/naming-your-domains.md +7 -4
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/retrieval-in-sessions.md +12 -5
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/semantic-docs.md +13 -9
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/team-workflow.md +25 -7
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/troubleshooting.md +1 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/verifying-your-setup.md +2 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/claude-code.md +8 -7
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/codex.md +16 -9
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/graphify.md +11 -7
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/muse.md +8 -6
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/llms.txt +4 -3
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/README.md +9 -3
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/cli.md +16 -10
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/configuration.md +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/git-bindings.md +2 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/hooks.md +25 -3
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/mcp-tools.md +22 -12
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/operations.md +5 -5
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/releasing.md +3 -1
- sidegraph-0.23.0/docs/reference/security-internals.md +129 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/store-format.md +5 -3
- {sidegraph-0.22.0 → sidegraph-0.23.0}/package.json +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.claude-plugin/plugin.json +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.codex-plugin/plugin.json +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.grok-plugin/plugin.json +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.muse-plugin/plugin.json +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/explain-why/SKILL.md +2 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/heal-anchors/SKILL.md +13 -12
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/record-decision/SKILL.md +10 -8
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/record-fact/SKILL.md +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/setup/SKILL.md +24 -4
- {sidegraph-0.22.0 → sidegraph-0.23.0}/pyproject.toml +3 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/__init__.py +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/capture.py +26 -10
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/check_fold.py +8 -3
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/server.py +16 -4
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bounded_listings.py +91 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_neighbors.py +60 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_check_fold_plan.py +13 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_check_fold_publish.py +28 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_docs_claims.py +86 -11
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_graphify_pin.py +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_muse_plugin.py +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_input_limits.py +1 -1
- {sidegraph-0.22.0 → sidegraph-0.23.0}/uv.lock +11 -7
- sidegraph-0.22.0/AGENTS.md +0 -80
- sidegraph-0.22.0/PKG-INFO +0 -532
- sidegraph-0.22.0/README.md +0 -499
- sidegraph-0.22.0/SECURITY.md +0 -217
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.agents/plugins/marketplace.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.claude-plugin/marketplace.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/CODEOWNERS +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/secret_scanning.yml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.github/workflows/session-link-gate.yml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.gitignore +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.gitleaks.toml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.opencode/INSTALL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.pre-commit-config.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/.python-version +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/LICENSE +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/anchoring.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/concepts/decision-memory.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/adr-export.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/migrating-to-0.14.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/migrating-to-0.17.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/surviving-refactors.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/using-0.15.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/guides/using-0.16.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/grok.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/integrations/opencode.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/corpus_fit.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/judge-prompt.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/questions-prompt.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/pilot-kit/rubric-template.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/reference/stability.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/docs/whitepaper/index.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/index.js +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/.mcp.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/codex/hooks.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/codex/mcp.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/grok/hooks.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/hooks/hooks.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/muse/hook.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/muse/session_start.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/muse/subagent_start.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/compact/SKILL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/compact/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/health-check/SKILL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/health-check/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/health-check/scripts/collect.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/import-adrs/SKILL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/import-adrs/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/manage-domains/SKILL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/manage-domains/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/name-domains/SKILL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/name-domains/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/setup/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/stats/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/triage-drift/SKILL.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/adr.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/adr_cli.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/adr_files.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/adr_identity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/anchoring.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bash_paths.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/__init__.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/apply.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/catalog.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/cli.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/integrations.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/model.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/planner.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/proof.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/review.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/bootstrap/scan.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/checkout_window.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/cli.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/config.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/delivery.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/doc_import.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/doctor.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/domain_snapshot.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/domains.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/drift_checks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/drift_groups.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/engine/__init__.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/engine/rationale.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/engine/reader.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/freshness.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/gitenv.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/githooks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/gitio.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/__init__.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/claude_settings.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/diagnostics.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/hooks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/launch.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/mcp_entry.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/session_identity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/host/subagent.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/hot_index.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/importer.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/input_limits.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/integrity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/maintenance.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/maintenance_clock.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/md_sections.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/migrate.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/nearest_anchored.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/okf.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/profiles.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/redaction_scan.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/redaction_tokens.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/retrieval.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/schema.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/seed_ladder.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/stats/__init__.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/stats/model.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/stats/render.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store_format.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store_layout.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store_rules.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/store_view.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/sync.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/text_paths.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/tool_rate_limit.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/validation_errors.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/verify.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/__init__.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/model.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/render.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/viz/template.html +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/worktree_seeds.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/src/sidegraph/write_boundary.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/__init__.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/bounded_listings_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/conftest.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/drift_checks_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/drift_groups_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bitfinex_slice.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/graph.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/openspec/_provenance.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/openspec/graph.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/self-corpus/_provenance.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/corpus/self-corpus/graph.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
- {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
- {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
- {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
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/sad.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/design-empty.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/design.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/proposal.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
- {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
- {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
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/spec-kit/plan.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/member_names_python_graph.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/member_names_swift_graph.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/fixtures/mini_graph.json +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/githooks_legacy_helper.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/githooks_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/graph_fixtures.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/graph_repo_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/membership_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/moved_adoption_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/opencode_plugin_runner.mjs +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/snapshot_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/store_format2_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/store_non_file_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/store_record_support.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_adr.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_adr_files.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_adr_identity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_agent_brief_manifests.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchor_descriptor.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchor_paths.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchoring.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchoring_mapping_refresh.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_anchoring_membership.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bash_paths.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_batch_panel_fixes.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_apply.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_catalog.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_cli.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_integrations.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_model.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_planner.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_proof.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_review.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_scan.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_scan_regular.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_bootstrap_unanchored.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_auto_accept.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_facts.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_initiative.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_integration.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_propose.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_capture_redact.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_check_fold_wiring.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_checkout_window.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_ci_workflow.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_claude_plugin_enabled.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_adr.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_compact.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_compact_format2.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_doctor.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_domains.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_domains_snapshot.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_graph_paths.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_import.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_init.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_init_hooks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_okf.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_ratify.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_ratify_facts.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_stats.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_store_open_errors.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_store_precedence.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_sync.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_sync_check.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_unreadable_paths.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_cli_viz.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_codex_plugin.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_command_windows.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_community_baseline.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_compact_skill.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_config.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_config_ancestor_lookup.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_config_borrowed_graph.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_corpus_expected_renders.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_corpus_self_corpus.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_coverage_telemetry_e2e.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_declared_sections_docs.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_declared_sections_schema.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_delivery_evidence.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_delivery_stats.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_delivery_surfaces.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_digest_integrity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doc_corpus_integration.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doc_import.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_auto_share.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_code_drift.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_dangling_supports.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_declared_sections.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_duplicate_entity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_graph_root_mismatch.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_graph_stale.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_grouped_drift.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_integrity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_never_surfaced.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_record_identity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_scan.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_stale_instructions.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_unhashable_payload.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_doctor_unratified_accept.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_domain_seed_names.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_domain_snapshot_format.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_domain_snapshot_notices.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_domains.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_checks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_checks_blobs.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_checks_packed.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_groups.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_recency.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_drift_stamp_cache.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_engine_build.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_entity_duplicate_resolution.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_entity_get_or_create_race.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_entity_twins.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_entry_point_arguments.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_env_isolation.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_fact_reachability_gate.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_file_bound_retrieval.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_flow_profile.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_format2_notices.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_format2_windows.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_bindings_blame.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_bindings_hook.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_bindings_provenance.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_env.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_git_output_utf8.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_githooks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_githooks_atomic_lock.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_graph_freshness.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_grok_hooks_manifest.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_grok_session_map.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_grok_stop.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_health_check_skill.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_body_compaction.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_contention.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_failure_diagnostics.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_payload_encoding.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_showings.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hook_spawn_guard.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_agent_brief.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_agent_state.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_borrowed_graph.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_claude_settings.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_drift_nudge.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_grok_tools.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_integrity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_launch.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_pretool.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_pretool_records.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_session_key.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_session_start.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_session_start_concurrent.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_stop.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_subagent_start.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_subdirectory_launch.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_touch_events.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_host_wiring_checks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hot_index.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hot_index_facts.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hot_index_hook.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_hot_path_imports.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_import_dry_run_preview.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_importer.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_index_journal_mode.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity_engine_version.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity_refresh_hook.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity_replay.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_integrity_stranded.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_lazy_root.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_maintenance_clock.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_maintenance_dry_run_parity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_maintenance_plan.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_maintenance_publish.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_markdown_it_dependency.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_mcp_entry_ratify_policy.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_mcp_entry_repo_root.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_md_sections.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_member_anchor_wiring.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_merge_matrix_format2.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_migrate.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_mind_model_additive_fields.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_muse_hook_adapter.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_nearest_anchored.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_okf.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_opencode_plugin.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_openspec_profile.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_pathless_descriptor_adoption.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_pilot_kit_corpus_fit.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_portable_json.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_private_tests_isolation.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_proposal_lifecycle.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_public_hook_launch.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_ratify_listing_gone_dark.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_ratify_policy.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_rationale_compatibility.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_community_labels.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_doc_nodes.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_engine_version.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_file_labels.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_graph.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_integration.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_label_conventions.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_member_name_lookup.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_member_names.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_nodes_in_file.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_perf.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_rationale.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_read.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_resolve.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_stub_collapse.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_subdir_mismatch.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_type_split.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_reader_version.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_readers_format2.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_rebuild_instruction.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_record_drift_check_sections.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_record_drift_check_sections_input.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_redaction_scan.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_redaction_seeded.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_redaction_tokens.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_repo_relative_paths_portable.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_repoint_integration.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_budget_counters.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_context.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_drift_marker.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_drilldown.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_facts.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_guessed.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_ids.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_integration.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_membership_generations.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_membership_index.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_rank.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_related_cap.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_seeds.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_shown_ids.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_terminal_evidence.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_thin_tools.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_toc.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_toptier.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_retrieval_unratified.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_schema_descriptor.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_schema_domain.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_schema_fact.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_capture_diagnostics.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_capture_limits.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_cli_diagnostics.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_doc_limits.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_mcp_write_diagnostics.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_numeric_enums.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_python_shapes.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_redaction_cursor.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_validation_errors.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_security_write_boundary.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_seed_ladder.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_seed_paths_portable.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_add_anchors.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_anchoring.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_annotations.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_argument_names.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_borrowed_graph.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_capture.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_commit_hint.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_coverage_events.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_decision_listing.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_domains.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_drilldown.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_facts.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_find_entity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_get_store.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_get_task_context.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_graph_freshness.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_graph_path.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_import.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_invocation_policy.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_mcp_smoke.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_nearest_anchored.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_prewrite_anchor_validation.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_ratify_facts.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_record_types.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_redaction.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_refresh.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_render_events.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_result_contract.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_supersede.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_sync_anchors.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_telemetry.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_thin_tools.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_tolerant_seeds.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_server_verify.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_session_attribution.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_skill_frontmatter.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_graph.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_health.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_model.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_render.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_skill.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stats_snapshot.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stop_hot_path.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_stop_rearm.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_agent_state.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_atomic_write_tmp_names.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_bad_file.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_binding_index.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_canonical_stat.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_compact.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_coverage_telemetry.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_cross_process_mutations.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_derived_community.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_domain_members.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_domains.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_entities.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_fact_cascade.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_facts.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_file_anchor_names.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_format.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_format2_load.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_format2_marker.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_format2_writes.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_git_root_symlink.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_inventory.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_junctions.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_marker_checkout.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_marker_checkout_race.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_meta.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_migration.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_mutation_guard.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_mutation_immediate.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_non_file_entries.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_opens_with_merged_duplicate.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_persistence.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_ratification.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_rebuild_atomicity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_record_identity.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_record_types.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_render_events.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_requirement.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_retrieval.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_rules.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_rules_legacy_defaults.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_slug_conflicts.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_snapshot_wiring.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_stamping_marker.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_symlinks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_telemetry.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_threading.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_tmp_sweep_age.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_store_update_meta_if.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_subagent_start_manifests.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_subprocess_text_encoding.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_canonical_writes.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_clean.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_domains.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_drift_cache.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_drift_stamps.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_fresh_clone.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_integration.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_membership.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_moved_adoption.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_rebind.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_repoint.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_report_has_findings.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_run.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_snapshot_membership.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_toc_cache.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_volatile_heal.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_sync_wiring.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_telemetry_retention.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_text_paths.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_domain_snapshot.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_format2_against.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_format2_snapshot.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_git_framing.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_git_revisions.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_git_stdin.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_packed_checks.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_packed_checks_against.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_snapshot.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_verify_transitions.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_viz_asset_packaged.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_viz_model.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_viz_render_html.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_viz_render_json.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/test_worktree_seeds.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/wheel_server_trace.py +0 -0
- {sidegraph-0.22.0 → sidegraph-0.23.0}/tests/wheel_smoke.py +0 -0
- {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/
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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
|
-
- **
|
|
15
|
-
|
|
16
|
-
`
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
- **
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
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
|
|
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.
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
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.
|
|
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
|
-
│
|
|
63
|
-
└──
|
|
64
|
-
|
|
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 #
|
|
67
|
-
|
|
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/`):
|
|
78
|
-
|
|
79
|
-
|
|
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
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
This is a personal open-source project with a single maintainer, so
|
|
44
|
-
public issue, is the one route for any private report, conduct or security
|
|
45
|
-
|
|
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
|
|
10
|
-
consequence for you:
|
|
20
|
+
replaces its tree wholesale from the upstream working repository. In practice:
|
|
11
21
|
|
|
12
|
-
- **Issues are the best channel
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
applied
|
|
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
|
|
23
|
-
uv run pytest tests/test_store.py -q -x --lf # while editing: the
|
|
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
|
|
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
|
-
|
|
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
|
|
64
|
-
and a selected native Windows
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|