sidegraph 0.12.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.12.0 → sidegraph-0.14.0}/.github/workflows/ci.yml +8 -1
- sidegraph-0.14.0/.opencode/INSTALL.md +67 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/AGENTS.md +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/CHANGELOG.md +161 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/CLAUDE.md +3 -2
- sidegraph-0.14.0/PKG-INFO +413 -0
- sidegraph-0.14.0/README.md +383 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/README.md +5 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/anchoring.md +12 -3
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/data-model.md +7 -6
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/decision-memory.md +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/mind-model.md +11 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/concepts/retrieval.md +4 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/bootstrap.md +9 -5
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/claude-code-setup.md +33 -6
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/codex-setup.md +31 -14
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/installation.md +75 -50
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/getting-started/quickstart.md +49 -15
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/capturing-decisions.md +6 -3
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/docs/guides/naming-your-domains.md +6 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/retrieval-in-sessions.md +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/semantic-docs.md +13 -5
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/surviving-refactors.md +16 -7
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/troubleshooting.md +62 -28
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/verifying-your-setup.md +3 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/integrations/claude-code.md +37 -16
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/integrations/codex.md +84 -81
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/docs/llms.txt +4 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/cli.md +160 -43
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/configuration.md +24 -3
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/git-bindings.md +4 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/hooks.md +70 -23
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/mcp-tools.md +61 -34
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/releasing.md +16 -3
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/stability.md +3 -3
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/plugin/sidegraph/.claude-plugin/plugin.json +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/.codex-plugin/plugin.json +1 -1
- sidegraph-0.14.0/plugin/sidegraph/.mcp.json +17 -0
- sidegraph-0.14.0/plugin/sidegraph/.muse-plugin/plugin.json +77 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/codex/hooks.json +6 -3
- sidegraph-0.14.0/plugin/sidegraph/codex/mcp.json +15 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/heal-anchors/SKILL.md +31 -20
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/import-adrs/SKILL.md +3 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/manage-domains/SKILL.md +33 -7
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/name-domains/SKILL.md +6 -3
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-decision/SKILL.md +8 -4
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-fact/SKILL.md +3 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/setup/SKILL.md +28 -17
- {sidegraph-0.12.0 → sidegraph-0.14.0}/pyproject.toml +2 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/__init__.py +1 -1
- sidegraph-0.14.0/src/sidegraph/anchoring.py +411 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/apply.py +2 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/cli.py +7 -5
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/model.py +2 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/planner.py +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/capture.py +44 -15
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/cli.py +440 -26
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/config.py +27 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/doc_import.py +2 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/doctor.py +221 -57
- sidegraph-0.14.0/src/sidegraph/domain_snapshot.py +494 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/domains.py +15 -2
- sidegraph-0.14.0/src/sidegraph/engine/rationale.py +51 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/engine/reader.py +423 -49
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/githooks.py +53 -3
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/gitio.py +30 -7
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/hooks.py +45 -12
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/mcp_entry.py +56 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/hot_index.py +23 -7
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/importer.py +53 -16
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/integrity.py +148 -10
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/retrieval.py +149 -66
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/schema.py +31 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/seed_ladder.py +8 -5
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/server.py +165 -45
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/stats/model.py +5 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/stats/render.py +4 -3
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/store.py +479 -102
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/store_layout.py +271 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/sync.py +696 -116
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/verify.py +104 -16
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/openspec/_provenance.json +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/openspec/graph.json +2396 -457
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/_provenance.json +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +8 -8
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/self-corpus/graph.json +293 -113
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_anchoring.py +1 -1
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_apply.py +9 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_cli.py +3 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_unanchored.py +6 -5
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_cli_import.py +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_init.py +69 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_stats.py +23 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_sync_check.py +1 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_codex_plugin.py +26 -9
- sidegraph-0.14.0/tests/test_command_windows.py +454 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_community_baseline.py +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_config_ancestor_lookup.py +5 -5
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_corpus_self_corpus.py +9 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_docs_claims.py +225 -5
- sidegraph-0.14.0/tests/test_doctor_code_drift.py +648 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_duplicate_entity.py +54 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_integrity.py +2 -1
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_git_bindings_blame.py +26 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_bindings_hook.py +22 -0
- sidegraph-0.14.0/tests/test_git_output_utf8.py +222 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_githooks.py +18 -0
- sidegraph-0.14.0/tests/test_graphify_pin.py +60 -0
- sidegraph-0.14.0/tests/test_hook_payload_encoding.py +102 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_borrowed_graph.py +2 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_drift_nudge.py +29 -12
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_integrity.py +32 -4
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_pretool.py +3 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_pretool_records.py +3 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_session_key.py +6 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_session_start.py +53 -4
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_session_start_concurrent.py +3 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_stop.py +124 -34
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_subagent_start.py +5 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_subdirectory_launch.py +3 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_wiring_checks.py +5 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hot_index.py +251 -1
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_installed_wheel_smoke.py +2 -0
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_integrity_refresh_hook.py +245 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_integrity_replay.py +2 -1
- {sidegraph-0.12.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.14.0/tests/test_mcp_entry_repo_root.py +148 -0
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_pathless_descriptor_adoption.py +2 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_public_hook_launch.py +63 -0
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_reader_member_name_lookup.py +4 -4
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_retrieval_context.py +17 -7
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_retrieval_toc.py +1 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_add_anchors.py +1 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_borrowed_graph.py +8 -5
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_server_graph_freshness.py +5 -2
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_mcp_smoke.py +100 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_refresh.py +27 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_tolerant_seeds.py +2 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_session_attribution.py +13 -0
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_store_mutation_guard.py +22 -0
- {sidegraph-0.12.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.12.0 → sidegraph-0.14.0}/tests/test_store_symlinks.py +7 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_subagent_start_manifests.py +6 -0
- sidegraph-0.14.0/tests/test_subprocess_text_encoding.py +111 -0
- sidegraph-0.14.0/tests/test_sync_membership.py +779 -0
- {sidegraph-0.12.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.12.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.12.0 → sidegraph-0.14.0}/tests/test_verify_git_stdin.py +2 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_snapshot.py +59 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/wheel_smoke.py +17 -1
- {sidegraph-0.12.0 → sidegraph-0.14.0}/uv.lock +1 -1
- sidegraph-0.12.0/PKG-INFO +0 -262
- sidegraph-0.12.0/README.md +0 -232
- sidegraph-0.12.0/plugin/sidegraph/.mcp.json +0 -16
- sidegraph-0.12.0/plugin/sidegraph/codex/mcp.json +0 -9
- sidegraph-0.12.0/src/sidegraph/anchoring.py +0 -229
- sidegraph-0.12.0/tests/test_doctor_code_drift.py +0 -323
- sidegraph-0.12.0/tests/test_importer.py +0 -573
- sidegraph-0.12.0/tests/test_reader_community_labels.py +0 -82
- sidegraph-0.12.0/tests/test_server_get_store.py +0 -62
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.agents/plugins/marketplace.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.claude-plugin/marketplace.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/CODEOWNERS +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/secret_scanning.yml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/workflows/publish.yml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/workflows/scorecard.yml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.github/workflows/session-link-gate.yml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.gitignore +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.gitleaks.toml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.pre-commit-config.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/.python-version +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/CODE_OF_CONDUCT.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/CONTRIBUTING.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/LICENSE +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/SECURITY.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/guides/team-workflow.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/README.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/corpus_fit.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/judge-prompt.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/questions-prompt.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/pilot-kit/rubric-template.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/reference/operations.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/docs/whitepaper/index.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/hooks/hooks.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/explain-why/SKILL.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/import-adrs/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/manage-domains/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/name-domains/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/setup/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/stats/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/triage-drift/SKILL.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bash_paths.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/__init__.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/catalog.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/integrations.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/proof.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/review.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/bootstrap/scan.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/engine/__init__.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/freshness.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/gitenv.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/__init__.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/claude_settings.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/launch.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/session_identity.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/host/subagent.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/input_limits.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/nearest_anchored.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/okf.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/profiles.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/redaction_scan.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/redaction_tokens.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/stats/__init__.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/text_paths.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/tool_rate_limit.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/validation_errors.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/__init__.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/model.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/render.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/viz/template.html +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/worktree_seeds.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/src/sidegraph/write_boundary.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/__init__.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/conftest.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bitfinex_slice.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/graph.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.12.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.12.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.12.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.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/sad.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-empty.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/design.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/proposal.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/design.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/proposal.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/plan.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/member_names_python_graph.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/member_names_swift_graph.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/fixtures/mini_graph.json +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_agent_brief_manifests.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bash_paths.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_batch_panel_fixes.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_catalog.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_integrations.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_model.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_planner.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_proof.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_review.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_scan.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bootstrap_scan_regular.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_bounded_listings.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_auto_accept.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_facts.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_initiative.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_integration.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_neighbors.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_propose.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_capture_redact.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_compact.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_domains.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_graph_paths.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_init_hooks.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_okf.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_ratify.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_ratify_facts.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_sync.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_unreadable_paths.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_cli_viz.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_config.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_config_borrowed_graph.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_corpus_expected_renders.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_coverage_telemetry_e2e.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_digest_integrity.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doc_corpus_integration.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doc_import.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_auto_share.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_dangling_supports.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_graph_root_mismatch.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_graph_stale.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_never_surfaced.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_stale_instructions.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_unhashable_payload.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_doctor_unratified_accept.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_domains.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_entity_duplicate_resolution.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_entity_get_or_create_race.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_entry_point_arguments.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_env_isolation.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_fact_reachability_gate.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_flow_profile.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_bindings_provenance.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_config_isolation.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_git_env.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_graph_freshness.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hook_showings.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hook_spawn_guard.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_agent_brief.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_agent_state.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_claude_settings.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_launch.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_host_touch_events.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hot_index_hook.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_hot_path_imports.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_index_journal_mode.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_lazy_root.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_mind_model_additive_fields.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_nearest_anchored.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_okf.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_openspec_profile.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_pilot_kit_corpus_fit.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_portable_json.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_proposal_lifecycle.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_ratify_listing_gone_dark.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_doc_nodes.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_graph.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_integration.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_nodes_in_file.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_perf.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_rationale.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_read.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_resolve.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_subdir_mismatch.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_reader_version.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_redaction_scan.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_redaction_seeded.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_redaction_tokens.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_repo_relative_paths_portable.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_repoint_integration.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_budget_counters.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_drift_marker.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_facts.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_guessed.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_ids.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_integration.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_rank.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_seeds.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_shown_ids.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_terminal_evidence.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_thin_tools.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_toptier.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_retrieval_unratified.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sandbox_hygiene.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_schema_descriptor.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_schema_domain.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_schema_fact.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_secret_scan_gate.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_binary_limits.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_capture_diagnostics.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_capture_limits.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_cli_diagnostics.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_doc_limits.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_input_limits.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_mcp_write_diagnostics.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_numeric_enums.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_python_shapes.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_redaction_cursor.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_redaction_scaling.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_validation_errors.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_security_write_boundary.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_seed_ladder.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_seed_paths_portable.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_anchoring.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_annotations.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_argument_names.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_capture.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_commit_hint.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_coverage_events.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_decision_listing.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_domains.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_facts.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_find_entity.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_get_task_context.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_graph_path.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_import.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_invocation_policy.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_nearest_anchored.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_prewrite_anchor_validation.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_ratify_facts.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_record_types.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_redaction.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_render_events.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_result_contract.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_supersede.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_sync_anchors.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_telemetry.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_thin_tools.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_server_verify.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_skill_frontmatter.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_graph.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_health.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_model.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_render.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_skill.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stats_snapshot.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_stop_hot_path.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_agent_state.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_atomic_write_tmp_names.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_bad_file.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_binding_index.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_canonical_stat.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_compact.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_compact_review.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_concurrent_open.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_coverage_telemetry.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_cross_process_mutations.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_derived_community.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_domains.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_entities.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_fact_cascade.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_facts.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_git_root_symlink.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_meta.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_migration.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_mutation_immediate.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_non_file_entries.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_opens_with_merged_duplicate.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_ratification.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_rebuild_atomicity.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_record_identity.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_record_types.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_render_events.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_retrieval.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_slug_conflicts.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_stamping_marker.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_telemetry.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_threading.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_tmp_sweep_age.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_store_update_meta_if.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_canonical_writes.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_clean.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_domains.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_drift_cache.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_fresh_clone.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_integration.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_moved_adoption.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_repoint.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_report_has_findings.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_run.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_toc_cache.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_sync_volatile_heal.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_telemetry_retention.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_text_paths.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_git_framing.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_git_revisions.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_verify_transitions.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_viz_asset_packaged.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_viz_model.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_viz_render_html.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_viz_render_json.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/test_worktree_seeds.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tests/wheel_server_trace.py +0 -0
- {sidegraph-0.12.0 → sidegraph-0.14.0}/tools/check_no_session_links.py +0 -0
|
@@ -192,6 +192,9 @@ jobs:
|
|
|
192
192
|
tests/test_server_result_contract.py tests/test_server_invocation_policy.py `
|
|
193
193
|
tests/test_verify_git_stdin.py tests/test_seed_paths_portable.py `
|
|
194
194
|
tests/test_repo_relative_paths_portable.py `
|
|
195
|
+
tests/test_command_windows.py `
|
|
196
|
+
tests/test_hook_payload_encoding.py `
|
|
197
|
+
tests/test_git_output_utf8.py `
|
|
195
198
|
$privateTests `
|
|
196
199
|
tests/test_installed_wheel_smoke.py
|
|
197
200
|
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
@@ -326,11 +329,15 @@ jobs:
|
|
|
326
329
|
cache-dependency-glob: "uv.lock"
|
|
327
330
|
|
|
328
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"
|
|
329
336
|
run: |
|
|
330
337
|
if [ ! -d .sidegraph ]; then
|
|
331
338
|
echo "no .sidegraph in this checkout — anchor health not applicable"
|
|
332
339
|
exit 0
|
|
333
340
|
fi
|
|
334
|
-
uvx --from graphifyy==0.9.
|
|
341
|
+
uvx --from graphifyy==0.9.90 graphify update .
|
|
335
342
|
uv sync --locked
|
|
336
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,167 @@ 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
|
+
|
|
129
|
+
## [0.13.0] — 2026-10-14
|
|
130
|
+
|
|
131
|
+
### Fixed
|
|
132
|
+
|
|
133
|
+
- On Windows, hooks misread the payload the host sends when a path in it has a non-ASCII
|
|
134
|
+
character (an accented or Cyrillic user name or project folder). The Stop capture reminder
|
|
135
|
+
never fired, PreToolUse delivered no records, and for some names SessionStart and
|
|
136
|
+
SubagentStart printed nothing.
|
|
137
|
+
- On Windows, a non-ASCII git user name, branch name or repository path was read back garbled:
|
|
138
|
+
a ratified record could carry a garbled name in its provenance, and `sidegraph-verify
|
|
139
|
+
--against` failed or reported false changes for records containing non-ASCII text.
|
|
140
|
+
- A change to a file whose name has non-ASCII characters, spaces or quotes was missed by the
|
|
141
|
+
drift check and the commit-trailer candidates, because git escaped the name.
|
|
142
|
+
- On Windows, a Codex hook started from a subdirectory of a repository whose path has non-ASCII
|
|
143
|
+
characters now runs from the repository root.
|
|
144
|
+
- A default Git for Windows install no longer breaks the MCP server. Its installer puts only
|
|
145
|
+
`Git\cmd` on PATH, which has no `sh`, so the server, which started with `sh`, did not start.
|
|
146
|
+
The Codex hooks have a Windows command for the same reason (see Changed).
|
|
147
|
+
- The project's ratify policy now applies under Codex. `sidegraph-init` commits it to
|
|
148
|
+
`.claude/settings.json`, which Codex does not read, so under Codex every agent proposal
|
|
149
|
+
waited for review whatever the team chose. The plugin's MCP server now reads the committed
|
|
150
|
+
value when its environment sets none; an explicit `SIDEGRAPH_RATIFY_POLICY` still wins.
|
|
151
|
+
|
|
152
|
+
### Changed
|
|
153
|
+
|
|
154
|
+
- The plugins launch without `sh` on PATH. Both MCP launchers start `uvx` (`uv` in the
|
|
155
|
+
development manifest) directly, and `sidegraph-mcp --repo-root` anchors the server to the
|
|
156
|
+
project: `CLAUDE_PROJECT_DIR`, else the git top-level, else the working directory. The Codex
|
|
157
|
+
hooks gain a PowerShell `commandWindows` that Windows PowerShell 5.1 parses. On native Windows
|
|
158
|
+
you need no PATH change and no PowerShell 7; Git for Windows at its default options is
|
|
159
|
+
enough. The Codex hooks need a Codex release that supports `commandWindows` (verified with
|
|
160
|
+
0.162.1). The Windows hook definition changes, so approve the changed hooks once in `/hooks`
|
|
161
|
+
on Windows; other platforms are unaffected.
|
|
162
|
+
- The optional terminal CLI now installs from the same place as the plugin, the public
|
|
163
|
+
repository's `main` branch: `uv tool install git+https://github.com/SantyagoSeaman/sidegraph.git@main`,
|
|
164
|
+
updated after each release with `uv tool upgrade sidegraph`. The docs no longer send you to
|
|
165
|
+
PyPI for it; PyPI still carries every release for pinning an exact version. The `path-skew`
|
|
166
|
+
SessionStart line now offers `uv tool install --reinstall git+https://github.com/SantyagoSeaman/sidegraph.git@main`,
|
|
167
|
+
which moves an older install from PyPI, pinned or not, to the latest release.
|
|
168
|
+
- README: the Quickstart is one numbered sequence with the plugin commands inline, a teammate
|
|
169
|
+
path, and the rarer options below it; "How it works" is a numbered list instead of a diagram.
|
|
170
|
+
|
|
10
171
|
## [0.12.0] — 2026-10-12
|
|
11
172
|
|
|
12
173
|
### 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
|