sidegraph 0.17.1__tar.gz → 0.17.2__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.17.1 → sidegraph-0.17.2}/CHANGELOG.md +25 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/CLAUDE.md +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/PKG-INFO +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/ci-cd-maintenance.md +9 -7
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/cli.md +10 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/hooks.md +4 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/mcp-tools.md +34 -13
- {sidegraph-0.17.1 → sidegraph-0.17.2}/package.json +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/.claude-plugin/plugin.json +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/.codex-plugin/plugin.json +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/.muse-plugin/plugin.json +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/explain-why/SKILL.md +4 -2
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/heal-anchors/SKILL.md +21 -14
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/manage-domains/SKILL.md +5 -6
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/triage-drift/SKILL.md +27 -11
- {sidegraph-0.17.1 → sidegraph-0.17.2}/pyproject.toml +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/__init__.py +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/cli.py +9 -2
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/doctor.py +46 -6
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/host/hooks.py +12 -3
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/integrity.py +16 -3
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/server.py +48 -19
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/validation_errors.py +21 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bounded_listings.py +28 -9
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_doctor.py +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_code_drift.py +2 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_integrity.py +2 -1
- sidegraph-0.17.2/tests/test_doctor_record_identity.py +138 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_stale_instructions.py +2 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_drift_checks.py +46 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_pretool_records.py +30 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_integrity.py +2 -2
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_readers_format2.py +5 -2
- {sidegraph-0.17.1 → sidegraph-0.17.2}/uv.lock +1 -1
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.agents/plugins/marketplace.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.claude-plugin/marketplace.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/CODEOWNERS +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/secret_scanning.yml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/workflows/ci.yml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/workflows/publish.yml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/workflows/scorecard.yml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.github/workflows/session-link-gate.yml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.gitignore +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.gitleaks.toml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.opencode/INSTALL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.pre-commit-config.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/.python-version +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/AGENTS.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/CODE_OF_CONDUCT.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/CONTRIBUTING.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/LICENSE +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/README.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/SECURITY.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/README.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/concepts/anchoring.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/concepts/data-model.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/concepts/decision-memory.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/concepts/mind-model.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/concepts/retrieval.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/getting-started/bootstrap.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/getting-started/claude-code-setup.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/getting-started/codex-setup.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/getting-started/installation.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/getting-started/quickstart.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/adr-export.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/capturing-decisions.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/health-check.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/migrating-to-0.14.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/migrating-to-0.17.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/naming-your-domains.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/retrieval-in-sessions.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/semantic-docs.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/surviving-refactors.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/team-workflow.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/troubleshooting.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/using-0.15.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/using-0.16.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/guides/verifying-your-setup.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/integrations/claude-code.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/integrations/codex.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/integrations/graphify.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/integrations/grok.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/integrations/muse.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/integrations/opencode.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/llms.txt +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/pilot-kit/README.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/pilot-kit/corpus_fit.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/pilot-kit/judge-prompt.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/pilot-kit/questions-prompt.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/pilot-kit/rubric-template.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/configuration.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/git-bindings.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/operations.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/releasing.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/stability.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/reference/store-format.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/docs/whitepaper/index.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/index.js +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/.mcp.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/codex/hooks.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/codex/mcp.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/hooks/hooks.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/compact/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/compact/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/health-check/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/health-check/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/health-check/scripts/collect.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/import-adrs/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/import-adrs/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/manage-domains/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/name-domains/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/name-domains/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/record-decision/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/record-fact/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/setup/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/setup/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/stats/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/adr.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/adr_cli.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/adr_files.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/adr_identity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/anchoring.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bash_paths.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/__init__.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/apply.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/catalog.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/cli.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/integrations.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/model.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/planner.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/proof.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/review.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/bootstrap/scan.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/capture.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/config.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/delivery.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/doc_import.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/domain_snapshot.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/domains.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/drift_checks.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/engine/__init__.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/engine/rationale.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/engine/reader.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/freshness.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/gitenv.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/githooks.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/gitio.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/host/__init__.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/host/claude_settings.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/host/diagnostics.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/host/launch.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/host/mcp_entry.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/host/session_identity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/host/subagent.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/hot_index.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/importer.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/input_limits.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/maintenance.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/maintenance_clock.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/migrate.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/nearest_anchored.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/okf.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/profiles.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/redaction_scan.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/redaction_tokens.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/retrieval.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/schema.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/seed_ladder.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/stats/__init__.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/stats/model.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/stats/render.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/store.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/store_format.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/store_layout.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/store_rules.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/store_view.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/sync.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/text_paths.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/tool_rate_limit.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/verify.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/viz/__init__.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/viz/model.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/viz/render.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/viz/template.html +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/worktree_seeds.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/src/sidegraph/write_boundary.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/__init__.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/bounded_listings_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/conftest.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/drift_checks_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bitfinex_slice.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/graph.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/corpus/openspec/_provenance.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/corpus/openspec/graph.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/corpus/self-corpus/_provenance.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/corpus/self-corpus/graph.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/.memlog.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/prds/prd-payments-2026-07-30/prd.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/genkovich/sad.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/design-empty.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/design.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/proposal.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/design.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/proposal.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/spec-kit/plan.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/member_names_python_graph.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/member_names_swift_graph.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/fixtures/mini_graph.json +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/githooks_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/graph_fixtures.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/graph_repo_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/membership_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/moved_adoption_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/opencode_plugin_runner.mjs +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/snapshot_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/store_format2_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/store_non_file_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/store_record_support.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_adr.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_adr_files.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_adr_identity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_agent_brief_manifests.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_anchor_descriptor.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_anchor_paths.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_anchoring.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_anchoring_mapping_refresh.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_anchoring_membership.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bash_paths.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_batch_panel_fixes.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_apply.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_catalog.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_cli.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_integrations.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_model.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_planner.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_proof.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_review.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_scan.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_scan_regular.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_bootstrap_unanchored.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_capture_auto_accept.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_capture_facts.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_capture_initiative.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_capture_integration.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_capture_neighbors.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_capture_propose.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_capture_redact.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_adr.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_compact.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_compact_format2.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_domains.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_domains_snapshot.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_graph_paths.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_import.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_init.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_init_hooks.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_okf.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_ratify.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_ratify_facts.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_stats.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_store_precedence.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_sync.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_sync_check.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_unreadable_paths.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_cli_viz.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_codex_plugin.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_command_windows.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_community_baseline.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_compact_skill.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_config.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_config_ancestor_lookup.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_config_borrowed_graph.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_corpus_expected_renders.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_corpus_self_corpus.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_coverage_telemetry_e2e.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_delivery_evidence.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_delivery_stats.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_delivery_surfaces.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_digest_integrity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doc_corpus_integration.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doc_import.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_docs_claims.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_auto_share.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_dangling_supports.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_duplicate_entity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_graph_root_mismatch.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_graph_stale.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_never_surfaced.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_scan.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_unhashable_payload.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_doctor_unratified_accept.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_domain_seed_names.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_domain_snapshot_format.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_domain_snapshot_notices.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_domains.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_engine_build.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_entity_duplicate_resolution.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_entity_get_or_create_race.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_entity_twins.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_entry_point_arguments.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_env_isolation.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_fact_reachability_gate.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_file_bound_retrieval.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_flow_profile.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_format2_notices.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_git_bindings_blame.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_git_bindings_hook.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_git_bindings_provenance.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_git_env.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_git_output_utf8.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_githooks.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_graph_freshness.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_graphify_pin.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_health_check_skill.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hook_body_compaction.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hook_contention.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hook_failure_diagnostics.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hook_payload_encoding.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hook_showings.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hook_spawn_guard.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_agent_brief.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_agent_state.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_borrowed_graph.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_claude_settings.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_drift_nudge.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_integrity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_launch.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_pretool.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_session_key.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_session_start.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_session_start_concurrent.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_stop.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_subagent_start.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_subdirectory_launch.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_touch_events.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_host_wiring_checks.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hot_index.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hot_index_facts.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hot_index_hook.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_hot_path_imports.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_import_dry_run_preview.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_importer.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_index_journal_mode.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_integrity_engine_version.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_integrity_refresh_hook.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_integrity_replay.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_integrity_stranded.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_lazy_root.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_maintenance_clock.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_maintenance_dry_run_parity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_maintenance_plan.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_maintenance_publish.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_mcp_entry_ratify_policy.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_mcp_entry_repo_root.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_member_anchor_wiring.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_merge_matrix_format2.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_migrate.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_mind_model_additive_fields.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_muse_plugin.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_nearest_anchored.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_okf.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_opencode_plugin.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_openspec_profile.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_pathless_descriptor_adoption.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_pilot_kit_corpus_fit.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_portable_json.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_private_tests_isolation.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_proposal_lifecycle.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_public_hook_launch.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_ratify_listing_gone_dark.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_ratify_policy.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_rationale_compatibility.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_community_labels.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_doc_nodes.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_engine_version.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_file_labels.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_graph.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_integration.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_label_conventions.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_member_name_lookup.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_member_names.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_nodes_in_file.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_perf.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_rationale.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_read.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_resolve.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_stub_collapse.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_subdir_mismatch.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_type_split.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_reader_version.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_rebuild_instruction.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_redaction_scan.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_redaction_seeded.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_redaction_tokens.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_repo_relative_paths_portable.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_repoint_integration.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_budget_counters.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_context.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_drift_marker.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_drilldown.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_facts.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_guessed.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_ids.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_integration.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_membership_generations.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_membership_index.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_rank.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_seeds.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_shown_ids.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_terminal_evidence.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_thin_tools.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_toc.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_toptier.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_retrieval_unratified.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_schema_descriptor.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_schema_domain.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_schema_fact.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_capture_diagnostics.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_capture_limits.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_cli_diagnostics.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_doc_limits.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_input_limits.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_mcp_write_diagnostics.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_numeric_enums.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_python_shapes.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_redaction_cursor.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_validation_errors.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_security_write_boundary.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_seed_ladder.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_seed_paths_portable.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_add_anchors.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_anchoring.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_annotations.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_argument_names.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_borrowed_graph.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_capture.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_commit_hint.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_coverage_events.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_decision_listing.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_domains.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_drilldown.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_facts.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_find_entity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_get_store.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_get_task_context.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_graph_freshness.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_graph_path.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_import.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_invocation_policy.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_mcp_smoke.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_nearest_anchored.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_prewrite_anchor_validation.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_ratify_facts.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_record_types.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_redaction.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_refresh.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_render_events.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_result_contract.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_supersede.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_sync_anchors.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_telemetry.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_thin_tools.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_tolerant_seeds.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_server_verify.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_session_attribution.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_skill_frontmatter.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_stats_graph.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_stats_health.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_stats_model.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_stats_render.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_stats_skill.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_stats_snapshot.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_stop_hot_path.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_stop_rearm.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_agent_state.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_atomic_write_tmp_names.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_bad_file.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_binding_index.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_canonical_stat.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_compact.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_coverage_telemetry.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_cross_process_mutations.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_derived_community.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_domain_members.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_domains.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_entities.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_fact_cascade.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_facts.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_file_anchor_names.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_format.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_format2_load.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_format2_marker.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_format2_writes.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_git_root_symlink.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_inventory.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_meta.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_migration.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_mutation_guard.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_mutation_immediate.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_non_file_entries.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_opens_with_merged_duplicate.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_persistence.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_ratification.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_rebuild_atomicity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_record_identity.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_record_types.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_render_events.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_requirement.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_retrieval.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_rules.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_slug_conflicts.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_snapshot_wiring.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_stamping_marker.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_symlinks.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_telemetry.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_threading.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_tmp_sweep_age.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_store_update_meta_if.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_subagent_start_manifests.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_subprocess_text_encoding.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_canonical_writes.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_clean.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_domains.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_drift_cache.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_fresh_clone.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_integration.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_membership.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_moved_adoption.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_rebind.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_repoint.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_report_has_findings.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_run.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_snapshot_membership.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_toc_cache.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_volatile_heal.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_sync_wiring.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_telemetry_retention.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_text_paths.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_verify_domain_snapshot.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_verify_format2_against.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_verify_format2_snapshot.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_verify_git_framing.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_verify_git_revisions.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_verify_git_stdin.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_verify_snapshot.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_verify_transitions.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_viz_asset_packaged.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_viz_model.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_viz_render_html.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_viz_render_json.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/test_worktree_seeds.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/wheel_server_trace.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tests/wheel_smoke.py +0 -0
- {sidegraph-0.17.1 → sidegraph-0.17.2}/tools/check_no_session_links.py +0 -0
|
@@ -7,6 +7,31 @@ interfaces, exactly, and what each one promises: [`docs/reference/stability.md`]
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.17.2] — 2026-10-25
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Doctor identifies per-record advisory findings with `record_id` and `record_type` in
|
|
15
|
+
JSON and prints the subject beside its physical path in text. Decisions sharing one
|
|
16
|
+
packed shard, source file and capture commit can now be triaged separately. This also
|
|
17
|
+
covers never-surfaced, orphaned-record, binding and other record findings; global notes
|
|
18
|
+
remain subjectless. Fixes [#1](https://github.com/SantyagoSeaman/sidegraph/issues/1).
|
|
19
|
+
- MCP domain-listing hints use the local Store API for oversized records, including packed
|
|
20
|
+
domains, and pending-proposal hints explain the visibility policy instead of promising
|
|
21
|
+
that an explicit id can bypass it.
|
|
22
|
+
- Drift checks distinguish missing required anchor files, absent checkable anchors and
|
|
23
|
+
untracked inspected paths with safe fixed diagnostics. Missing-scope errors explain how
|
|
24
|
+
to inspect the full anchor scope locally without reading SQLite. Unavailable anchor
|
|
25
|
+
entities and failed Git scope lookups get specific diagnostics before any check is published.
|
|
26
|
+
- Ratification refusals explain that an accepted decision or fact is not proposed. The
|
|
27
|
+
drift and anchor playbooks no longer recommend dropping accepted decisions, and clarify
|
|
28
|
+
that drift markers appear in formatted context rather than raw decision-listing JSON.
|
|
29
|
+
- PreToolUse refuses delivery before claiming files if a record-selection read fails.
|
|
30
|
+
Concurrent zero-wait hooks therefore cannot skip an unreadable early file and consume
|
|
31
|
+
different three-file sets from the same command.
|
|
32
|
+
- Complete the headless anchor-healing example's write-tool deny list with drift-check
|
|
33
|
+
writes and domain proposals.
|
|
34
|
+
|
|
10
35
|
## [0.17.1] — 2026-10-25
|
|
11
36
|
|
|
12
37
|
### Security
|
|
@@ -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.17.
|
|
16
|
+
Sidegraph is pre-1.0 (v0.17.2) — the full loop (capture, ratification, mistakes-first
|
|
17
17
|
retrieval, refactor-surviving re-anchoring, semantic docs layer, mind-model domains, and the
|
|
18
18
|
facts evidence layer) ships and is exercised end-to-end, but interfaces may still move before
|
|
19
19
|
a stable release. See
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sidegraph
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.2
|
|
4
4
|
Summary: Own the memory, rent the graph — a durable decision/lessons layer as a sidecar over a code-graph engine.
|
|
5
5
|
Project-URL: Homepage, https://github.com/SantyagoSeaman/sidegraph
|
|
6
6
|
Project-URL: Repository, https://github.com/SantyagoSeaman/sidegraph
|
|
@@ -10,9 +10,10 @@ unattended.
|
|
|
10
10
|
|
|
11
11
|
1. **CI never ratifies.** Nothing in these recipes calls `ratify`/`sidegraph-ratify --accept`
|
|
12
12
|
(or `--drop`, for that matter). A scheduled job may *propose* a superseding decision
|
|
13
|
-
(`propose_decisions` with `supersedes`) or
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
(`propose_decisions` with `supersedes`) or report obsolete subjects in its summary.
|
|
14
|
+
Recommend drop only for proposed decisions/facts or a supported domain drop; accepted
|
|
15
|
+
decisions without a meaningful successor retain their history. A proposal verdict
|
|
16
|
+
stays a human action. See [`heal-anchors`](../../plugin/sidegraph/skills/heal-anchors/SKILL.md#triage-decision-tree-re-anchor-supersede-or-report-an-obsolete-subject)
|
|
16
17
|
for the triage tree these jobs run. An auto-ratification policy would break this rule
|
|
17
18
|
without any `ratify` call — the transition rides `propose_decisions` itself, which the
|
|
18
19
|
deny list below cannot block. Legacy `SIDEGRAPH_AUTO_ACCEPT=on` bypasses the queue too.
|
|
@@ -316,9 +317,10 @@ jobs:
|
|
|
316
317
|
claude -p 'Run the heal-anchors playbook: call sync_anchors(force=True), then for
|
|
317
318
|
every orphaned/ambiguous entity and every stale decision, follow the triage tree —
|
|
318
319
|
add_anchors for code that moved, propose_decisions(supersedes=...) for content
|
|
319
|
-
that is genuinely outdated, and a
|
|
320
|
-
|
|
321
|
-
|
|
320
|
+
that is genuinely outdated, and a status-aware summary for obsolete subjects.
|
|
321
|
+
Recommend drop only for proposed decisions/facts or a supported domain drop;
|
|
322
|
+
retain accepted decision history when there is no meaningful successor.
|
|
323
|
+
Summarize every action taken and recommendation at the end.' \
|
|
322
324
|
--model "$SIDEGRAPH_TRIAGE_MODEL" \
|
|
323
325
|
--mcp-config mcp-config.json --strict-mcp-config \
|
|
324
326
|
--allowedTools "mcp__sidegraph__sync_anchors mcp__sidegraph__find_entity mcp__sidegraph__query_structure mcp__sidegraph__query_decisions mcp__sidegraph__add_anchors mcp__sidegraph__propose_decisions mcp__sidegraph__list_proposed mcp__sidegraph__retrieve_decisions mcp__sidegraph__get_entity_history mcp__sidegraph__list_facts mcp__sidegraph__verify_store" \
|
|
@@ -355,7 +357,7 @@ CLI default.
|
|
|
355
357
|
|
|
356
358
|
Do not add `--permission-mode bypassPermissions`: it disables both tool lists. The
|
|
357
359
|
`--disallowedTools` list is the ratification guard: it names the tools that ratify or write a
|
|
358
|
-
record directly
|
|
360
|
+
record directly, records a drift check, or proposes a domain. The allowlist only narrows normal MCP
|
|
359
361
|
access and can be widened by ambient host settings. Keep both. Read-only built-in
|
|
360
362
|
tools can still inspect the checkout in a headless run; the troubleshooting note below states
|
|
361
363
|
that boundary explicitly. The matching
|
|
@@ -1617,6 +1617,16 @@ neither flagged nor cleared. `drill_down` does record a `domain:<slug>` seed, bu
|
|
|
1617
1617
|
consumes it yet; its *shows* count normally, so surfacing only through a domain drill-down
|
|
1618
1618
|
still protects a decision from a false flag.
|
|
1619
1619
|
|
|
1620
|
+
Each JSON finding has `code`, `path`, `detail`, `record_id` and `record_type`.
|
|
1621
|
+
Per-record findings carry their logical identity (`decision`, `fact`, `entity`, `domain`,
|
|
1622
|
+
or `bindings`); global notes have null record fields. A malformed raw record whose id
|
|
1623
|
+
cannot be read also has a null subject; use its violation and physical path for repair. `path` retains the physical source,
|
|
1624
|
+
including a shared shard or archive segment, so it is not a record locator. Text prints
|
|
1625
|
+
`<code> <record_type>:<record_id> <path> <detail>` for identified subjects; global notes
|
|
1626
|
+
omit the subject column. `duplicate-entity` identifies the selected lowest-id entity;
|
|
1627
|
+
its detail names the other members. A `bindings` subject uses the bound record's id.
|
|
1628
|
+
Use `record_id` to retrieve or check a drifted decision; do not parse the shard or detail.
|
|
1629
|
+
|
|
1620
1630
|
`clean` is `true` only when both `violations` and `findings` are empty.
|
|
1621
1631
|
|
|
1622
1632
|
**Skipped checks.** A check that cannot look says so and is never a finding: it affects neither
|
|
@@ -832,6 +832,10 @@ permission flow, untouched:
|
|
|
832
832
|
session's own agent, so the main agent's keys do not start with any subagent's prefix. The value
|
|
833
833
|
is the claim's ISO timestamp. These keys are deliberately **not** the `Stop` hook's
|
|
834
834
|
`capture_sessions` ledger, so the guards can't consume each other.
|
|
835
|
+
If any record-selection read fails, the hook refuses this delivery before claiming any
|
|
836
|
+
file. An unreadable early file is not treated as an empty one: otherwise parallel hooks
|
|
837
|
+
could choose different triples from the same command. A later clean call may deliver
|
|
838
|
+
the files because this refusal consumes no per-file claim or showing.
|
|
835
839
|
7. If at least one claim succeeded, the winner emits one non-blocking, `additionalContext`-only
|
|
836
840
|
block for the files it won:
|
|
837
841
|
|
|
@@ -765,8 +765,10 @@ hundreds of records, so the answer fills in this order:
|
|
|
765
765
|
`omitted_ids_unlisted` counts ids the budget cut as well.
|
|
766
766
|
|
|
767
767
|
Nothing is dropped silently: a superseded record is at worst a short row or a bare id. Read an
|
|
768
|
-
omitted decision with `
|
|
769
|
-
`
|
|
768
|
+
omitted decision locally with `Store.get_decision(id)` and an omitted fact with
|
|
769
|
+
`Store.get_fact(id)` on the configured store, or narrow with `status=[...]` (for example
|
|
770
|
+
`["superseded"]`). Explicit-id `retrieve_decisions`/`list_facts` calls still obey the
|
|
771
|
+
proposal-surfacing policy and may omit older or regulated-mode proposals.
|
|
770
772
|
`omitted_records` and `omitted_ids` appear only when something was left out.
|
|
771
773
|
|
|
772
774
|
## `get_task_context`
|
|
@@ -1228,10 +1230,13 @@ initial prefix of complete rows, sorted by slug. Each row retains the existing f
|
|
|
1228
1230
|
"seed_anchor_count", "parent_slug", "child_slugs"}`. `member_count` remains
|
|
1229
1231
|
`len(domain.communities)`. Parent/child lineage comes from the full store even when filters
|
|
1230
1232
|
exclude relatives. When the character budget omits rows, `hint` identifies the effective bound,
|
|
1231
|
-
suggests filters, and names a bounded
|
|
1232
|
-
(
|
|
1233
|
-
|
|
1234
|
-
`
|
|
1233
|
+
suggests filters, and names a bounded local Python fallback for the next omitted domain:
|
|
1234
|
+
`Store.get_domain("<id>")` on the configured store. It returns the full model, including
|
|
1235
|
+
`seed_anchors`, for both per-record and packed layouts. Open the configured store with
|
|
1236
|
+
`with Store(store_path) as store:` and call `store.get_domain(id)`; a domain may no longer
|
|
1237
|
+
have an individual `.json` file. If the id itself cannot fit the hint, use
|
|
1238
|
+
`Store.iter_domains()`. This local Store access can rebuild the derived index; it is distinct
|
|
1239
|
+
from the read-only MCP listing.
|
|
1235
1240
|
When `limit` cuts the list, the hint suggests filters and raising `limit` only below 100. Empty
|
|
1236
1241
|
stores say `No domains in the store.`; empty filtered matches name active filter keys without
|
|
1237
1242
|
echoing their values. This is the provisional MCP return shape and sends no output schema or
|
|
@@ -1494,12 +1499,14 @@ When the queue does not fit, the first line counts it (`Pending: 31 decisions, 4
|
|
|
1494
1499
|
domains. Showing 18 decisions, 0 facts, 2 domains.`), the sections fill in order with the
|
|
1495
1500
|
blocks that fit (a block that does not fit is skipped and the fill goes on), and the end lists
|
|
1496
1501
|
what is missing, in the order of the blocks, as `<id> <title head>` entries (then `and N more
|
|
1497
|
-
ids`).
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1502
|
+
ids`). Read every item before deciding its verdict. The hint explains that decision
|
|
1503
|
+
or fact proposals may be hidden from `retrieve_decisions`/`list_facts` by the proposal
|
|
1504
|
+
window or regulated mode;
|
|
1505
|
+
explicit ids do not bypass that policy. Inspect omitted decisions locally with
|
|
1506
|
+
`Store.get_decision(id)` and omitted facts with `Store.get_fact(id)` on the configured
|
|
1507
|
+
store, or use `sidegraph-ratify` without flags for the full pending queue. Domains use
|
|
1508
|
+
`list_domains(status="proposed")`. Ratify what is shown, then call again, or raise
|
|
1509
|
+
`budget_chars`.
|
|
1503
1510
|
|
|
1504
1511
|
**Returns:** a plain-text string.
|
|
1505
1512
|
|
|
@@ -1556,6 +1563,12 @@ makes `bootstrap → ratify` turn the TOC on in the same session, without waitin
|
|
|
1556
1563
|
two only ever appear for a fact id that rode a decision's cascade rather than being named
|
|
1557
1564
|
directly.
|
|
1558
1565
|
|
|
1566
|
+
Decisions and facts can be accepted or dropped only while `proposed`. A refusal names
|
|
1567
|
+
the existing status; an accepted decision cannot be retired through `drop`. Propose a
|
|
1568
|
+
meaningful supersession when the recorded claim becomes obsolete. If no successor exists,
|
|
1569
|
+
report that limitation and retain history rather than editing canonical status fields.
|
|
1570
|
+
Domain drop has its separate accepted-domain exception.
|
|
1571
|
+
|
|
1559
1572
|
## `ratify_decisions` (deprecated)
|
|
1560
1573
|
|
|
1561
1574
|
```python
|
|
@@ -1815,7 +1828,15 @@ that exact HEAD; unrelated dirty files do not block the check. All current check
|
|
|
1815
1828
|
concrete anchor files are required; explicitly inspected dependencies may extend coverage.
|
|
1816
1829
|
Unknown binding status conservatively includes existing committed anchor paths. Abstract-only,
|
|
1817
1830
|
unstamped, skipped or terminal subjects, missing Git HEAD, incomplete scope and dirty
|
|
1818
|
-
inspected files are refused without a new check.
|
|
1831
|
+
inspected files are refused without a new check. Missing required anchors return the
|
|
1832
|
+
fixed code `missing_required_files`, distinct from `no_checkable_files` and `untracked_files`.
|
|
1833
|
+
To inspect the scope locally without querying SQLite, open the configured Store, call
|
|
1834
|
+
`store.bindings_for_record(decision_id)`, and resolve each `binding.entity_id` with
|
|
1835
|
+
`store.get_entity(...)`; inspect the descriptors' file paths and current Git entries.
|
|
1836
|
+
Include every current checkable concrete anchor, not just doctor's changed-file subset.
|
|
1837
|
+
An unloadable required entity returns `unavailable_anchor_scope`; a failed initial Git
|
|
1838
|
+
scope lookup returns `git_scope_unavailable`. Both refusals occur before check publication.
|
|
1839
|
+
Write errors keep their bounded schema vocabulary and do not echo file names or raw causes.
|
|
1819
1840
|
|
|
1820
1841
|
The result names `id`, `decision_id`, `checked_commit`, `required_files`, `checked_files`,
|
|
1821
1842
|
`provenance`, `cache_cleared` and `redactions`. `cache_cleared` only says whether an existing
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sidegraph",
|
|
3
3
|
"displayName": "Sidegraph",
|
|
4
|
-
"version": "0.17.
|
|
4
|
+
"version": "0.17.2",
|
|
5
5
|
"description": "Durable decision/lessons memory over your code graph — ADRs, gotchas, and constraints that survive refactors, retrieved mistakes-first.",
|
|
6
6
|
"author": { "name": "SantyagoSeaman", "url": "https://github.com/SantyagoSeaman" },
|
|
7
7
|
"homepage": "https://github.com/SantyagoSeaman/sidegraph",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sidegraph",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.2",
|
|
4
4
|
"description": "Durable decision/lessons memory over your code graph — ADRs, gotchas, and constraints that survive refactors, retrieved mistakes-first.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"skills": "./skills/",
|
|
@@ -45,8 +45,10 @@ accepted it yet — present it as a proposal, not settled memory.
|
|
|
45
45
|
|
|
46
46
|
`get_entity_history` returns superseded records too — that's the point. On a long-lived
|
|
47
47
|
entity the newest records come in full and the rest as short rows (`omitted_records`) or bare
|
|
48
|
-
ids (`omitted_ids`)
|
|
49
|
-
|
|
48
|
+
ids (`omitted_ids`). Explicit-id `retrieve_decisions` / `list_facts` calls obey the
|
|
49
|
+
proposal-surfacing policy and can omit old or regulated-mode proposals. For complete local
|
|
50
|
+
records use `Store.get_decision(id)` / `Store.get_fact(id)` on the configured store, or
|
|
51
|
+
narrow history with `status=["superseded"]`. The answer to a
|
|
50
52
|
why-question has two layers, and the reader deserves both, clearly separated:
|
|
51
53
|
|
|
52
54
|
1. **Current truth** — the live (`accepted`) records: the standing decision, its
|
|
@@ -74,6 +74,9 @@ store write or a source change: confirm before acting.
|
|
|
74
74
|
with **explicit fresh `anchors` pointing at the successor code**. Do NOT omit
|
|
75
75
|
`anchors` here: omitting inherits the predecessor's bindings verbatim — *including
|
|
76
76
|
their orphaned status* — which reproduces exactly the problem you're healing.
|
|
77
|
+
If an accepted decision has no meaningful successor, report the obsolete subject to
|
|
78
|
+
the human and retain its history. `ratify(drop=...)` rejects only proposed decisions
|
|
79
|
+
and facts; it cannot retire an accepted decision. Do not edit canonical status fields.
|
|
77
80
|
2. **A lone `orphaned: <name> (no match)`** whose decision is NOT in the stale block —
|
|
78
81
|
multi-anchor did its job: another anchor still holds the decision live. No action
|
|
79
82
|
needed unless the orphaned one was the load-bearing anchor.
|
|
@@ -89,8 +92,9 @@ store write or a source change: confirm before acting.
|
|
|
89
92
|
domain's frozen membership is, and a re-scope applies only after
|
|
90
93
|
`sidegraph-domains snapshot --refresh --domain <slug>`); read the old rule back first
|
|
91
94
|
(`list_domains(ids=[<domain_id>])` returns the exact complete row, including
|
|
92
|
-
`path_prefixes`; check its `hint` and use its local
|
|
93
|
-
for the actual `seed_anchors` list
|
|
95
|
+
`path_prefixes`; check its `hint` and use its local Store fallback if the row does not fit;
|
|
96
|
+
for the actual `seed_anchors` list use local Python `Store.get_domain(domain_id)`
|
|
97
|
+
on the configured store, which works for files and packed shards) and carry what's still
|
|
94
98
|
right — then `ratify(accept=[<new_id>])`. Or retire it: `ratify(drop=[<domain_id>])`
|
|
95
99
|
if the area is genuinely gone.
|
|
96
100
|
5. **`path rule too broad — path contribution dropped (...):`** — a `path_prefixes` rule
|
|
@@ -127,7 +131,7 @@ store write or a source change: confirm before acting.
|
|
|
127
131
|
not, `ratify(drop=[<the part that should not exist>])`: the remaining domain takes the
|
|
128
132
|
frozen membership back at once.
|
|
129
133
|
|
|
130
|
-
## Triage decision tree (
|
|
134
|
+
## Triage decision tree (re-anchor, supersede, or report an obsolete subject)
|
|
131
135
|
|
|
132
136
|
For every `orphaned`/`ambiguous` entity and every `stale_decisions` entry, walk this tree
|
|
133
137
|
before touching anything — the same tree whether you're triaging interactively or running
|
|
@@ -174,16 +178,17 @@ is gated on a human's `ratify`. Never call `supersede_decision`/`supersede_fact`
|
|
|
174
178
|
immediately-`accepted` MCP tools) from an unattended/CI context — unlike `propose_decisions`,
|
|
175
179
|
they skip the ratify gate entirely.
|
|
176
180
|
|
|
177
|
-
**(c) The subject is genuinely gone.**
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
181
|
+
**(c) The subject is genuinely gone.** Confirm that it was deleted rather than renamed
|
|
182
|
+
or moved. Check the record's current status. For an accepted decision, propose a meaningful
|
|
183
|
+
supersession when something remains true or successor code exists; otherwise report the
|
|
184
|
+
obsolete subject and retain its history. There is no accepted-decision retirement API.
|
|
185
|
+
`ratify(drop=[<id>])` and `sidegraph-ratify --drop <id>` reject only proposed decisions/facts.
|
|
186
|
+
Recommend those only for proposed records, and leave the verdict to the human. Domain drop
|
|
187
|
+
has its separate accepted-domain exception. Never edit canonical status or valid_to fields.
|
|
183
188
|
|
|
184
189
|
## Running this playbook headlessly (CI)
|
|
185
190
|
|
|
186
|
-
|
|
191
|
+
The lookup, binding-repair and proposal steps above can run without a human verdict
|
|
187
192
|
in the moment — `sync_anchors`/`find_entity`/`query_structure`/`add_anchors`/
|
|
188
193
|
`propose_decisions` all run fine unattended, and so do the tools that read records
|
|
189
194
|
(`retrieve_decisions`/`get_entity_history`/`list_facts`/`verify_store`) used to confirm a
|
|
@@ -199,12 +204,13 @@ policy would ratify through `propose_decisions` with no `ratify` call at all, wh
|
|
|
199
204
|
claude -p 'Run the heal-anchors playbook: call sync_anchors(force=True), then for every
|
|
200
205
|
orphaned/ambiguous entity and every stale decision, follow the triage tree — add_anchors
|
|
201
206
|
for code that moved, propose_decisions(supersedes=...) for content that is genuinely
|
|
202
|
-
outdated, and a
|
|
203
|
-
|
|
207
|
+
outdated, and a status-aware summary for obsolete subjects. Recommend drop only for
|
|
208
|
+
proposed decisions/facts or a supported domain drop; retain accepted decision history when
|
|
209
|
+
there is no meaningful successor. Do not call ratify. Summarize every action taken and every recommendation at the end.' \
|
|
204
210
|
--model claude-sonnet-5 \
|
|
205
211
|
--mcp-config mcp-config.json --strict-mcp-config \
|
|
206
212
|
--allowedTools "mcp__sidegraph__*" \
|
|
207
|
-
--disallowedTools "mcp__sidegraph__ratify,mcp__sidegraph__ratify_decisions,mcp__sidegraph__add_decision,mcp__sidegraph__supersede_decision,mcp__sidegraph__supersede_fact,mcp__sidegraph__supersede_domain,mcp__sidegraph__add_domain,mcp__sidegraph__add_fact" \
|
|
213
|
+
--disallowedTools "mcp__sidegraph__ratify,mcp__sidegraph__ratify_decisions,mcp__sidegraph__add_decision,mcp__sidegraph__supersede_decision,mcp__sidegraph__supersede_fact,mcp__sidegraph__supersede_domain,mcp__sidegraph__add_domain,mcp__sidegraph__add_fact,mcp__sidegraph__record_drift_check,mcp__sidegraph__propose_domains" \
|
|
208
214
|
--output-format stream-json --verbose
|
|
209
215
|
```
|
|
210
216
|
|
|
@@ -214,7 +220,8 @@ system itself consults, so under bypass they'd bind nothing at all, and the run
|
|
|
214
220
|
able to call every tool including `ratify`. **The `--disallowedTools` deny list is the
|
|
215
221
|
load-bearing guard**: it names the exact write-gate tools this playbook must never call
|
|
216
222
|
unattended — `ratify`/`ratify_decisions`, `add_decision`/`supersede_decision`,
|
|
217
|
-
`add_fact`/`supersede_fact`, `add_domain`/`supersede_domain`
|
|
223
|
+
`add_fact`/`supersede_fact`, `add_domain`/`supersede_domain`, `record_drift_check`,
|
|
224
|
+
`propose_domains` — and blocks them regardless
|
|
218
225
|
of the machine's ambient permission configuration. The `--allowedTools` wildcard is scoping,
|
|
219
226
|
not enforcement: on a pristine machine a headless `-p` run auto-denies *MCP* tool calls
|
|
220
227
|
outside it (no terminal to prompt), but a permissive user- or project-level `settings.json`
|
|
@@ -28,8 +28,8 @@ path_prefixes, seed_anchor_count, parent_slug, child_slugs}`. `member_count` is
|
|
|
28
28
|
`len(communities)` (0 for a domain not yet ratified/synced), and lineage reflects the full store.
|
|
29
29
|
Read `hint` before assuming the listing is complete. Narrow with `status`, `query` (AND terms
|
|
30
30
|
across slug/title/summary), or `ids` (exact domain ids). `limit` is clamped to 1..100 and
|
|
31
|
-
`budget_chars` to 4,000..40,000. A budget cut includes
|
|
32
|
-
the next omitted row; a count cut suggests filters and raising `limit` only while it is below
|
|
31
|
+
`budget_chars` to 4,000..40,000. A budget cut includes a local `Store.get_domain(id)` fallback for
|
|
32
|
+
the next omitted row in either storage layout; a count cut suggests filters and raising `limit` only while it is below
|
|
33
33
|
100. This is the tool for "show me all domains" — prefer it over the narrower views below:
|
|
34
34
|
|
|
35
35
|
- **`list_proposed()`** — domains awaiting ratification only (`status=proposed`), rendered
|
|
@@ -97,10 +97,9 @@ need git-history archaeology either:
|
|
|
97
97
|
the row still does not fit.
|
|
98
98
|
- **`seed_anchors`** has no structured tool-read for the descriptors themselves —
|
|
99
99
|
`list_domains()` gives you only `seed_anchor_count` (how many, not what). For the actual
|
|
100
|
-
`{"name", "file_path"}` list,
|
|
101
|
-
`.
|
|
102
|
-
see [store format](../../../../docs/reference/store-format.md))
|
|
103
|
-
not exposed through an MCP tool yet.
|
|
100
|
+
`{"name", "file_path"}` list, use local Python `Store.get_domain(domain_id)` on the configured store and read
|
|
101
|
+
its `seed_anchors`. This works for per-record files and packed shards; a domain may no
|
|
102
|
+
longer have its own `.json` file (see [store format](../../../../docs/reference/store-format.md)).
|
|
104
103
|
|
|
105
104
|
`supersede_domain` is also the mechanism behind the naming guide's [recovering from a
|
|
106
105
|
mass-drop](../../../../docs/guides/naming-your-domains.md#recovering-from-a-mass-drop): give
|
|
@@ -28,10 +28,18 @@ The CLI runs through uvx at the session's version, never the copy on `PATH` ([wh
|
|
|
28
28
|
uvx --from git+https://github.com/SantyagoSeaman/sidegraph.git@main sidegraph-doctor --json # findings[] entries with "code": "code-drift"
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
For a per-decision `code-drift` finding, use `record_id` and `record_type` ("decision")
|
|
32
|
+
to identify the subject. `path` is its physical source: several records may share one shard.
|
|
33
|
+
Never infer identity from the shard, capture commit or human-readable `detail`. Global notes
|
|
34
|
+
(commit stamping unavailable, Git unavailable, check skipped) have null record fields; they
|
|
35
|
+
are not records to triage. `detail` names changed files or why a prior check no longer applies.
|
|
36
|
+
Original `provenance.commit` stays history. Doctor is a pure read.
|
|
37
|
+
|
|
38
|
+
The SessionStart count and `[drifted]` tags in detailed formatted `get_task_context`,
|
|
39
|
+
`query_decisions` and `drill_down` output use the lazily refreshed drift cache. Budgets can
|
|
40
|
+
omit records, and compact related-record lines do not all show the marker. Raw
|
|
41
|
+
`retrieve_decisions` JSON has no drift field or tag in either storage layout; use doctor
|
|
42
|
+
for the explicit current list.
|
|
35
43
|
|
|
36
44
|
Triage in batches — a 35-record queue does not need 35 interrupts. Group verdicts and
|
|
37
45
|
**put every question to the human into one message** (same discipline as
|
|
@@ -60,7 +68,10 @@ Triage in batches — a 35-record queue does not need 35 interrupts. Group verdi
|
|
|
60
68
|
```
|
|
61
69
|
|
|
62
70
|
Include every current checkable concrete anchor file and each additional dependency
|
|
63
|
-
actually inspected.
|
|
71
|
+
actually inspected. If `missing_required_files` is returned, inspect the local configured
|
|
72
|
+
Store: `bindings_for_record(decision_id)`, then `get_entity(binding.entity_id).descriptor`
|
|
73
|
+
for each binding. Include every current checkable concrete file, not just the files
|
|
74
|
+
named as changed by doctor. The files must be tracked regular files and clean relative to
|
|
64
75
|
that HEAD; unrelated dirt is allowed. The target must be open, commit-stamped and
|
|
65
76
|
concretely anchored. With no Git HEAD, dirty inspected files, incomplete scope or an
|
|
66
77
|
ineligible target, report the judgment and why no check was recorded; retain the
|
|
@@ -88,10 +99,14 @@ Triage in batches — a 35-record queue does not need 35 interrupts. Group verdi
|
|
|
88
99
|
The direct `supersede_decision` path is legitimate only when the human has dictated
|
|
89
100
|
or approved the successor text in this conversation. For an invalidated *fact*,
|
|
90
101
|
the same split applies with `supersede_fact`.
|
|
91
|
-
- **(c) The anchored code is gone entirely** — deleted, not changed.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
102
|
+
- **(c) The anchored code is gone entirely** — deleted, not changed. Run
|
|
103
|
+
`sidegraph:heal-anchors` to distinguish a rename from a lost subject. For accepted
|
|
104
|
+
decisions, propose a meaningful supersession that explains the obsolete scope and
|
|
105
|
+
anchors what remains true. `ratify(drop=...)` only rejects proposed decisions/facts;
|
|
106
|
+
it cannot retire an accepted decision. If there is no meaningful successor, report
|
|
107
|
+
that limitation to the human and retain history; do not invent an empty successor
|
|
108
|
+
or edit status/valid_to in canonical files. Accepted domains have their own supported
|
|
109
|
+
drop path; do not generalize that exception to decisions.
|
|
95
110
|
|
|
96
111
|
## Calibrate the effort
|
|
97
112
|
|
|
@@ -115,8 +130,9 @@ of the wave's own definition of done, not a later triage's discovery.
|
|
|
115
130
|
|
|
116
131
|
End with one summary the human can act on in a single pass: checked (decision id, returned check id, revision, inspected scope and cache-clear outcome), still true but
|
|
117
132
|
check unavailable (id and reason), proposed supersessions (old id → new draft title, awaiting
|
|
118
|
-
`sidegraph:ratify-decisions`), handed to heal-anchors (ids), and
|
|
119
|
-
(ids +
|
|
133
|
+
`sidegraph:ratify-decisions`), handed to heal-anchors (ids), and unresolved obsolete subjects
|
|
134
|
+
(ids + current status + reason). Recommend `ratify(drop=[...])` only for proposed
|
|
135
|
+
decisions/facts, or domains whose drop path explicitly permits it.
|
|
120
136
|
|
|
121
137
|
## See also
|
|
122
138
|
|
|
@@ -2894,7 +2894,13 @@ def doctor_main(argv: list[str] | None = None) -> int:
|
|
|
2894
2894
|
{"code": v.code, "path": v.path, "detail": v.detail} for v in violations
|
|
2895
2895
|
],
|
|
2896
2896
|
"findings": [
|
|
2897
|
-
{
|
|
2897
|
+
{
|
|
2898
|
+
"code": f.code,
|
|
2899
|
+
"path": f.path,
|
|
2900
|
+
"detail": f.detail,
|
|
2901
|
+
"record_id": f.record_id,
|
|
2902
|
+
"record_type": f.record_type,
|
|
2903
|
+
}
|
|
2898
2904
|
for f in report.findings
|
|
2899
2905
|
],
|
|
2900
2906
|
"skipped": skipped + (["graph"] if reader is None else []),
|
|
@@ -2906,7 +2912,8 @@ def doctor_main(argv: list[str] | None = None) -> int:
|
|
|
2906
2912
|
for v in violations:
|
|
2907
2913
|
print(f"{v.code} {v.path} {v.detail}")
|
|
2908
2914
|
for f in report.findings:
|
|
2909
|
-
|
|
2915
|
+
subject = f" {f.record_type}:{f.record_id}" if f.record_id is not None else ""
|
|
2916
|
+
print(f"{f.code}{subject} {f.path} {f.detail}")
|
|
2910
2917
|
stamp_note = None if index_usable else index_stamp_note(args.db)
|
|
2911
2918
|
if stamp_note is not None:
|
|
2912
2919
|
print(f"index checks withheld: {stamp_note}")
|