sidegraph 0.13.0__tar.gz → 0.14.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/workflows/ci.yml +5 -1
- sidegraph-0.14.0/.opencode/INSTALL.md +67 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/AGENTS.md +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/CHANGELOG.md +119 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/CLAUDE.md +3 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/PKG-INFO +134 -31
- {sidegraph-0.13.0 → sidegraph-0.14.0}/README.md +133 -30
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/README.md +5 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/anchoring.md +12 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/data-model.md +7 -6
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/decision-memory.md +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/mind-model.md +11 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/concepts/retrieval.md +4 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/bootstrap.md +8 -4
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/claude-code-setup.md +25 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/codex-setup.md +24 -8
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/installation.md +33 -12
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/getting-started/quickstart.md +19 -5
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/capturing-decisions.md +6 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/ci-cd-maintenance.md +6 -2
- sidegraph-0.14.0/docs/guides/migrating-to-0.14.md +289 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/naming-your-domains.md +6 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/retrieval-in-sessions.md +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/semantic-docs.md +13 -5
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/surviving-refactors.md +16 -7
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/troubleshooting.md +30 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/verifying-your-setup.md +2 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/integrations/claude-code.md +20 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/integrations/codex.md +60 -67
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/integrations/graphify.md +22 -11
- sidegraph-0.14.0/docs/integrations/muse.md +48 -0
- sidegraph-0.14.0/docs/integrations/opencode.md +12 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/llms.txt +4 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/cli.md +152 -37
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/configuration.md +21 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/git-bindings.md +4 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/hooks.md +68 -21
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/mcp-tools.md +57 -33
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/releasing.md +16 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/stability.md +3 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/store-format.md +105 -16
- sidegraph-0.14.0/index.js +63 -0
- sidegraph-0.14.0/package.json +6 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/.claude-plugin/plugin.json +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/.codex-plugin/plugin.json +1 -1
- sidegraph-0.14.0/plugin/sidegraph/.muse-plugin/plugin.json +77 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/heal-anchors/SKILL.md +31 -20
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/import-adrs/SKILL.md +3 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/manage-domains/SKILL.md +33 -7
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/name-domains/SKILL.md +6 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-decision/SKILL.md +8 -4
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-fact/SKILL.md +3 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/setup/SKILL.md +28 -17
- {sidegraph-0.13.0 → sidegraph-0.14.0}/pyproject.toml +2 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/__init__.py +1 -1
- sidegraph-0.14.0/src/sidegraph/anchoring.py +411 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/apply.py +2 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/cli.py +7 -5
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/model.py +2 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/planner.py +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/capture.py +41 -14
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/cli.py +440 -26
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/config.py +27 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/doc_import.py +2 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/doctor.py +215 -55
- sidegraph-0.14.0/src/sidegraph/domain_snapshot.py +494 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/domains.py +15 -2
- sidegraph-0.14.0/src/sidegraph/engine/rationale.py +51 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/engine/reader.py +406 -44
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/githooks.py +51 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/gitio.py +7 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/hooks.py +36 -9
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/mcp_entry.py +12 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/hot_index.py +23 -7
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/importer.py +53 -16
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/integrity.py +148 -10
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/retrieval.py +149 -66
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/schema.py +31 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/seed_ladder.py +8 -5
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/server.py +161 -44
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/stats/model.py +5 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/stats/render.py +4 -3
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/store.py +477 -102
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/store_layout.py +271 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/sync.py +696 -116
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/verify.py +97 -13
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/openspec/_provenance.json +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/openspec/graph.json +2396 -457
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/_provenance.json +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +8 -8
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/graph.json +293 -113
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/githooks_support.py +2 -0
- sidegraph-0.14.0/tests/graph_fixtures.py +53 -0
- sidegraph-0.14.0/tests/opencode_plugin_runner.mjs +71 -0
- sidegraph-0.14.0/tests/snapshot_support.py +205 -0
- sidegraph-0.14.0/tests/test_anchor_descriptor.py +199 -0
- sidegraph-0.14.0/tests/test_anchor_paths.py +264 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_anchoring.py +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_anchoring_mapping_refresh.py +1 -1
- sidegraph-0.14.0/tests/test_anchoring_membership.py +372 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_apply.py +9 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_cli.py +3 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_unanchored.py +6 -5
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_doctor.py +41 -0
- sidegraph-0.14.0/tests/test_cli_domains_snapshot.py +379 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_import.py +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_init.py +69 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_stats.py +23 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_sync_check.py +1 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_command_windows.py +46 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_community_baseline.py +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_config_ancestor_lookup.py +5 -5
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_corpus_self_corpus.py +9 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_docs_claims.py +217 -3
- sidegraph-0.14.0/tests/test_doctor_code_drift.py +648 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_duplicate_entity.py +54 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_integrity.py +2 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_scan.py +14 -6
- sidegraph-0.14.0/tests/test_domain_seed_names.py +38 -0
- sidegraph-0.14.0/tests/test_domain_snapshot_format.py +243 -0
- sidegraph-0.14.0/tests/test_domain_snapshot_notices.py +92 -0
- sidegraph-0.14.0/tests/test_engine_build.py +164 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_bindings_blame.py +26 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_bindings_hook.py +22 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_githooks.py +18 -0
- sidegraph-0.14.0/tests/test_graphify_pin.py +60 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hook_payload_encoding.py +3 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_borrowed_graph.py +2 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_drift_nudge.py +29 -12
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_integrity.py +32 -4
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_pretool.py +3 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_pretool_records.py +3 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_session_key.py +6 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_session_start.py +53 -4
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_session_start_concurrent.py +3 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_stop.py +124 -34
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_subagent_start.py +5 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_subdirectory_launch.py +3 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_wiring_checks.py +3 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hot_index.py +251 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_import_dry_run_preview.py +1 -1
- sidegraph-0.14.0/tests/test_importer.py +1180 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_installed_wheel_smoke.py +2 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_integrity.py +23 -8
- sidegraph-0.14.0/tests/test_integrity_engine_version.py +180 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_integrity_refresh_hook.py +245 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_integrity_replay.py +2 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_integrity_stranded.py +9 -0
- sidegraph-0.14.0/tests/test_mcp_entry_ratify_policy.py +282 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_member_anchor_wiring.py +1 -1
- sidegraph-0.14.0/tests/test_muse_plugin.py +60 -0
- sidegraph-0.14.0/tests/test_opencode_plugin.py +213 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_pathless_descriptor_adoption.py +2 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_ratify_policy.py +1 -1
- sidegraph-0.14.0/tests/test_rationale_compatibility.py +156 -0
- sidegraph-0.14.0/tests/test_reader_community_labels.py +174 -0
- sidegraph-0.14.0/tests/test_reader_engine_version.py +160 -0
- sidegraph-0.14.0/tests/test_reader_file_labels.py +189 -0
- sidegraph-0.14.0/tests/test_reader_label_conventions.py +24 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_member_name_lookup.py +4 -4
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_member_names.py +5 -3
- sidegraph-0.14.0/tests/test_reader_stub_collapse.py +451 -0
- sidegraph-0.14.0/tests/test_reader_type_split.py +95 -0
- sidegraph-0.14.0/tests/test_rebuild_instruction.py +134 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_context.py +17 -7
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_drilldown.py +28 -11
- sidegraph-0.14.0/tests/test_retrieval_membership_generations.py +81 -0
- sidegraph-0.14.0/tests/test_retrieval_membership_index.py +151 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_toc.py +1 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_add_anchors.py +1 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_borrowed_graph.py +8 -5
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_drilldown.py +1 -0
- sidegraph-0.14.0/tests/test_server_get_store.py +178 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_graph_freshness.py +5 -2
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_mcp_smoke.py +100 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_refresh.py +27 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_tolerant_seeds.py +2 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_session_attribution.py +1 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stop_rearm.py +1 -0
- sidegraph-0.14.0/tests/test_store_domain_members.py +207 -0
- sidegraph-0.14.0/tests/test_store_file_anchor_names.py +226 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_mutation_guard.py +22 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_persistence.py +40 -55
- sidegraph-0.14.0/tests/test_store_requirement.py +608 -0
- sidegraph-0.14.0/tests/test_store_snapshot_wiring.py +107 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_symlinks.py +7 -1
- sidegraph-0.14.0/tests/test_sync_membership.py +779 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_rebind.py +4 -4
- sidegraph-0.14.0/tests/test_sync_snapshot_membership.py +487 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_wiring.py +1 -0
- sidegraph-0.14.0/tests/test_verify_domain_snapshot.py +100 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_snapshot.py +59 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/wheel_smoke.py +17 -1
- {sidegraph-0.13.0 → sidegraph-0.14.0}/uv.lock +1 -1
- sidegraph-0.13.0/src/sidegraph/anchoring.py +0 -229
- sidegraph-0.13.0/tests/test_doctor_code_drift.py +0 -323
- sidegraph-0.13.0/tests/test_importer.py +0 -573
- sidegraph-0.13.0/tests/test_mcp_entry_ratify_policy.py +0 -104
- sidegraph-0.13.0/tests/test_reader_community_labels.py +0 -82
- sidegraph-0.13.0/tests/test_server_get_store.py +0 -62
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.agents/plugins/marketplace.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.claude-plugin/marketplace.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/CODEOWNERS +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/secret_scanning.yml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/workflows/publish.yml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/workflows/scorecard.yml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.github/workflows/session-link-gate.yml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.gitignore +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.gitleaks.toml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.pre-commit-config.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/.python-version +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/CODE_OF_CONDUCT.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/CONTRIBUTING.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/LICENSE +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/SECURITY.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/guides/team-workflow.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/README.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/corpus_fit.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/judge-prompt.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/questions-prompt.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/pilot-kit/rubric-template.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/reference/operations.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/docs/whitepaper/index.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/.mcp.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/codex/hooks.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/codex/mcp.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/hooks/hooks.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/explain-why/SKILL.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/import-adrs/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/manage-domains/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/name-domains/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/setup/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/stats/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/triage-drift/SKILL.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bash_paths.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/__init__.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/catalog.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/integrations.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/proof.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/review.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/scan.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/engine/__init__.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/freshness.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/gitenv.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/__init__.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/claude_settings.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/launch.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/session_identity.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/host/subagent.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/input_limits.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/nearest_anchored.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/okf.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/profiles.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/redaction_scan.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/redaction_tokens.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/stats/__init__.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/text_paths.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/tool_rate_limit.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/validation_errors.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/__init__.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/model.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/render.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/viz/template.html +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/worktree_seeds.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/src/sidegraph/write_boundary.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/__init__.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/conftest.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bitfinex_slice.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/graph.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/.memlog.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/prds/prd-payments-2026-07-30/prd.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/sad.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-empty.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/proposal.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/design.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/proposal.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/plan.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/member_names_python_graph.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/member_names_swift_graph.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/fixtures/mini_graph.json +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_agent_brief_manifests.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bash_paths.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_batch_panel_fixes.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_catalog.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_integrations.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_model.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_planner.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_proof.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_review.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_scan.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bootstrap_scan_regular.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_bounded_listings.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_auto_accept.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_facts.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_initiative.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_integration.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_neighbors.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_propose.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_capture_redact.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_compact.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_domains.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_graph_paths.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_init_hooks.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_okf.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_ratify.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_ratify_facts.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_sync.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_unreadable_paths.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_cli_viz.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_codex_plugin.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_config.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_config_borrowed_graph.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_corpus_expected_renders.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_coverage_telemetry_e2e.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_digest_integrity.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doc_corpus_integration.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doc_import.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_auto_share.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_dangling_supports.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_graph_root_mismatch.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_graph_stale.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_never_surfaced.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_stale_instructions.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_unhashable_payload.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_doctor_unratified_accept.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_domains.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_entity_duplicate_resolution.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_entity_get_or_create_race.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_entry_point_arguments.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_env_isolation.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_fact_reachability_gate.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_flow_profile.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_bindings_provenance.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_config_isolation.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_env.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_git_output_utf8.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_graph_freshness.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hook_showings.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hook_spawn_guard.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_agent_brief.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_agent_state.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_claude_settings.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_launch.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_host_touch_events.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hot_index_hook.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_hot_path_imports.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_index_journal_mode.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_lazy_root.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_mcp_entry_repo_root.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_mind_model_additive_fields.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_nearest_anchored.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_okf.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_openspec_profile.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_pilot_kit_corpus_fit.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_portable_json.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_proposal_lifecycle.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_public_hook_launch.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_ratify_listing_gone_dark.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_doc_nodes.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_graph.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_integration.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_nodes_in_file.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_perf.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_rationale.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_read.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_resolve.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_subdir_mismatch.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_reader_version.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_redaction_scan.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_redaction_seeded.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_redaction_tokens.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_repo_relative_paths_portable.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_repoint_integration.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_budget_counters.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_drift_marker.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_facts.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_guessed.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_ids.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_integration.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_rank.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_seeds.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_shown_ids.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_terminal_evidence.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_thin_tools.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_toptier.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_retrieval_unratified.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sandbox_hygiene.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_schema_descriptor.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_schema_domain.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_schema_fact.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_secret_scan_gate.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_binary_limits.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_capture_diagnostics.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_capture_limits.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_cli_diagnostics.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_doc_limits.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_input_limits.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_mcp_write_diagnostics.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_numeric_enums.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_python_shapes.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_redaction_cursor.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_redaction_scaling.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_validation_errors.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_security_write_boundary.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_seed_ladder.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_seed_paths_portable.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_anchoring.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_annotations.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_argument_names.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_capture.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_commit_hint.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_coverage_events.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_decision_listing.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_domains.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_facts.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_find_entity.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_get_task_context.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_graph_path.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_import.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_invocation_policy.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_nearest_anchored.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_prewrite_anchor_validation.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_ratify_facts.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_record_types.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_redaction.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_render_events.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_result_contract.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_supersede.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_sync_anchors.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_telemetry.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_thin_tools.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_server_verify.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_skill_frontmatter.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_graph.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_health.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_model.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_render.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_skill.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stats_snapshot.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_stop_hot_path.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_agent_state.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_atomic_write_tmp_names.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_bad_file.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_binding_index.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_canonical_stat.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_compact.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_compact_review.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_concurrent_open.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_coverage_telemetry.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_cross_process_mutations.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_derived_community.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_domains.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_entities.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_fact_cascade.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_facts.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_git_root_symlink.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_meta.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_migration.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_mutation_immediate.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_non_file_entries.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_opens_with_merged_duplicate.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_ratification.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_rebuild_atomicity.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_record_identity.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_record_types.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_render_events.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_retrieval.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_slug_conflicts.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_stamping_marker.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_telemetry.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_threading.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_tmp_sweep_age.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_store_update_meta_if.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_subagent_start_manifests.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_subprocess_text_encoding.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_canonical_writes.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_clean.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_domains.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_drift_cache.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_fresh_clone.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_integration.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_moved_adoption.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_repoint.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_report_has_findings.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_run.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_toc_cache.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_sync_volatile_heal.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_telemetry_retention.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_text_paths.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_git_framing.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_git_revisions.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_git_stdin.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_verify_transitions.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_viz_asset_packaged.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_viz_model.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_viz_render_html.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_viz_render_json.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/test_worktree_seeds.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tests/wheel_server_trace.py +0 -0
- {sidegraph-0.13.0 → sidegraph-0.14.0}/tools/check_no_session_links.py +0 -0
|
@@ -329,11 +329,15 @@ jobs:
|
|
|
329
329
|
cache-dependency-glob: "uv.lock"
|
|
330
330
|
|
|
331
331
|
- name: Rebuild graph and run sidegraph-sync --check
|
|
332
|
+
env:
|
|
333
|
+
GRAPHIFY_NO_AUTO_REFRESH: "1"
|
|
334
|
+
PYTHONHASHSEED: "0"
|
|
335
|
+
GRAPHIFY_MAX_WORKERS: "1"
|
|
332
336
|
run: |
|
|
333
337
|
if [ ! -d .sidegraph ]; then
|
|
334
338
|
echo "no .sidegraph in this checkout — anchor health not applicable"
|
|
335
339
|
exit 0
|
|
336
340
|
fi
|
|
337
|
-
uvx --from graphifyy==0.9.
|
|
341
|
+
uvx --from graphifyy==0.9.90 graphify update .
|
|
338
342
|
uv sync --locked
|
|
339
343
|
uv run sidegraph-sync --json --check
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Install Sidegraph in OpenCode V2
|
|
2
|
+
|
|
3
|
+
Requires OpenCode V2, `uv` and Git on PATH. The current native integration baseline is
|
|
4
|
+
OpenCode 2.0.29. Sidegraph provides MCP tools and shared skills; lifecycle hooks are not
|
|
5
|
+
included. Ask for context and capture decisions explicitly through the tools.
|
|
6
|
+
|
|
7
|
+
Install the Git package with OpenCode's native command:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
opencode plugin add 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Start a new OpenCode session in your project. Follow `@sidegraph-setup` to prepare its
|
|
14
|
+
graph and store, then call `list_domains()` to check MCP access. Use
|
|
15
|
+
`get_task_context(files=[...])` before working on files and `propose_decisions` to capture
|
|
16
|
+
durable findings. Other shared skills use `@sidegraph-<skill>` (for example,
|
|
17
|
+
`@sidegraph-check-plan`). There is no automatic SessionStart map or Stop nudge.
|
|
18
|
+
|
|
19
|
+
The equivalent `opencode.json` entry is:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"$schema": "https://opencode.ai/config.json",
|
|
24
|
+
"plugins": ["git+https://github.com/SantyagoSeaman/sidegraph.git#main"]
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Merge that entry with any existing plugin list. The plugin supplies one `sidegraph` MCP
|
|
29
|
+
server only when that name has no explicit configuration. An existing entry, including
|
|
30
|
+
`disabled: true`, stays unchanged. OpenCode V2 stores overrides under `mcp.servers`:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"mcp": {
|
|
35
|
+
"servers": {
|
|
36
|
+
"sidegraph": {
|
|
37
|
+
"type": "local",
|
|
38
|
+
"command": [
|
|
39
|
+
"uvx",
|
|
40
|
+
"--from",
|
|
41
|
+
"git+https://github.com/SantyagoSeaman/sidegraph.git@main",
|
|
42
|
+
"sidegraph-mcp",
|
|
43
|
+
"--repo-root"
|
|
44
|
+
],
|
|
45
|
+
"environment": {
|
|
46
|
+
"SIDEGRAPH_DIR": ".sidegraph",
|
|
47
|
+
"SIDEGRAPH_GRAPH": "graphify-out/graph.json"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Use this override only when you want to manage the server yourself. Keep OpenCode's normal
|
|
56
|
+
MCP and skill permissions; no additional Sidegraph plugin-approval command is required.
|
|
57
|
+
|
|
58
|
+
Check and apply package updates, then restart OpenCode:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
opencode plugin check 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
|
|
62
|
+
opencode plugin update 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The Git package target `#main` follows public releases. The MCP runtime uses its configured
|
|
66
|
+
Git ref (normally `@main`); this host has no SessionStart version pin. Updating cached
|
|
67
|
+
plugin files and resolving the MCP runtime are separate operations.
|
|
@@ -76,4 +76,4 @@ Rules:
|
|
|
76
76
|
- Dirty graphify-out/ files are expected after hooks or incremental updates; dirty graph files are not a reason to skip graphify. Only skip graphify if the task is about stale or incorrect graph output, or the user explicitly says not to use it.
|
|
77
77
|
- If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing.
|
|
78
78
|
- Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context.
|
|
79
|
-
- After modifying code, run `graphify update .` to keep the graph current (AST-only, no API cost).
|
|
79
|
+
- After modifying code, run `graphify update .` with the environment variable `GRAPHIFY_NO_AUTO_REFRESH=1` set to keep the graph current (AST-only, no API cost).
|
|
@@ -7,6 +7,125 @@ interfaces, exactly, and what each one promises: [`docs/reference/stability.md`]
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.14.0] — 2026-10-16
|
|
11
|
+
|
|
12
|
+
### Graphify 0.9.90
|
|
13
|
+
|
|
14
|
+
Migration steps: [migrate to Sidegraph 0.14](docs/guides/migrating-to-0.14.md).
|
|
15
|
+
|
|
16
|
+
- Anchors to files with the same basename keep resolving after the engine upgrade.
|
|
17
|
+
- External names resolve when Graphify emits several identical stub nodes.
|
|
18
|
+
- Re-importing rationale does not duplicate compatible labels shortened by a newer engine.
|
|
19
|
+
- `sidegraph-domains snapshot` preserves domain membership across engine regrouping.
|
|
20
|
+
- A store can require a minimum Sidegraph version before clients read or write it.
|
|
21
|
+
- Graphify leaves installed agent skills alone when Sidegraph runs it.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- OpenCode V2 can install Sidegraph as a native Git package with shared skills and MCP
|
|
26
|
+
tools. Existing skill IDs and explicit MCP server settings take precedence. See the
|
|
27
|
+
[OpenCode installation guide](.opencode/INSTALL.md).
|
|
28
|
+
- Muse has an experimental native plugin with shared skills and MCP tools. Launch Muse
|
|
29
|
+
from the intended project directory; lifecycle hooks are deferred. See the
|
|
30
|
+
[Muse installation guide](docs/integrations/muse.md).
|
|
31
|
+
- A graph community that holds code and documents is split in two before domains are
|
|
32
|
+
computed. Graphify 0.9.62 and later link documents to the code they mention, which merged
|
|
33
|
+
them.
|
|
34
|
+
- Domain membership is computed by each sync and kept per node. A path prefix now adds its
|
|
35
|
+
files at sync time, not when a domain is read. A decision anchored under a path rule that
|
|
36
|
+
the 20% cap kept off the communities now reaches that domain too.
|
|
37
|
+
- A domain whose refresh fails keeps its previous membership whole and is reported again by
|
|
38
|
+
every later sync until its cause is fixed; `--force` retries it.
|
|
39
|
+
- A domain-membership pass that cannot run because another process holds the store is
|
|
40
|
+
reported once, as `domain membership not refreshed: the store's writer was busy`, and the
|
|
41
|
+
next sync runs it; `--check` does not count it. A pass that fails as a whole is reported
|
|
42
|
+
as `*` (every accepted domain) until its cause is fixed.
|
|
43
|
+
- The `supersede_domain` answer carries `snapshot_note` when the domain's membership is
|
|
44
|
+
frozen.
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- SessionStart and Stop no longer create an absent store. Missing host-relative stores are
|
|
49
|
+
selected at the Git root; MCP first use requires explicit setup for nested or non-Git
|
|
50
|
+
destinations. Init distinguishes an empty scaffold from a store with authored content
|
|
51
|
+
and still prints setup guidance.
|
|
52
|
+
- The MCP server applies the committed ratification policy from the selected store's
|
|
53
|
+
project when no policy is set in its environment, including cross-project and symlinked
|
|
54
|
+
stores. Missing settings keep the manual default.
|
|
55
|
+
- Doctor excludes committed file deletions from code drift while binding statuses are
|
|
56
|
+
uncomputed, and qualifies remaining changes as having unknown binding status. Projects
|
|
57
|
+
without a graph still report changes to surviving anchored files.
|
|
58
|
+
- Hot hooks withhold records and memory counts on a new store or after an index reload until
|
|
59
|
+
sync computes binding statuses, so placeholder `live` rows cannot revive orphaned anchors.
|
|
60
|
+
- Community names from newer Graphify builds are read from curated labels, pending hub names,
|
|
61
|
+
then node names. Hub labels use the file's basename within their own community.
|
|
62
|
+
- Graphify's post-merge hook marker is recognised alongside its other refresh-hook markers.
|
|
63
|
+
- SessionStart and doctor advise when a graph's engine stamp is outside the tested releases.
|
|
64
|
+
The advisory adds no human notice; doctor's `--check` exits 2 when it is present.
|
|
65
|
+
|
|
66
|
+
- `sidegraph-import` recognises compatible re-cut rationale labels by their exact file/node
|
|
67
|
+
context as well as the existing title/origin key, reducing duplicate imports after a
|
|
68
|
+
Graphify upgrade or rollback.
|
|
69
|
+
|
|
70
|
+
- Every Graphify run Sidegraph starts or tells you to start now sets `GRAPHIFY_NO_AUTO_REFRESH=1`.
|
|
71
|
+
Graphify 0.9.87 and later refresh the agent skills they installed (such as
|
|
72
|
+
`~/.claude/skills/graphify/`) on the first run after a Graphify upgrade unless that variable is
|
|
73
|
+
set. The graph refresh hook's helper, the CI recipes, the copyable commands in the docs and the
|
|
74
|
+
setup skill set it, and the rebuild instructions Sidegraph prints name it. Graphify 0.9.6 does
|
|
75
|
+
not read the variable.
|
|
76
|
+
- Anchors to files that share a basename keep resolving on newer Graphify. Graphify 0.9.87 and
|
|
77
|
+
later label such a file by a path suffix (`sidegraph/cli.py`) instead of its basename; Sidegraph
|
|
78
|
+
reads those nodes as basenames again, so an anchor `cli.py` in `src/sidegraph/cli.py` still
|
|
79
|
+
finds its node, and the engine's own label still resolves too.
|
|
80
|
+
- A path-named anchor (`src/sidegraph/store.py` with its own `file_path`) now resolves to that
|
|
81
|
+
file's node on any Graphify version, and is stored under the basename. Entities an earlier
|
|
82
|
+
version named by the full path heal at the one-time resync that follows the upgrade.
|
|
83
|
+
- `find_entity` reads the spelling twins of one file (an entity named by the file's path beside
|
|
84
|
+
one named by its basename) as one entity, and `get_entity_history` lists the records bound to
|
|
85
|
+
any twin. New anchors, lookups and duplicate detection compare names the same way.
|
|
86
|
+
- An anchor `file_path` given as an absolute path under the repository, with backslashes on
|
|
87
|
+
Windows, or with a leading `./` is stored repo-relative with forward slashes and binds live
|
|
88
|
+
instead of orphaning, through the MCP write tools and through capture. When a store sits in a
|
|
89
|
+
subdirectory of its repository, the root whose path the graph holds is the one used.
|
|
90
|
+
- An anchor naming an imported external type (`BaseModel`, `Path`) now binds even when Graphify
|
|
91
|
+
emits one stub node per importing file. The stubs count as one match when none has a file and
|
|
92
|
+
they share a label and a node type, and the anchor gets a group binding only when they share a
|
|
93
|
+
community. This applies on every Graphify version. A type and a module of one name (`FastMCP`
|
|
94
|
+
and `fastmcp`) and repository code are still told apart. Document mentions of such names do
|
|
95
|
+
not gain a precise leaf binding, and reading surfaces keep their earlier resolution answers.
|
|
96
|
+
- Sync reports an anchor whose file disappeared and whose name now matches only external stubs
|
|
97
|
+
as orphaned. A resolved external anchor without a community no longer prevents other anchors'
|
|
98
|
+
previous community bindings from being retired. A formerly shared group also retires when
|
|
99
|
+
the stubs split. Ambiguous anchors and failed rebinds keep those bindings when their current
|
|
100
|
+
community is unknown.
|
|
101
|
+
|
|
102
|
+
### Added
|
|
103
|
+
|
|
104
|
+
- `sidegraph-domains snapshot` freezes every accepted domain's membership into
|
|
105
|
+
`.sidegraph/domain-snapshot.json`, so a Graphify upgrade that regroups communities does not
|
|
106
|
+
move domains. It raises the store's minimum Sidegraph version to 0.14.0. `--build-with
|
|
107
|
+
VERSION` takes the snapshot from `HEAD` rebuilt with an older Graphify; `--refresh`
|
|
108
|
+
re-freezes it; `--dry-run` prints the counts it would freeze and leaves committed files unchanged.
|
|
109
|
+
- `sidegraph-verify` reports `bad-domain-snapshot` and `snapshot-without-requirement`;
|
|
110
|
+
`sidegraph-doctor` reports `snapshot-split`; `sidegraph-sync --json` and `sync_anchors`
|
|
111
|
+
carry `snapshot_splits`.
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
- `sidegraph-require --sidegraph X.Y.Z` makes a store require at least that Sidegraph release:
|
|
115
|
+
the committed marker is raised atomically and never lowered. New clients check it before
|
|
116
|
+
using the store; verification reports malformed requirements and requirements above its version.
|
|
117
|
+
|
|
118
|
+
- `sidegraph-doctor` prints informational `spelling twins` lines for an entity named by a path of
|
|
119
|
+
its file beside one named by the basename. They are not findings and do not change the exit
|
|
120
|
+
code. `duplicate-entity` no longer reports such a pair.
|
|
121
|
+
|
|
122
|
+
- A new advisory check, `refresh-helper-outdated`, reports a graph refresh hook whose helper runs
|
|
123
|
+
Graphify without `GRAPHIFY_NO_AUTO_REFRESH=1` (the helper an earlier `sidegraph-init` wrote). It
|
|
124
|
+
shows as a SessionStart line and notice and as a `sidegraph-doctor` finding, and
|
|
125
|
+
`sidegraph-doctor --check` exits `2` on it. Run `sidegraph-init` with no flag: it rewrites the
|
|
126
|
+
helper and keeps your recorded hook choice. The helper lives in `.git/hooks`, so each clone
|
|
127
|
+
runs it once.
|
|
128
|
+
|
|
10
129
|
## [0.13.0] — 2026-10-14
|
|
11
130
|
|
|
12
131
|
### Fixed
|
|
@@ -5,7 +5,7 @@ that doesn't forget *why* things are the way they are as time passes and people
|
|
|
5
5
|
|
|
6
6
|
**Thesis: own the memory, rent the graph.** Sidegraph owns an append-only, repo-committed
|
|
7
7
|
decision store and layers it as a **sidecar** over a mature code-graph engine
|
|
8
|
-
([Graphify](https://github.com/
|
|
8
|
+
([Graphify](https://github.com/Graphify-Labs/graphify)) rather than re-building entity extraction
|
|
9
9
|
and graph construction. The edge over session-memory tools is durable anchoring + budgeted,
|
|
10
10
|
task-aware retrieval + decision memory riding on the engine's entity graph.
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ task-aware retrieval + decision memory riding on the engine's entity graph.
|
|
|
13
13
|
continuing participant in the project. A core feature must preserve, organize, or deliver
|
|
14
14
|
accumulated project understanding. Document search by itself is not the product.
|
|
15
15
|
|
|
16
|
-
Sidegraph is pre-1.0 (v0.
|
|
16
|
+
Sidegraph is pre-1.0 (v0.14.0) — the full loop (capture, ratification, mistakes-first
|
|
17
17
|
retrieval, refactor-surviving re-anchoring, semantic docs layer, mind-model domains, and the
|
|
18
18
|
facts evidence layer) ships and is exercised end-to-end, but interfaces may still move before
|
|
19
19
|
a stable release. See
|
|
@@ -53,6 +53,7 @@ src/sidegraph/
|
|
|
53
53
|
├── schema.py # Pydantic models: Entity, Decision, Fact, AnchorBinding, Domain, Initiative
|
|
54
54
|
├── store.py # owned append-only store (file-per-record JSON); enforces invariants on write
|
|
55
55
|
├── retrieval.py # multi-altitude, budget-bounded, task-aware read path (mistakes first)
|
|
56
|
+
├── domain_snapshot.py # committed domain-membership snapshot: format and matching rules
|
|
56
57
|
├── hot_index.py # raw-sqlite handle on index.db for the hook hot path (no Store, no pydantic)
|
|
57
58
|
├── store_layout.py # store constants and rules shared with the hot path (pydantic-free)
|
|
58
59
|
├── server.py # FastMCP decision MCP — the tools agents call
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sidegraph
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Own the memory, rent the graph — a durable decision/lessons layer as a sidecar over a code-graph engine.
|
|
5
5
|
Project-URL: Homepage, https://github.com/SantyagoSeaman/sidegraph
|
|
6
6
|
Project-URL: Repository, https://github.com/SantyagoSeaman/sidegraph
|
|
@@ -44,9 +44,10 @@ rejected, and what was learned during implementation, then retrieves that contex
|
|
|
44
44
|
the files and symbols an agent is working on.
|
|
45
45
|
|
|
46
46
|
Records live in your repository as reviewable JSON files. A derived SQLite index supports
|
|
47
|
-
retrieval; [Graphify](https://github.com/
|
|
47
|
+
retrieval; [Graphify](https://github.com/Graphify-Labs/graphify) supplies the code and document
|
|
48
48
|
graph used to anchor records. Claude Code and Codex plugins connect capture and retrieval
|
|
49
|
-
to coding sessions.
|
|
49
|
+
to coding sessions. OpenCode V2 and experimental Muse expose MCP tools and shared skills
|
|
50
|
+
for explicit retrieval and capture.
|
|
50
51
|
|
|
51
52
|
- Keep decisions, rejected alternatives, and evidence with their provenance and history.
|
|
52
53
|
- Hand the agent the relevant mistakes and constraints before it edits, sized to fit its context.
|
|
@@ -60,7 +61,7 @@ to coding sessions.
|
|
|
60
61
|
|
|
61
62
|
### Set up a repository (once)
|
|
62
63
|
|
|
63
|
-
**You need** Git,
|
|
64
|
+
**You need** Git, one of the four hosts below, and [uv](https://docs.astral.sh/uv/getting-started/installation/),
|
|
64
65
|
which also downloads Python 3.13 if you do not have it. On Windows you also need
|
|
65
66
|
[Git for Windows](https://gitforwindows.org/) with its default options
|
|
66
67
|
([details](docs/getting-started/installation.md#windows)); run the commands below in
|
|
@@ -71,12 +72,19 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
|
71
72
|
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # uv on Windows
|
|
72
73
|
```
|
|
73
74
|
|
|
74
|
-
**
|
|
75
|
+
**Already using Sidegraph?** Follow the [0.14 migration guide](docs/guides/migrating-to-0.14.md)
|
|
76
|
+
before upgrading Graphify, so accepted domains keep their membership. Update every client
|
|
77
|
+
first, then use the existing-install update recipe for your host below. Claude Code and
|
|
78
|
+
Codex keep the same `sidegraph@sidegraph` identity; no uninstall/reinstall is needed.
|
|
79
|
+
|
|
80
|
+
**1. Build the code graph.** [Graphify](https://github.com/Graphify-Labs/graphify) maps your
|
|
75
81
|
functions, classes and files, so a record can point at the exact function it is about.
|
|
76
82
|
|
|
77
83
|
```sh
|
|
78
|
-
uv tool install "graphifyy==0.9.
|
|
84
|
+
uv tool install "graphifyy==0.9.90" # two y's in the package name; the command is graphify
|
|
79
85
|
cd /path/to/your/repo
|
|
86
|
+
export GRAPHIFY_NO_AUTO_REFRESH=1 # macOS, Linux: keeps Graphify off your agent skills
|
|
87
|
+
$env:GRAPHIFY_NO_AUTO_REFRESH = "1" # Windows PowerShell: use this line instead
|
|
80
88
|
graphify update .
|
|
81
89
|
echo "graphify-out/" >> .gitignore # the graph is rebuilt from your code; keep it out of git
|
|
82
90
|
Add-Content .gitignore "graphify-out/" # the same line on Windows (PowerShell); do not use >> there
|
|
@@ -93,41 +101,134 @@ It asks two questions. Both default to yes, so press Enter twice.
|
|
|
93
101
|
- *Keep the code graph fresh?* Yes installs a git hook that rebuilds the graph after each commit.
|
|
94
102
|
- *Auto-ratify low-risk records?* Yes means the lessons, gotchas and facts the agent proposes
|
|
95
103
|
are accepted without review. Other proposals still wait for you. The answer is saved in
|
|
96
|
-
`.claude/settings.json`, which you commit.
|
|
97
|
-
|
|
104
|
+
`.claude/settings.json`, which you commit. Sidegraph reads it for all four MCP integrations unless an explicit
|
|
105
|
+
`SIDEGRAPH_RATIFY_POLICY` overrides it, so teammates use the same project policy.
|
|
98
106
|
|
|
99
107
|
Details: [`sidegraph-init`](docs/reference/cli.md#sidegraph-init).
|
|
100
108
|
|
|
101
|
-
**3.
|
|
102
|
-
|
|
103
|
-
the
|
|
109
|
+
**3. Choose one host.** Install its cached plugin assets, then start a new session in this
|
|
110
|
+
repository. Host plugin updates and the MCP runtime are separate: the default runtime
|
|
111
|
+
follows the public repository's `main`, which advances at releases; that does not refresh
|
|
112
|
+
cached skills, manifests or hook definitions. Use your host's update recipe after a release.
|
|
113
|
+
|
|
114
|
+
#### Claude Code
|
|
104
115
|
|
|
105
|
-
In Claude Code
|
|
116
|
+
In a Claude Code session in the repository:
|
|
106
117
|
|
|
107
118
|
```text
|
|
108
119
|
/plugin marketplace add SantyagoSeaman/sidegraph
|
|
109
120
|
/plugin install sidegraph@sidegraph
|
|
110
121
|
```
|
|
111
122
|
|
|
112
|
-
|
|
113
|
-
|
|
123
|
+
Review the installation summary and any approval prompts, then start a new Claude Code
|
|
124
|
+
session. It provides MCP, skills, session memory, capture reminders and context on reads.
|
|
125
|
+
For an existing install, run these in your terminal:
|
|
126
|
+
|
|
127
|
+
```sh
|
|
128
|
+
claude plugin marketplace update sidegraph
|
|
129
|
+
claude plugin update sidegraph@sidegraph
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Keep the same install scope; see the [Claude Code guide](docs/getting-started/claude-code-setup.md#update-an-existing-plugin).
|
|
133
|
+
Start a new session after updating, or use `/reload-plugins` and review its prompts.
|
|
134
|
+
|
|
135
|
+
#### Codex
|
|
136
|
+
|
|
137
|
+
Run these in a terminal in the repository:
|
|
114
138
|
|
|
115
139
|
```sh
|
|
116
140
|
codex plugin marketplace add SantyagoSeaman/sidegraph
|
|
117
141
|
codex plugin add sidegraph@sidegraph
|
|
118
142
|
```
|
|
119
143
|
|
|
144
|
+
Start a new interactive Codex session. Review Sidegraph's hooks through the startup warning
|
|
145
|
+
or `/hooks`, then approve them. Without approval, MCP remains available but automatic session
|
|
146
|
+
memory, capture reminders and subagent notices stay silent.
|
|
147
|
+
For an existing install, run this in your terminal:
|
|
148
|
+
|
|
149
|
+
```sh
|
|
150
|
+
codex plugin marketplace upgrade sidegraph
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Start a new session and review any changed hook definitions through the startup warning or
|
|
154
|
+
`/hooks`; updating does not grant approval. This update recipe requires Codex CLI 0.162.1
|
|
155
|
+
or a version with that command. See the [Codex guide](docs/getting-started/codex-setup.md#keep-the-plugin-updated).
|
|
156
|
+
|
|
157
|
+
#### Muse (experimental)
|
|
158
|
+
|
|
159
|
+
MCP and shared skills only; no automatic session map, read context or capture reminder.
|
|
160
|
+
Run the install and update commands from the same stable directory outside any project
|
|
161
|
+
(for example, your home directory). Keep that checkout with LF line endings:
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
git clone -c core.autocrlf=false https://github.com/SantyagoSeaman/sidegraph.git sidegraph-plugin
|
|
165
|
+
muse plugins install ./sidegraph-plugin/plugin/sidegraph
|
|
166
|
+
muse plugins inspect sidegraph
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Review the MCP capability, then approve it:
|
|
170
|
+
|
|
171
|
+
```sh
|
|
172
|
+
muse plugins approve sidegraph
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Exit Muse and start a new Muse process from the intended project directory. Restart it there
|
|
176
|
+
whenever you switch projects; selecting a workspace in a running process is insufficient.
|
|
177
|
+
For an existing install, refresh the maintained checkout and inspect the changed capability:
|
|
178
|
+
|
|
179
|
+
```sh
|
|
180
|
+
git -C sidegraph-plugin pull --ff-only
|
|
181
|
+
muse plugins update sidegraph
|
|
182
|
+
muse plugins inspect sidegraph
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Review changes, then approve and restart Muse from the target project:
|
|
186
|
+
|
|
187
|
+
```sh
|
|
188
|
+
muse plugins approve sidegraph
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Basic installation and MCP access were checked on Muse 1.4.7 on macOS; the update command is supported by native
|
|
192
|
+
help, with full lifecycle and Windows acceptance deferred. See the [Muse guide](docs/integrations/muse.md).
|
|
193
|
+
|
|
194
|
+
#### OpenCode V2
|
|
195
|
+
|
|
196
|
+
Requires OpenCode V2 (native baseline 2.0.29), `uv` and Git on PATH. Native packaging/MCP
|
|
197
|
+
was checked on macOS; Windows acceptance is pending. In your terminal:
|
|
198
|
+
|
|
199
|
+
```sh
|
|
200
|
+
opencode plugin add 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Start a new OpenCode session in your project and use `@sidegraph-setup`. Keep OpenCode's
|
|
204
|
+
normal MCP and skill permissions; no additional plugin-approval command is needed. This
|
|
205
|
+
route supplies MCP and skills only: ask for context and capture decisions explicitly.
|
|
206
|
+
For an existing install, check and update the Git package, then restart OpenCode:
|
|
207
|
+
|
|
208
|
+
```sh
|
|
209
|
+
opencode plugin check 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
|
|
210
|
+
opencode plugin update 'git+https://github.com/SantyagoSeaman/sidegraph.git#main'
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
The [OpenCode installation guide](.opencode/INSTALL.md) is the canonical recipe, including
|
|
214
|
+
configuration overrides. The package target `#main` and the MCP runtime's Git ref are
|
|
215
|
+
separate settings.
|
|
216
|
+
|
|
217
|
+
### First memory
|
|
218
|
+
|
|
120
219
|
**4. Record a decision.** In a session, ask the agent, naming a real file and function:
|
|
121
220
|
|
|
122
221
|
> Record this gotcha: the upstream API limits batch requests to 100 items. We rejected
|
|
123
222
|
> a single unbounded request because it fails for larger imports. Anchor it to
|
|
124
223
|
> `import_batch` in `src/importer.py`.
|
|
125
224
|
|
|
126
|
-
It is saved right away. Records the agent proposes on its own may wait for your review
|
|
127
|
-
|
|
225
|
+
It is saved right away. Records the agent proposes on its own may wait for your review.
|
|
226
|
+
Ask the agent to review pending Sidegraph decisions through MCP on any host; Claude Code
|
|
227
|
+
also offers `/sidegraph:ratify-decisions`.
|
|
128
228
|
|
|
129
229
|
**5. Check and commit.** Start a new session and ask: "Before I edit `src/importer.py`, what
|
|
130
|
-
should I know?
|
|
230
|
+
should I know? Retrieve Sidegraph context for that file with `get_task_context`." The agent
|
|
231
|
+
should show the gotcha on every host, including those without lifecycle hooks. Then commit `.sidegraph/` and `.gitignore`,
|
|
131
232
|
and `.claude/settings.json` if step 2 created or changed it. The index file inside
|
|
132
233
|
`.sidegraph/` is git-ignored automatically.
|
|
133
234
|
|
|
@@ -145,9 +246,9 @@ contents, or import existing ADRs and design specs with the
|
|
|
145
246
|
|
|
146
247
|
- **Without the graph.** Skip step 1 and answer no to the first question in step 2. Records
|
|
147
248
|
then attach to whole files instead of functions.
|
|
148
|
-
- **Versions.**
|
|
149
|
-
|
|
150
|
-
|
|
249
|
+
- **Versions.** The default MCP runtime and the step 2 command install Sidegraph from the
|
|
250
|
+
public repository on GitHub, whose `main` branch changes only when a release is published.
|
|
251
|
+
Update cached plugin assets with your host recipe above. To pin a version instead, see
|
|
151
252
|
[pinning](docs/getting-started/installation.md#mutable-development-references).
|
|
152
253
|
- **Sidegraph commands in your own terminal.** Optional:
|
|
153
254
|
`uv tool install git+https://github.com/SantyagoSeaman/sidegraph.git@main`, from the same place as the plugin. It does not update itself, so
|
|
@@ -176,17 +277,17 @@ evaluate it on your own repository.
|
|
|
176
277
|
## How it works
|
|
177
278
|
|
|
178
279
|
1. **Capture.** During a session the agent saves a decision when you ask for one. At the end of
|
|
179
|
-
a session the plugin reminds it to propose
|
|
180
|
-
|
|
280
|
+
a Claude Code or Codex session the plugin reminds it to propose decisions worth keeping.
|
|
281
|
+
In OpenCode and Muse, ask for capture explicitly. Secrets are redacted before storage.
|
|
181
282
|
2. **Review.** You accept or drop what the agent proposed; Sidegraph calls this *ratifying*.
|
|
182
283
|
Records are JSON files in `.sidegraph/`, committed with your code.
|
|
183
284
|
3. **Anchoring.** Each record is linked to the functions, classes, files or document headings it
|
|
184
285
|
is about, using the graph Graphify builds from your code. When a refactor moves code,
|
|
185
286
|
Sidegraph follows the move; when it cannot tell where the code went, it flags the record for
|
|
186
287
|
review.
|
|
187
|
-
4. **Recall.**
|
|
188
|
-
|
|
189
|
-
with known mistakes first. In Claude Code, the agent also receives a file's records the
|
|
288
|
+
4. **Recall.** Claude Code and Codex inject a short table of contents of the project's areas,
|
|
289
|
+
called *domains*, at session start. In every host, ask the agent to retrieve a file's
|
|
290
|
+
records with `get_task_context` before changing it, with known mistakes first. In Claude Code, the agent also receives a file's records the
|
|
190
291
|
first time it reads or edits that file.
|
|
191
292
|
5. **Subagents.** In Claude Code, when the agent hands a task to a subagent, the records for the
|
|
192
293
|
files named in that task are added to it. In Claude Code and Codex, each new subagent is told
|
|
@@ -262,7 +363,7 @@ concepts and themes that records can anchor to. Walkthrough:
|
|
|
262
363
|
## The engine underneath
|
|
263
364
|
|
|
264
365
|
The graph of your code and documents comes from
|
|
265
|
-
[Graphify](https://github.com/
|
|
366
|
+
[Graphify](https://github.com/Graphify-Labs/graphify), built without an LLM. Sidegraph only reads
|
|
266
367
|
it and never writes into it. Without a graph, records anchor to files and domains, and recall
|
|
267
368
|
still works. Three things need the graph: anchoring a record to a function, grouping related
|
|
268
369
|
code automatically, and following moved code (see the
|
|
@@ -273,13 +374,14 @@ cannot: they are the source of truth, so keep them in your repository and backup
|
|
|
273
374
|
## Status
|
|
274
375
|
|
|
275
376
|
Sidegraph is in beta. Read the [stability policy](docs/reference/stability.md) before
|
|
276
|
-
building automation against it. By default the
|
|
377
|
+
building automation against it. By default the MCP runtime follows the latest release; for
|
|
277
378
|
reproducible deployments, [pin a version](docs/getting-started/installation.md#mutable-development-references).
|
|
278
379
|
The [changelog](CHANGELOG.md) records release changes.
|
|
279
380
|
|
|
280
|
-
The platform badges
|
|
281
|
-
and macOS arm64
|
|
282
|
-
|
|
381
|
+
The platform badges summarize the release gate: full Claude Code and Codex plugin sessions
|
|
382
|
+
on Windows x64 and macOS arm64, with Python 3.13 and 3.14. Publication of 0.14.0 requires
|
|
383
|
+
this gate, including Windows PowerShell 5.1 without PowerShell 7. See
|
|
384
|
+
[Platform coverage](docs/getting-started/installation.md#platform-coverage) for limits.
|
|
283
385
|
|
|
284
386
|
## Contributing and support
|
|
285
387
|
|
|
@@ -299,7 +401,8 @@ Contributions are reviewed here and carried over, with attribution, before the n
|
|
|
299
401
|
[Concepts](docs/concepts/decision-memory.md) ·
|
|
300
402
|
[Guides](docs/guides/capturing-decisions.md) ·
|
|
301
403
|
[Reference](docs/reference/mcp-tools.md) ·
|
|
302
|
-
[Integrations](docs/integrations/graphify.md) (Graphify · Claude Code · Codex) ·
|
|
404
|
+
[Integrations](docs/integrations/graphify.md) (Graphify · [Claude Code](docs/integrations/claude-code.md) · [Codex](docs/integrations/codex.md) ·
|
|
405
|
+
[Muse](docs/integrations/muse.md) · [OpenCode V2](docs/integrations/opencode.md)) ·
|
|
303
406
|
[Verify your setup](docs/guides/verifying-your-setup.md) ·
|
|
304
407
|
[Operations](docs/reference/operations.md) ·
|
|
305
408
|
[Pilot kit](docs/pilot-kit/README.md) ·
|