sidegraph 0.16.0__tar.gz → 0.17.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.17.0/.github/workflows/ci.yml +349 -0
- sidegraph-0.17.0/AGENTS.md +80 -0
- sidegraph-0.17.0/CHANGELOG.md +2414 -0
- sidegraph-0.17.0/CLAUDE.md +122 -0
- sidegraph-0.17.0/CONTRIBUTING.md +93 -0
- sidegraph-0.17.0/PKG-INFO +525 -0
- sidegraph-0.17.0/README.md +495 -0
- sidegraph-0.17.0/docs/README.md +65 -0
- sidegraph-0.17.0/docs/concepts/anchoring.md +205 -0
- sidegraph-0.17.0/docs/concepts/data-model.md +332 -0
- sidegraph-0.17.0/docs/concepts/mind-model.md +221 -0
- sidegraph-0.17.0/docs/concepts/retrieval.md +431 -0
- sidegraph-0.17.0/docs/getting-started/bootstrap.md +248 -0
- sidegraph-0.17.0/docs/getting-started/claude-code-setup.md +294 -0
- sidegraph-0.17.0/docs/getting-started/codex-setup.md +193 -0
- sidegraph-0.17.0/docs/getting-started/installation.md +337 -0
- sidegraph-0.17.0/docs/getting-started/quickstart.md +135 -0
- sidegraph-0.17.0/docs/guides/adr-export.md +134 -0
- sidegraph-0.17.0/docs/guides/capturing-decisions.md +436 -0
- sidegraph-0.17.0/docs/guides/ci-cd-maintenance.md +422 -0
- sidegraph-0.17.0/docs/guides/migrating-to-0.14.md +290 -0
- sidegraph-0.17.0/docs/guides/migrating-to-0.17.md +329 -0
- sidegraph-0.17.0/docs/guides/naming-your-domains.md +329 -0
- sidegraph-0.17.0/docs/guides/retrieval-in-sessions.md +300 -0
- sidegraph-0.17.0/docs/guides/semantic-docs.md +259 -0
- sidegraph-0.17.0/docs/guides/surviving-refactors.md +254 -0
- sidegraph-0.17.0/docs/guides/team-workflow.md +229 -0
- sidegraph-0.17.0/docs/guides/troubleshooting.md +457 -0
- sidegraph-0.17.0/docs/guides/using-0.15.md +44 -0
- sidegraph-0.17.0/docs/guides/using-0.16.md +47 -0
- sidegraph-0.17.0/docs/integrations/claude-code.md +377 -0
- sidegraph-0.17.0/docs/integrations/codex.md +303 -0
- sidegraph-0.17.0/docs/integrations/graphify.md +343 -0
- sidegraph-0.17.0/docs/integrations/grok.md +36 -0
- sidegraph-0.17.0/docs/integrations/muse.md +52 -0
- sidegraph-0.17.0/docs/llms.txt +76 -0
- sidegraph-0.17.0/docs/pilot-kit/judge-prompt.md +41 -0
- sidegraph-0.17.0/docs/reference/cli.md +2034 -0
- sidegraph-0.17.0/docs/reference/configuration.md +257 -0
- sidegraph-0.17.0/docs/reference/git-bindings.md +171 -0
- sidegraph-0.17.0/docs/reference/hooks.md +1174 -0
- sidegraph-0.17.0/docs/reference/mcp-tools.md +1835 -0
- sidegraph-0.17.0/docs/reference/operations.md +116 -0
- sidegraph-0.17.0/docs/reference/releasing.md +193 -0
- sidegraph-0.17.0/docs/reference/stability.md +88 -0
- sidegraph-0.17.0/docs/reference/store-format.md +1023 -0
- sidegraph-0.17.0/package.json +6 -0
- sidegraph-0.17.0/plugin/sidegraph/.claude-plugin/plugin.json +11 -0
- sidegraph-0.17.0/plugin/sidegraph/.codex-plugin/plugin.json +12 -0
- sidegraph-0.17.0/plugin/sidegraph/.muse-plugin/plugin.json +85 -0
- sidegraph-0.17.0/plugin/sidegraph/skills/compact/SKILL.md +63 -0
- sidegraph-0.17.0/plugin/sidegraph/skills/stats/agents/openai.yaml +6 -0
- sidegraph-0.17.0/pyproject.toml +126 -0
- sidegraph-0.17.0/src/sidegraph/__init__.py +76 -0
- sidegraph-0.17.0/src/sidegraph/adr.py +299 -0
- sidegraph-0.17.0/src/sidegraph/bootstrap/apply.py +654 -0
- sidegraph-0.17.0/src/sidegraph/bootstrap/catalog.py +215 -0
- sidegraph-0.17.0/src/sidegraph/cli.py +3393 -0
- sidegraph-0.17.0/src/sidegraph/doctor.py +2110 -0
- sidegraph-0.17.0/src/sidegraph/gitio.py +617 -0
- sidegraph-0.17.0/src/sidegraph/host/hooks.py +2401 -0
- sidegraph-0.17.0/src/sidegraph/hot_index.py +540 -0
- sidegraph-0.17.0/src/sidegraph/integrity.py +1581 -0
- sidegraph-0.17.0/src/sidegraph/maintenance.py +1387 -0
- sidegraph-0.17.0/src/sidegraph/maintenance_clock.py +306 -0
- sidegraph-0.17.0/src/sidegraph/migrate.py +474 -0
- sidegraph-0.17.0/src/sidegraph/nearest_anchored.py +394 -0
- sidegraph-0.17.0/src/sidegraph/retrieval.py +2148 -0
- sidegraph-0.17.0/src/sidegraph/schema.py +520 -0
- sidegraph-0.17.0/src/sidegraph/server.py +5748 -0
- sidegraph-0.17.0/src/sidegraph/stats/model.py +839 -0
- sidegraph-0.17.0/src/sidegraph/store.py +5382 -0
- sidegraph-0.17.0/src/sidegraph/store_format.py +829 -0
- sidegraph-0.17.0/src/sidegraph/store_layout.py +814 -0
- sidegraph-0.17.0/src/sidegraph/store_rules.py +699 -0
- sidegraph-0.17.0/src/sidegraph/store_view.py +157 -0
- sidegraph-0.17.0/src/sidegraph/verify.py +2587 -0
- sidegraph-0.17.0/tests/bounded_listings_support.py +160 -0
- sidegraph-0.17.0/tests/conftest.py +214 -0
- sidegraph-0.17.0/tests/drift_checks_support.py +114 -0
- sidegraph-0.17.0/tests/githooks_support.py +414 -0
- sidegraph-0.17.0/tests/graph_repo_support.py +263 -0
- sidegraph-0.17.0/tests/membership_support.py +29 -0
- sidegraph-0.17.0/tests/moved_adoption_support.py +133 -0
- sidegraph-0.17.0/tests/store_format2_support.py +768 -0
- sidegraph-0.17.0/tests/store_non_file_support.py +67 -0
- sidegraph-0.17.0/tests/store_record_support.py +55 -0
- sidegraph-0.17.0/tests/test_adr.py +345 -0
- sidegraph-0.17.0/tests/test_anchoring_membership.py +301 -0
- sidegraph-0.17.0/tests/test_bash_paths.py +334 -0
- sidegraph-0.17.0/tests/test_bootstrap_apply.py +811 -0
- sidegraph-0.17.0/tests/test_bootstrap_cli.py +1624 -0
- sidegraph-0.17.0/tests/test_bootstrap_planner.py +511 -0
- sidegraph-0.17.0/tests/test_bootstrap_scan_regular.py +345 -0
- sidegraph-0.17.0/tests/test_bounded_listings.py +1279 -0
- sidegraph-0.17.0/tests/test_capture_facts.py +316 -0
- sidegraph-0.17.0/tests/test_capture_neighbors.py +182 -0
- sidegraph-0.17.0/tests/test_capture_propose.py +859 -0
- sidegraph-0.17.0/tests/test_cli_compact.py +300 -0
- sidegraph-0.17.0/tests/test_cli_compact_format2.py +458 -0
- sidegraph-0.17.0/tests/test_cli_domains.py +538 -0
- sidegraph-0.17.0/tests/test_cli_domains_snapshot.py +325 -0
- sidegraph-0.17.0/tests/test_cli_graph_paths.py +521 -0
- sidegraph-0.17.0/tests/test_cli_import.py +1876 -0
- sidegraph-0.17.0/tests/test_cli_init.py +621 -0
- sidegraph-0.17.0/tests/test_cli_init_hooks.py +564 -0
- sidegraph-0.17.0/tests/test_cli_okf.py +559 -0
- sidegraph-0.17.0/tests/test_cli_ratify.py +523 -0
- sidegraph-0.17.0/tests/test_cli_ratify_facts.py +104 -0
- sidegraph-0.17.0/tests/test_cli_stats.py +682 -0
- sidegraph-0.17.0/tests/test_cli_store_precedence.py +160 -0
- sidegraph-0.17.0/tests/test_cli_sync.py +438 -0
- sidegraph-0.17.0/tests/test_cli_sync_check.py +260 -0
- sidegraph-0.17.0/tests/test_cli_unreadable_paths.py +275 -0
- sidegraph-0.17.0/tests/test_codex_plugin.py +207 -0
- sidegraph-0.17.0/tests/test_community_baseline.py +48 -0
- sidegraph-0.17.0/tests/test_compact_skill.py +28 -0
- sidegraph-0.17.0/tests/test_config.py +271 -0
- sidegraph-0.17.0/tests/test_config_borrowed_graph.py +174 -0
- sidegraph-0.17.0/tests/test_corpus_expected_renders.py +42 -0
- sidegraph-0.17.0/tests/test_delivery_evidence.py +297 -0
- sidegraph-0.17.0/tests/test_digest_integrity.py +555 -0
- sidegraph-0.17.0/tests/test_doc_import.py +2881 -0
- sidegraph-0.17.0/tests/test_docs_claims.py +1301 -0
- sidegraph-0.17.0/tests/test_doctor.py +550 -0
- sidegraph-0.17.0/tests/test_doctor_auto_share.py +658 -0
- sidegraph-0.17.0/tests/test_doctor_code_drift.py +644 -0
- sidegraph-0.17.0/tests/test_doctor_dangling_supports.py +149 -0
- sidegraph-0.17.0/tests/test_doctor_graph_stale.py +90 -0
- sidegraph-0.17.0/tests/test_doctor_integrity.py +213 -0
- sidegraph-0.17.0/tests/test_doctor_scan.py +293 -0
- sidegraph-0.17.0/tests/test_doctor_unhashable_payload.py +165 -0
- sidegraph-0.17.0/tests/test_domains.py +1590 -0
- sidegraph-0.17.0/tests/test_drift_checks.py +579 -0
- sidegraph-0.17.0/tests/test_engine_build.py +170 -0
- sidegraph-0.17.0/tests/test_entity_get_or_create_race.py +200 -0
- sidegraph-0.17.0/tests/test_entity_twins.py +528 -0
- sidegraph-0.17.0/tests/test_entry_point_arguments.py +260 -0
- sidegraph-0.17.0/tests/test_env_isolation.py +53 -0
- sidegraph-0.17.0/tests/test_file_bound_retrieval.py +492 -0
- sidegraph-0.17.0/tests/test_flow_profile.py +1030 -0
- sidegraph-0.17.0/tests/test_format2_notices.py +289 -0
- sidegraph-0.17.0/tests/test_git_bindings_blame.py +272 -0
- sidegraph-0.17.0/tests/test_git_bindings_hook.py +574 -0
- sidegraph-0.17.0/tests/test_git_bindings_provenance.py +171 -0
- sidegraph-0.17.0/tests/test_git_output_utf8.py +214 -0
- sidegraph-0.17.0/tests/test_githooks.py +861 -0
- sidegraph-0.17.0/tests/test_graph_freshness.py +438 -0
- sidegraph-0.17.0/tests/test_health_check_skill.py +1122 -0
- sidegraph-0.17.0/tests/test_hook_contention.py +1010 -0
- sidegraph-0.17.0/tests/test_hook_failure_diagnostics.py +482 -0
- sidegraph-0.17.0/tests/test_hook_spawn_guard.py +308 -0
- sidegraph-0.17.0/tests/test_host_borrowed_graph.py +287 -0
- sidegraph-0.17.0/tests/test_host_integrity.py +1094 -0
- sidegraph-0.17.0/tests/test_host_launch.py +343 -0
- sidegraph-0.17.0/tests/test_host_pretool_records.py +861 -0
- sidegraph-0.17.0/tests/test_host_session_start.py +739 -0
- sidegraph-0.17.0/tests/test_host_stop.py +1700 -0
- sidegraph-0.17.0/tests/test_host_touch_events.py +298 -0
- sidegraph-0.17.0/tests/test_host_wiring_checks.py +939 -0
- sidegraph-0.17.0/tests/test_hot_index.py +908 -0
- sidegraph-0.17.0/tests/test_hot_index_facts.py +798 -0
- sidegraph-0.17.0/tests/test_index_journal_mode.py +196 -0
- sidegraph-0.17.0/tests/test_integrity.py +784 -0
- sidegraph-0.17.0/tests/test_integrity_engine_version.py +174 -0
- sidegraph-0.17.0/tests/test_integrity_refresh_hook.py +537 -0
- sidegraph-0.17.0/tests/test_integrity_replay.py +114 -0
- sidegraph-0.17.0/tests/test_integrity_stranded.py +874 -0
- sidegraph-0.17.0/tests/test_maintenance_clock.py +361 -0
- sidegraph-0.17.0/tests/test_maintenance_dry_run_parity.py +173 -0
- sidegraph-0.17.0/tests/test_maintenance_plan.py +767 -0
- sidegraph-0.17.0/tests/test_maintenance_publish.py +1147 -0
- sidegraph-0.17.0/tests/test_member_anchor_wiring.py +307 -0
- sidegraph-0.17.0/tests/test_merge_matrix_format2.py +721 -0
- sidegraph-0.17.0/tests/test_migrate.py +1128 -0
- sidegraph-0.17.0/tests/test_pathless_descriptor_adoption.py +489 -0
- sidegraph-0.17.0/tests/test_pilot_kit_corpus_fit.py +146 -0
- sidegraph-0.17.0/tests/test_private_tests_isolation.py +61 -0
- sidegraph-0.17.0/tests/test_public_hook_launch.py +625 -0
- sidegraph-0.17.0/tests/test_ratify_policy.py +4356 -0
- sidegraph-0.17.0/tests/test_reader_community_labels.py +166 -0
- sidegraph-0.17.0/tests/test_reader_doc_nodes.py +134 -0
- sidegraph-0.17.0/tests/test_reader_engine_version.py +160 -0
- sidegraph-0.17.0/tests/test_reader_file_labels.py +183 -0
- sidegraph-0.17.0/tests/test_reader_label_conventions.py +20 -0
- sidegraph-0.17.0/tests/test_reader_member_name_lookup.py +187 -0
- sidegraph-0.17.0/tests/test_reader_nodes_in_file.py +12 -0
- sidegraph-0.17.0/tests/test_reader_perf.py +214 -0
- sidegraph-0.17.0/tests/test_reader_read.py +27 -0
- sidegraph-0.17.0/tests/test_reader_resolve.py +129 -0
- sidegraph-0.17.0/tests/test_reader_stub_collapse.py +421 -0
- sidegraph-0.17.0/tests/test_reader_version.py +70 -0
- sidegraph-0.17.0/tests/test_readers_format2.py +734 -0
- sidegraph-0.17.0/tests/test_redaction_scan.py +157 -0
- sidegraph-0.17.0/tests/test_redaction_tokens.py +172 -0
- sidegraph-0.17.0/tests/test_retrieval_budget_counters.py +400 -0
- sidegraph-0.17.0/tests/test_retrieval_drilldown.py +690 -0
- sidegraph-0.17.0/tests/test_retrieval_facts.py +222 -0
- sidegraph-0.17.0/tests/test_retrieval_guessed.py +415 -0
- sidegraph-0.17.0/tests/test_retrieval_ids.py +204 -0
- sidegraph-0.17.0/tests/test_retrieval_membership_generations.py +79 -0
- sidegraph-0.17.0/tests/test_retrieval_rank.py +641 -0
- sidegraph-0.17.0/tests/test_retrieval_shown_ids.py +15 -0
- sidegraph-0.17.0/tests/test_retrieval_thin_tools.py +171 -0
- sidegraph-0.17.0/tests/test_retrieval_toc.py +501 -0
- sidegraph-0.17.0/tests/test_retrieval_toptier.py +123 -0
- sidegraph-0.17.0/tests/test_schema_descriptor.py +112 -0
- sidegraph-0.17.0/tests/test_security_input_limits.py +253 -0
- sidegraph-0.17.0/tests/test_security_numeric_enums.py +32 -0
- sidegraph-0.17.0/tests/test_security_python_shapes.py +47 -0
- sidegraph-0.17.0/tests/test_security_validation_errors.py +100 -0
- sidegraph-0.17.0/tests/test_security_write_boundary.py +163 -0
- sidegraph-0.17.0/tests/test_seed_paths_portable.py +151 -0
- sidegraph-0.17.0/tests/test_server_add_anchors.py +200 -0
- sidegraph-0.17.0/tests/test_server_anchoring.py +239 -0
- sidegraph-0.17.0/tests/test_server_annotations.py +86 -0
- sidegraph-0.17.0/tests/test_server_argument_names.py +274 -0
- sidegraph-0.17.0/tests/test_server_borrowed_graph.py +599 -0
- sidegraph-0.17.0/tests/test_server_capture.py +878 -0
- sidegraph-0.17.0/tests/test_server_commit_hint.py +216 -0
- sidegraph-0.17.0/tests/test_server_coverage_events.py +251 -0
- sidegraph-0.17.0/tests/test_server_drilldown.py +96 -0
- sidegraph-0.17.0/tests/test_server_facts.py +323 -0
- sidegraph-0.17.0/tests/test_server_get_task_context.py +45 -0
- sidegraph-0.17.0/tests/test_server_graph_freshness.py +386 -0
- sidegraph-0.17.0/tests/test_server_prewrite_anchor_validation.py +183 -0
- sidegraph-0.17.0/tests/test_server_render_events.py +349 -0
- sidegraph-0.17.0/tests/test_server_thin_tools.py +69 -0
- sidegraph-0.17.0/tests/test_server_tolerant_seeds.py +653 -0
- sidegraph-0.17.0/tests/test_session_attribution.py +627 -0
- sidegraph-0.17.0/tests/test_skill_frontmatter.py +41 -0
- sidegraph-0.17.0/tests/test_stats_graph.py +134 -0
- sidegraph-0.17.0/tests/test_stats_health.py +205 -0
- sidegraph-0.17.0/tests/test_stats_model.py +1668 -0
- sidegraph-0.17.0/tests/test_stats_render.py +1402 -0
- sidegraph-0.17.0/tests/test_stats_snapshot.py +162 -0
- sidegraph-0.17.0/tests/test_store.py +96 -0
- sidegraph-0.17.0/tests/test_store_agent_state.py +282 -0
- sidegraph-0.17.0/tests/test_store_bad_file.py +569 -0
- sidegraph-0.17.0/tests/test_store_canonical_stat.py +296 -0
- sidegraph-0.17.0/tests/test_store_compact.py +1298 -0
- sidegraph-0.17.0/tests/test_store_coverage_telemetry.py +67 -0
- sidegraph-0.17.0/tests/test_store_cross_process_mutations.py +281 -0
- sidegraph-0.17.0/tests/test_store_derived_community.py +129 -0
- sidegraph-0.17.0/tests/test_store_domains.py +657 -0
- sidegraph-0.17.0/tests/test_store_format.py +257 -0
- sidegraph-0.17.0/tests/test_store_format2_load.py +548 -0
- sidegraph-0.17.0/tests/test_store_format2_marker.py +629 -0
- sidegraph-0.17.0/tests/test_store_format2_writes.py +303 -0
- sidegraph-0.17.0/tests/test_store_git_root_symlink.py +267 -0
- sidegraph-0.17.0/tests/test_store_inventory.py +513 -0
- sidegraph-0.17.0/tests/test_store_meta.py +140 -0
- sidegraph-0.17.0/tests/test_store_mutation_guard.py +675 -0
- sidegraph-0.17.0/tests/test_store_non_file_entries.py +394 -0
- sidegraph-0.17.0/tests/test_store_persistence.py +502 -0
- sidegraph-0.17.0/tests/test_store_record_identity.py +408 -0
- sidegraph-0.17.0/tests/test_store_render_events.py +70 -0
- sidegraph-0.17.0/tests/test_store_requirement.py +614 -0
- sidegraph-0.17.0/tests/test_store_rules.py +146 -0
- sidegraph-0.17.0/tests/test_store_stamping_marker.py +334 -0
- sidegraph-0.17.0/tests/test_store_symlinks.py +89 -0
- sidegraph-0.17.0/tests/test_store_telemetry.py +166 -0
- sidegraph-0.17.0/tests/test_store_threading.py +105 -0
- sidegraph-0.17.0/tests/test_store_tmp_sweep_age.py +100 -0
- sidegraph-0.17.0/tests/test_sync_canonical_writes.py +165 -0
- sidegraph-0.17.0/tests/test_sync_domains.py +946 -0
- sidegraph-0.17.0/tests/test_sync_membership.py +675 -0
- sidegraph-0.17.0/tests/test_sync_moved_adoption.py +580 -0
- sidegraph-0.17.0/tests/test_sync_rebind.py +1225 -0
- sidegraph-0.17.0/tests/test_sync_repoint.py +361 -0
- sidegraph-0.17.0/tests/test_sync_snapshot_membership.py +465 -0
- sidegraph-0.17.0/tests/test_sync_volatile_heal.py +292 -0
- sidegraph-0.17.0/tests/test_sync_wiring.py +72 -0
- sidegraph-0.17.0/tests/test_text_paths.py +401 -0
- sidegraph-0.17.0/tests/test_verify_domain_snapshot.py +101 -0
- sidegraph-0.17.0/tests/test_verify_format2_against.py +997 -0
- sidegraph-0.17.0/tests/test_verify_format2_snapshot.py +701 -0
- sidegraph-0.17.0/tests/test_verify_git_framing.py +329 -0
- sidegraph-0.17.0/tests/test_verify_git_revisions.py +342 -0
- sidegraph-0.17.0/tests/test_verify_snapshot.py +1753 -0
- sidegraph-0.17.0/tests/test_verify_transitions.py +1516 -0
- sidegraph-0.17.0/tests/test_viz_render_html.py +65 -0
- sidegraph-0.17.0/tests/test_worktree_seeds.py +591 -0
- sidegraph-0.17.0/uv.lock +1523 -0
- sidegraph-0.16.0/.github/workflows/ci.yml +0 -347
- sidegraph-0.16.0/AGENTS.md +0 -79
- sidegraph-0.16.0/CHANGELOG.md +0 -2376
- sidegraph-0.16.0/CLAUDE.md +0 -120
- sidegraph-0.16.0/CONTRIBUTING.md +0 -96
- sidegraph-0.16.0/PKG-INFO +0 -416
- sidegraph-0.16.0/README.md +0 -386
- sidegraph-0.16.0/docs/README.md +0 -61
- sidegraph-0.16.0/docs/concepts/anchoring.md +0 -203
- sidegraph-0.16.0/docs/concepts/data-model.md +0 -326
- sidegraph-0.16.0/docs/concepts/mind-model.md +0 -221
- sidegraph-0.16.0/docs/concepts/retrieval.md +0 -427
- sidegraph-0.16.0/docs/getting-started/bootstrap.md +0 -235
- sidegraph-0.16.0/docs/getting-started/claude-code-setup.md +0 -294
- sidegraph-0.16.0/docs/getting-started/codex-setup.md +0 -193
- sidegraph-0.16.0/docs/getting-started/installation.md +0 -336
- sidegraph-0.16.0/docs/getting-started/quickstart.md +0 -135
- sidegraph-0.16.0/docs/guides/adr-export.md +0 -134
- sidegraph-0.16.0/docs/guides/capturing-decisions.md +0 -436
- sidegraph-0.16.0/docs/guides/ci-cd-maintenance.md +0 -410
- sidegraph-0.16.0/docs/guides/migrating-to-0.14.md +0 -289
- sidegraph-0.16.0/docs/guides/naming-your-domains.md +0 -328
- sidegraph-0.16.0/docs/guides/retrieval-in-sessions.md +0 -298
- sidegraph-0.16.0/docs/guides/semantic-docs.md +0 -259
- sidegraph-0.16.0/docs/guides/surviving-refactors.md +0 -253
- sidegraph-0.16.0/docs/guides/team-workflow.md +0 -212
- sidegraph-0.16.0/docs/guides/troubleshooting.md +0 -432
- sidegraph-0.16.0/docs/guides/using-0.15.md +0 -42
- sidegraph-0.16.0/docs/guides/using-0.16.md +0 -45
- sidegraph-0.16.0/docs/integrations/claude-code.md +0 -376
- sidegraph-0.16.0/docs/integrations/codex.md +0 -303
- sidegraph-0.16.0/docs/integrations/graphify.md +0 -334
- sidegraph-0.16.0/docs/integrations/muse.md +0 -48
- sidegraph-0.16.0/docs/llms.txt +0 -70
- sidegraph-0.16.0/docs/pilot-kit/judge-prompt.md +0 -41
- sidegraph-0.16.0/docs/reference/cli.md +0 -1881
- sidegraph-0.16.0/docs/reference/configuration.md +0 -256
- sidegraph-0.16.0/docs/reference/git-bindings.md +0 -164
- sidegraph-0.16.0/docs/reference/hooks.md +0 -1172
- sidegraph-0.16.0/docs/reference/mcp-tools.md +0 -1828
- sidegraph-0.16.0/docs/reference/operations.md +0 -112
- sidegraph-0.16.0/docs/reference/releasing.md +0 -191
- sidegraph-0.16.0/docs/reference/stability.md +0 -88
- sidegraph-0.16.0/docs/reference/store-format.md +0 -916
- sidegraph-0.16.0/package.json +0 -6
- sidegraph-0.16.0/plugin/sidegraph/.claude-plugin/plugin.json +0 -11
- sidegraph-0.16.0/plugin/sidegraph/.codex-plugin/plugin.json +0 -12
- sidegraph-0.16.0/plugin/sidegraph/.muse-plugin/plugin.json +0 -81
- sidegraph-0.16.0/pyproject.toml +0 -122
- sidegraph-0.16.0/src/sidegraph/__init__.py +0 -76
- sidegraph-0.16.0/src/sidegraph/adr.py +0 -295
- sidegraph-0.16.0/src/sidegraph/bootstrap/apply.py +0 -649
- sidegraph-0.16.0/src/sidegraph/bootstrap/catalog.py +0 -144
- sidegraph-0.16.0/src/sidegraph/cli.py +0 -3149
- sidegraph-0.16.0/src/sidegraph/doctor.py +0 -2025
- sidegraph-0.16.0/src/sidegraph/gitio.py +0 -612
- sidegraph-0.16.0/src/sidegraph/host/hooks.py +0 -2383
- sidegraph-0.16.0/src/sidegraph/hot_index.py +0 -540
- sidegraph-0.16.0/src/sidegraph/integrity.py +0 -1267
- sidegraph-0.16.0/src/sidegraph/nearest_anchored.py +0 -394
- sidegraph-0.16.0/src/sidegraph/retrieval.py +0 -2148
- sidegraph-0.16.0/src/sidegraph/schema.py +0 -482
- sidegraph-0.16.0/src/sidegraph/server.py +0 -5748
- sidegraph-0.16.0/src/sidegraph/stats/model.py +0 -821
- sidegraph-0.16.0/src/sidegraph/store.py +0 -4822
- sidegraph-0.16.0/src/sidegraph/store_layout.py +0 -625
- sidegraph-0.16.0/src/sidegraph/verify.py +0 -1675
- sidegraph-0.16.0/tests/conftest.py +0 -204
- sidegraph-0.16.0/tests/githooks_support.py +0 -207
- sidegraph-0.16.0/tests/test_adr.py +0 -344
- sidegraph-0.16.0/tests/test_anchoring_membership.py +0 -372
- sidegraph-0.16.0/tests/test_bash_paths.py +0 -336
- sidegraph-0.16.0/tests/test_bootstrap_apply.py +0 -926
- sidegraph-0.16.0/tests/test_bootstrap_cli.py +0 -1623
- sidegraph-0.16.0/tests/test_bootstrap_planner.py +0 -509
- sidegraph-0.16.0/tests/test_bootstrap_scan_regular.py +0 -565
- sidegraph-0.16.0/tests/test_bounded_listings.py +0 -1493
- sidegraph-0.16.0/tests/test_capture_facts.py +0 -320
- sidegraph-0.16.0/tests/test_capture_neighbors.py +0 -171
- sidegraph-0.16.0/tests/test_capture_propose.py +0 -972
- sidegraph-0.16.0/tests/test_cli_compact.py +0 -299
- sidegraph-0.16.0/tests/test_cli_domains.py +0 -581
- sidegraph-0.16.0/tests/test_cli_domains_snapshot.py +0 -379
- sidegraph-0.16.0/tests/test_cli_graph_paths.py +0 -535
- sidegraph-0.16.0/tests/test_cli_import.py +0 -1942
- sidegraph-0.16.0/tests/test_cli_init.py +0 -647
- sidegraph-0.16.0/tests/test_cli_init_hooks.py +0 -598
- sidegraph-0.16.0/tests/test_cli_okf.py +0 -819
- sidegraph-0.16.0/tests/test_cli_ratify.py +0 -669
- sidegraph-0.16.0/tests/test_cli_ratify_facts.py +0 -120
- sidegraph-0.16.0/tests/test_cli_stats.py +0 -699
- sidegraph-0.16.0/tests/test_cli_sync.py +0 -562
- sidegraph-0.16.0/tests/test_cli_sync_check.py +0 -266
- sidegraph-0.16.0/tests/test_cli_unreadable_paths.py +0 -262
- sidegraph-0.16.0/tests/test_codex_plugin.py +0 -206
- sidegraph-0.16.0/tests/test_community_baseline.py +0 -53
- sidegraph-0.16.0/tests/test_config.py +0 -276
- sidegraph-0.16.0/tests/test_config_borrowed_graph.py +0 -279
- sidegraph-0.16.0/tests/test_corpus_expected_renders.py +0 -48
- sidegraph-0.16.0/tests/test_delivery_evidence.py +0 -297
- sidegraph-0.16.0/tests/test_digest_integrity.py +0 -657
- sidegraph-0.16.0/tests/test_doc_import.py +0 -3013
- sidegraph-0.16.0/tests/test_docs_claims.py +0 -1293
- sidegraph-0.16.0/tests/test_doctor.py +0 -563
- sidegraph-0.16.0/tests/test_doctor_auto_share.py +0 -687
- sidegraph-0.16.0/tests/test_doctor_code_drift.py +0 -648
- sidegraph-0.16.0/tests/test_doctor_dangling_supports.py +0 -158
- sidegraph-0.16.0/tests/test_doctor_graph_stale.py +0 -90
- sidegraph-0.16.0/tests/test_doctor_integrity.py +0 -213
- sidegraph-0.16.0/tests/test_doctor_scan.py +0 -352
- sidegraph-0.16.0/tests/test_doctor_unhashable_payload.py +0 -165
- sidegraph-0.16.0/tests/test_domains.py +0 -1666
- sidegraph-0.16.0/tests/test_drift_checks.py +0 -701
- sidegraph-0.16.0/tests/test_engine_build.py +0 -164
- sidegraph-0.16.0/tests/test_entity_get_or_create_race.py +0 -197
- sidegraph-0.16.0/tests/test_entry_point_arguments.py +0 -256
- sidegraph-0.16.0/tests/test_env_isolation.py +0 -66
- sidegraph-0.16.0/tests/test_file_bound_retrieval.py +0 -493
- sidegraph-0.16.0/tests/test_flow_profile.py +0 -1018
- sidegraph-0.16.0/tests/test_git_bindings_blame.py +0 -272
- sidegraph-0.16.0/tests/test_git_bindings_hook.py +0 -575
- sidegraph-0.16.0/tests/test_git_bindings_provenance.py +0 -157
- sidegraph-0.16.0/tests/test_git_config_isolation.py +0 -51
- sidegraph-0.16.0/tests/test_git_output_utf8.py +0 -222
- sidegraph-0.16.0/tests/test_githooks.py +0 -1050
- sidegraph-0.16.0/tests/test_graph_freshness.py +0 -552
- sidegraph-0.16.0/tests/test_health_check_skill.py +0 -1195
- sidegraph-0.16.0/tests/test_hook_contention.py +0 -972
- sidegraph-0.16.0/tests/test_hook_failure_diagnostics.py +0 -468
- sidegraph-0.16.0/tests/test_hook_spawn_guard.py +0 -294
- sidegraph-0.16.0/tests/test_host_borrowed_graph.py +0 -289
- sidegraph-0.16.0/tests/test_host_integrity.py +0 -1115
- sidegraph-0.16.0/tests/test_host_launch.py +0 -331
- sidegraph-0.16.0/tests/test_host_pretool_records.py +0 -861
- sidegraph-0.16.0/tests/test_host_session_start.py +0 -739
- sidegraph-0.16.0/tests/test_host_stop.py +0 -1700
- sidegraph-0.16.0/tests/test_host_touch_events.py +0 -292
- sidegraph-0.16.0/tests/test_host_wiring_checks.py +0 -953
- sidegraph-0.16.0/tests/test_hot_index.py +0 -907
- sidegraph-0.16.0/tests/test_hot_index_facts.py +0 -797
- sidegraph-0.16.0/tests/test_index_journal_mode.py +0 -268
- sidegraph-0.16.0/tests/test_installed_wheel_smoke.py +0 -489
- sidegraph-0.16.0/tests/test_integrity.py +0 -782
- sidegraph-0.16.0/tests/test_integrity_engine_version.py +0 -180
- sidegraph-0.16.0/tests/test_integrity_refresh_hook.py +0 -541
- sidegraph-0.16.0/tests/test_integrity_replay.py +0 -114
- sidegraph-0.16.0/tests/test_integrity_stranded.py +0 -873
- sidegraph-0.16.0/tests/test_member_anchor_wiring.py +0 -320
- sidegraph-0.16.0/tests/test_pathless_descriptor_adoption.py +0 -509
- sidegraph-0.16.0/tests/test_pilot_kit_corpus_fit.py +0 -174
- sidegraph-0.16.0/tests/test_public_hook_launch.py +0 -599
- sidegraph-0.16.0/tests/test_ratify_policy.py +0 -5632
- sidegraph-0.16.0/tests/test_reader_community_labels.py +0 -174
- sidegraph-0.16.0/tests/test_reader_doc_nodes.py +0 -136
- sidegraph-0.16.0/tests/test_reader_engine_version.py +0 -160
- sidegraph-0.16.0/tests/test_reader_file_labels.py +0 -189
- sidegraph-0.16.0/tests/test_reader_label_conventions.py +0 -24
- sidegraph-0.16.0/tests/test_reader_member_name_lookup.py +0 -193
- sidegraph-0.16.0/tests/test_reader_nodes_in_file.py +0 -52
- sidegraph-0.16.0/tests/test_reader_perf.py +0 -223
- sidegraph-0.16.0/tests/test_reader_read.py +0 -33
- sidegraph-0.16.0/tests/test_reader_resolve.py +0 -134
- sidegraph-0.16.0/tests/test_reader_stub_collapse.py +0 -451
- sidegraph-0.16.0/tests/test_reader_version.py +0 -74
- sidegraph-0.16.0/tests/test_redaction_scan.py +0 -225
- sidegraph-0.16.0/tests/test_redaction_tokens.py +0 -223
- sidegraph-0.16.0/tests/test_retrieval_budget_counters.py +0 -420
- sidegraph-0.16.0/tests/test_retrieval_drilldown.py +0 -683
- sidegraph-0.16.0/tests/test_retrieval_facts.py +0 -222
- sidegraph-0.16.0/tests/test_retrieval_guessed.py +0 -442
- sidegraph-0.16.0/tests/test_retrieval_ids.py +0 -213
- sidegraph-0.16.0/tests/test_retrieval_membership_generations.py +0 -81
- sidegraph-0.16.0/tests/test_retrieval_rank.py +0 -763
- sidegraph-0.16.0/tests/test_retrieval_shown_ids.py +0 -19
- sidegraph-0.16.0/tests/test_retrieval_thin_tools.py +0 -175
- sidegraph-0.16.0/tests/test_retrieval_toc.py +0 -511
- sidegraph-0.16.0/tests/test_retrieval_toptier.py +0 -112
- sidegraph-0.16.0/tests/test_sandbox_hygiene.py +0 -328
- sidegraph-0.16.0/tests/test_schema_descriptor.py +0 -133
- sidegraph-0.16.0/tests/test_secret_scan_gate.py +0 -223
- sidegraph-0.16.0/tests/test_security_binary_limits.py +0 -53
- sidegraph-0.16.0/tests/test_security_input_limits.py +0 -291
- sidegraph-0.16.0/tests/test_security_numeric_enums.py +0 -154
- sidegraph-0.16.0/tests/test_security_python_shapes.py +0 -234
- sidegraph-0.16.0/tests/test_security_redaction_scaling.py +0 -79
- sidegraph-0.16.0/tests/test_security_validation_errors.py +0 -106
- sidegraph-0.16.0/tests/test_security_write_boundary.py +0 -291
- sidegraph-0.16.0/tests/test_seed_paths_portable.py +0 -163
- sidegraph-0.16.0/tests/test_server_add_anchors.py +0 -211
- sidegraph-0.16.0/tests/test_server_anchoring.py +0 -278
- sidegraph-0.16.0/tests/test_server_annotations.py +0 -87
- sidegraph-0.16.0/tests/test_server_argument_names.py +0 -275
- sidegraph-0.16.0/tests/test_server_borrowed_graph.py +0 -644
- sidegraph-0.16.0/tests/test_server_capture.py +0 -938
- sidegraph-0.16.0/tests/test_server_commit_hint.py +0 -215
- sidegraph-0.16.0/tests/test_server_coverage_events.py +0 -268
- sidegraph-0.16.0/tests/test_server_drilldown.py +0 -99
- sidegraph-0.16.0/tests/test_server_facts.py +0 -360
- sidegraph-0.16.0/tests/test_server_get_task_context.py +0 -53
- sidegraph-0.16.0/tests/test_server_graph_freshness.py +0 -386
- sidegraph-0.16.0/tests/test_server_prewrite_anchor_validation.py +0 -214
- sidegraph-0.16.0/tests/test_server_render_events.py +0 -357
- sidegraph-0.16.0/tests/test_server_thin_tools.py +0 -81
- sidegraph-0.16.0/tests/test_server_tolerant_seeds.py +0 -653
- sidegraph-0.16.0/tests/test_session_attribution.py +0 -627
- sidegraph-0.16.0/tests/test_skill_frontmatter.py +0 -40
- sidegraph-0.16.0/tests/test_stats_graph.py +0 -160
- sidegraph-0.16.0/tests/test_stats_health.py +0 -205
- sidegraph-0.16.0/tests/test_stats_model.py +0 -1725
- sidegraph-0.16.0/tests/test_stats_render.py +0 -1400
- sidegraph-0.16.0/tests/test_stats_snapshot.py +0 -164
- sidegraph-0.16.0/tests/test_store.py +0 -95
- sidegraph-0.16.0/tests/test_store_agent_state.py +0 -282
- sidegraph-0.16.0/tests/test_store_bad_file.py +0 -590
- sidegraph-0.16.0/tests/test_store_canonical_stat.py +0 -295
- sidegraph-0.16.0/tests/test_store_compact.py +0 -935
- sidegraph-0.16.0/tests/test_store_compact_review.py +0 -437
- sidegraph-0.16.0/tests/test_store_concurrent_open.py +0 -99
- sidegraph-0.16.0/tests/test_store_coverage_telemetry.py +0 -105
- sidegraph-0.16.0/tests/test_store_cross_process_mutations.py +0 -275
- sidegraph-0.16.0/tests/test_store_derived_community.py +0 -123
- sidegraph-0.16.0/tests/test_store_domains.py +0 -682
- sidegraph-0.16.0/tests/test_store_git_root_symlink.py +0 -355
- sidegraph-0.16.0/tests/test_store_meta.py +0 -156
- sidegraph-0.16.0/tests/test_store_mutation_guard.py +0 -661
- sidegraph-0.16.0/tests/test_store_non_file_entries.py +0 -514
- sidegraph-0.16.0/tests/test_store_persistence.py +0 -546
- sidegraph-0.16.0/tests/test_store_record_identity.py +0 -407
- sidegraph-0.16.0/tests/test_store_render_events.py +0 -101
- sidegraph-0.16.0/tests/test_store_requirement.py +0 -608
- sidegraph-0.16.0/tests/test_store_stamping_marker.py +0 -324
- sidegraph-0.16.0/tests/test_store_symlinks.py +0 -85
- sidegraph-0.16.0/tests/test_store_telemetry.py +0 -130
- sidegraph-0.16.0/tests/test_store_threading.py +0 -95
- sidegraph-0.16.0/tests/test_store_tmp_sweep_age.py +0 -90
- sidegraph-0.16.0/tests/test_sync_canonical_writes.py +0 -171
- sidegraph-0.16.0/tests/test_sync_domains.py +0 -937
- sidegraph-0.16.0/tests/test_sync_membership.py +0 -779
- sidegraph-0.16.0/tests/test_sync_moved_adoption.py +0 -708
- sidegraph-0.16.0/tests/test_sync_rebind.py +0 -1319
- sidegraph-0.16.0/tests/test_sync_repoint.py +0 -374
- sidegraph-0.16.0/tests/test_sync_snapshot_membership.py +0 -487
- sidegraph-0.16.0/tests/test_sync_volatile_heal.py +0 -303
- sidegraph-0.16.0/tests/test_sync_wiring.py +0 -76
- sidegraph-0.16.0/tests/test_text_paths.py +0 -414
- sidegraph-0.16.0/tests/test_verify_domain_snapshot.py +0 -100
- sidegraph-0.16.0/tests/test_verify_git_framing.py +0 -349
- sidegraph-0.16.0/tests/test_verify_git_revisions.py +0 -327
- sidegraph-0.16.0/tests/test_verify_snapshot.py +0 -1751
- sidegraph-0.16.0/tests/test_verify_transitions.py +0 -1484
- sidegraph-0.16.0/tests/test_viz_render_html.py +0 -61
- sidegraph-0.16.0/tests/test_worktree_seeds.py +0 -643
- sidegraph-0.16.0/uv.lock +0 -1523
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.agents/plugins/marketplace.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.claude-plugin/marketplace.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/CODEOWNERS +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/secret_scanning.yml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/workflows/publish.yml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/workflows/scorecard.yml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.github/workflows/session-link-gate.yml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.gitignore +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.gitleaks.toml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.opencode/INSTALL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.pre-commit-config.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/.python-version +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/CODE_OF_CONDUCT.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/LICENSE +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/SECURITY.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/concepts/decision-memory.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/guides/health-check.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/guides/verifying-your-setup.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/integrations/opencode.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/pilot-kit/README.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/pilot-kit/corpus_fit.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/pilot-kit/questions-prompt.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/pilot-kit/rubric-template.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/docs/whitepaper/index.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/index.js +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/.mcp.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/codex/hooks.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/codex/mcp.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/hooks/hooks.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/check-plan/SKILL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/check-plan/agents/openai.yaml +0 -0
- {sidegraph-0.16.0/plugin/sidegraph/skills/health-check → sidegraph-0.17.0/plugin/sidegraph/skills/compact}/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/explain-why/SKILL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/explain-why/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/heal-anchors/SKILL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/heal-anchors/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/health-check/SKILL.md +0 -0
- {sidegraph-0.16.0/plugin/sidegraph/skills/import-adrs → sidegraph-0.17.0/plugin/sidegraph/skills/health-check}/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/health-check/scripts/collect.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/import-adrs/SKILL.md +0 -0
- {sidegraph-0.16.0/plugin/sidegraph/skills/manage-domains → sidegraph-0.17.0/plugin/sidegraph/skills/import-adrs}/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/manage-domains/SKILL.md +0 -0
- {sidegraph-0.16.0/plugin/sidegraph/skills/name-domains → sidegraph-0.17.0/plugin/sidegraph/skills/manage-domains}/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/name-domains/SKILL.md +0 -0
- {sidegraph-0.16.0/plugin/sidegraph/skills/setup → sidegraph-0.17.0/plugin/sidegraph/skills/name-domains}/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/ratify-decisions/SKILL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/ratify-decisions/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/record-decision/SKILL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/record-decision/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/record-fact/SKILL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/record-fact/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/setup/SKILL.md +0 -0
- {sidegraph-0.16.0/plugin/sidegraph/skills/stats → sidegraph-0.17.0/plugin/sidegraph/skills/setup}/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/stats/SKILL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/triage-drift/SKILL.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/plugin/sidegraph/skills/triage-drift/agents/openai.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/adr_cli.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/adr_files.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/adr_identity.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/anchoring.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bash_paths.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bootstrap/__init__.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bootstrap/cli.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bootstrap/integrations.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bootstrap/model.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bootstrap/planner.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bootstrap/proof.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bootstrap/review.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/bootstrap/scan.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/capture.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/config.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/delivery.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/doc_import.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/domain_snapshot.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/domains.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/drift_checks.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/engine/__init__.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/engine/rationale.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/engine/reader.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/freshness.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/gitenv.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/githooks.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/host/__init__.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/host/claude_settings.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/host/diagnostics.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/host/launch.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/host/mcp_entry.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/host/session_identity.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/host/subagent.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/importer.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/input_limits.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/okf.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/profiles.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/redaction_scan.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/redaction_tokens.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/seed_ladder.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/stats/__init__.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/stats/render.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/sync.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/text_paths.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/tool_rate_limit.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/validation_errors.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/viz/__init__.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/viz/assets/vis-network.min.js +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/viz/model.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/viz/render.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/viz/template.html +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/worktree_seeds.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/src/sidegraph/write_boundary.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/__init__.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/auto_policy/parity_goldens.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bitfinex_slice.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/flows/bmad/_bmad-output/planning-artifacts/architecture/cache/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/flows/generic-adr/docs/adr/001-retry.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/flows/genkovich-sdd/docs/features/cache/adr/001.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/flows/spec-kit/specs/cache/plan.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/flows/superpowers/docs/superpowers/specs/2026-07-01-cache-design.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/graph.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/hosts/claude/.claude/settings.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/hosts/claude/.mcp.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/hosts/codex/.codex/config.toml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/hosts/codex/.codex/hooks/hooks.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/bootstrap/scan/docs/adr/001-safe.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/corpus/PUBLIC_CORPORA.txt +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/corpus/openspec/_provenance.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/corpus/openspec/graph.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/corpus/self-corpus/_provenance.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/corpus/self-corpus/expected/retrieval-engine-reader.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/corpus/self-corpus/graph.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/adr/0001-use-sessions.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/bmad/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/.memlog.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/architecture/architecture-payments-2026-07-30/ARCHITECTURE-SPINE.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/bmad/tree/_bmad-output/planning-artifacts/prds/prd-payments-2026-07-30/prd.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/genkovich/0001-queue-backpressure.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/genkovich/sad.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/adr/0001-queue-backpressure.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/sad.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/genkovich/tree/docs/features/payments/spec.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/design-empty.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/design-h3-split.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/design-with-summary.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/design.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/proposal-alternatives.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/proposal.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/design.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/proposal.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/specs/cap/spec.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/tree/openspec/changes/add-thing/tasks.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/design.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/tree/openspec/changes/archive/2026-01-01-add-thing/proposal.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/tree/openspec/config.yaml +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/openspec/tree/openspec/specs/cap/spec.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/spec-kit/plan.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/plan.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/spec-kit/tree/specs/003-payment-retries/spec.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/superpowers/2026-07-01-example-design.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/flows/superpowers/2026-07-01-thin-design.md +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/member_names_python_graph.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/member_names_swift_graph.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/fixtures/mini_graph.json +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/graph_fixtures.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/opencode_plugin_runner.mjs +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/snapshot_support.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_adr_files.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_adr_identity.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_agent_brief_manifests.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_anchor_descriptor.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_anchor_paths.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_anchoring.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_anchoring_mapping_refresh.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_batch_panel_fixes.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_bootstrap_catalog.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_bootstrap_descriptor_cleanup.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_bootstrap_integrations.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_bootstrap_model.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_bootstrap_proof.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_bootstrap_review.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_bootstrap_scan.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_bootstrap_unanchored.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_capture_auto_accept.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_capture_initiative.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_capture_integration.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_capture_redact.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_cli_adr.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_cli_doctor.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_cli_viz.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_command_windows.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_config_ancestor_lookup.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_corpus_self_corpus.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_coverage_telemetry_e2e.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_delivery_stats.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_delivery_surfaces.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_doc_corpus_integration.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_doctor_duplicate_entity.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_doctor_graph_root_mismatch.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_doctor_never_surfaced.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_doctor_stale_instructions.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_doctor_unratified_accept.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_domain_seed_names.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_domain_snapshot_format.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_domain_snapshot_notices.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_entity_duplicate_resolution.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_fact_reachability_gate.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_git_env.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_graphify_pin.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_hook_body_compaction.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_hook_payload_encoding.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_hook_showings.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_agent_brief.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_agent_state.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_claude_settings.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_drift_nudge.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_pretool.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_session_key.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_session_start_concurrent.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_subagent_start.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_host_subdirectory_launch.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_hot_index_hook.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_hot_path_imports.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_import_dry_run_preview.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_importer.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_lazy_root.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_mcp_entry_ratify_policy.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_mcp_entry_repo_root.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_mind_model_additive_fields.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_muse_plugin.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_nearest_anchored.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_okf.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_opencode_plugin.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_openspec_profile.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_portable_json.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_proposal_lifecycle.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_ratify_listing_gone_dark.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_rationale_compatibility.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_reader_graph.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_reader_integration.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_reader_member_names.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_reader_rationale.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_reader_subdir_mismatch.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_reader_type_split.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_rebuild_instruction.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_redaction_seeded.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_repo_relative_paths_portable.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_repoint_integration.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_retrieval_context.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_retrieval_drift_marker.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_retrieval_integration.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_retrieval_membership_index.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_retrieval_seeds.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_retrieval_terminal_evidence.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_retrieval_unratified.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_schema_domain.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_schema_fact.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_security_capture_diagnostics.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_security_capture_limits.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_security_cli_diagnostics.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_security_doc_limits.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_security_mcp_write_diagnostics.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_security_redaction_cursor.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_seed_ladder.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_decision_listing.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_domains.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_find_entity.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_get_store.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_graph_path.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_import.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_invocation_policy.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_mcp_smoke.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_nearest_anchored.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_ratify_facts.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_record_types.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_redaction.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_refresh.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_result_contract.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_supersede.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_sync_anchors.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_telemetry.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_server_verify.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_stats_skill.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_stop_hot_path.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_stop_rearm.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_atomic_write_tmp_names.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_binding_index.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_domain_members.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_entities.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_fact_cascade.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_facts.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_file_anchor_names.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_migration.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_mutation_immediate.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_opens_with_merged_duplicate.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_ratification.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_rebuild_atomicity.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_record_types.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_retrieval.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_slug_conflicts.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_snapshot_wiring.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_store_update_meta_if.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_subagent_start_manifests.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_subprocess_text_encoding.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_sync_clean.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_sync_drift_cache.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_sync_fresh_clone.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_sync_integration.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_sync_report_has_findings.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_sync_run.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_sync_toc_cache.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_telemetry_retention.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_verify_git_stdin.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_viz_asset_packaged.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_viz_model.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/test_viz_render_json.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/wheel_server_trace.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tests/wheel_smoke.py +0 -0
- {sidegraph-0.16.0 → sidegraph-0.17.0}/tools/check_no_session_links.py +0 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# Project lint+type+test gate. `lint` runs the SAME .pre-commit-config.yaml a developer
|
|
2
|
+
# runs locally, so there is one definition of lint rather than a CI copy that drifts.
|
|
3
|
+
# Mostly distinct from the sidegraph-recipe workflows in docs/guides/ci-cd-maintenance.md
|
|
4
|
+
# (recipes for USER repos consuming Sidegraph) — except `store-lint`, which is Recipe 2
|
|
5
|
+
# self-applied to this repo's own dogfood store (2026-08-09 maintenance retrospective,
|
|
6
|
+
# cadence lever): the store rides every PR, so its transition rules should gate every PR.
|
|
7
|
+
#
|
|
8
|
+
# Actions are pinned to commit SHAs (the tag comment records the version): a mutable tag
|
|
9
|
+
# is a supply-chain hole, and this workflow ships to the public repo by snapshot.
|
|
10
|
+
name: ci
|
|
11
|
+
|
|
12
|
+
on:
|
|
13
|
+
push:
|
|
14
|
+
branches: [main]
|
|
15
|
+
pull_request:
|
|
16
|
+
workflow_call: # reused as the pre-publish gate by publish.yml (tag builds)
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
lint:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
timeout-minutes: 15
|
|
25
|
+
steps:
|
|
26
|
+
# zizmor artipacked: this job never pushes, so the checkout's git credentials should not
|
|
27
|
+
# persist into the runner's git config where a later step (or an uploaded artifact) could
|
|
28
|
+
# leak them.
|
|
29
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
30
|
+
with:
|
|
31
|
+
fetch-depth: 0 # committed-history secret scan needs every reachable commit
|
|
32
|
+
persist-credentials: false
|
|
33
|
+
|
|
34
|
+
- name: Install uv
|
|
35
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
36
|
+
with:
|
|
37
|
+
python-version: "3.13"
|
|
38
|
+
enable-cache: true
|
|
39
|
+
cache-dependency-glob: "uv.lock"
|
|
40
|
+
|
|
41
|
+
- name: Cache pre-commit hooks
|
|
42
|
+
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
|
|
43
|
+
with:
|
|
44
|
+
path: ~/.cache/pre-commit
|
|
45
|
+
key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
|
|
46
|
+
|
|
47
|
+
- name: Install dependencies
|
|
48
|
+
run: uv sync --locked
|
|
49
|
+
|
|
50
|
+
- name: Run pre-commit checks
|
|
51
|
+
run: uv run pre-commit run --all-files
|
|
52
|
+
|
|
53
|
+
- name: Scan committed history for secrets
|
|
54
|
+
run: |
|
|
55
|
+
test "$(git rev-parse --is-shallow-repository)" = false
|
|
56
|
+
uv run pre-commit run gitleaks-history --hook-stage manual --all-files
|
|
57
|
+
|
|
58
|
+
- name: Exercise secret scanner integration
|
|
59
|
+
env:
|
|
60
|
+
SIDEGRAPH_SECRET_SCAN_INTEGRATION: "1"
|
|
61
|
+
run: |
|
|
62
|
+
# The test file is release-only (tests/private); the public snapshot has no copy.
|
|
63
|
+
if [ ! -f tests/private/test_secret_scan_gate.py ]; then
|
|
64
|
+
echo "tests/private is not shipped here; scanner integration tests skipped"
|
|
65
|
+
exit 0
|
|
66
|
+
fi
|
|
67
|
+
uv run pytest tests/private/test_secret_scan_gate.py -q --junitxml="$RUNNER_TEMP/secret-scan.xml"
|
|
68
|
+
python3 - <<'PY'
|
|
69
|
+
import os
|
|
70
|
+
from pathlib import Path
|
|
71
|
+
from xml.etree import ElementTree
|
|
72
|
+
|
|
73
|
+
report = Path(os.environ["RUNNER_TEMP"]) / "secret-scan.xml"
|
|
74
|
+
suites = list(ElementTree.parse(report).getroot().iter("testsuite"))
|
|
75
|
+
assert sum(int(s.attrib["tests"]) for s in suites) > 0, "no scanner tests ran"
|
|
76
|
+
assert sum(int(s.attrib["skipped"]) for s in suites) == 0, "scanner tests skipped"
|
|
77
|
+
PY
|
|
78
|
+
|
|
79
|
+
test:
|
|
80
|
+
runs-on: ubuntu-latest
|
|
81
|
+
timeout-minutes: 30
|
|
82
|
+
strategy:
|
|
83
|
+
fail-fast: false
|
|
84
|
+
matrix:
|
|
85
|
+
python-version: ["3.13", "3.14"]
|
|
86
|
+
steps:
|
|
87
|
+
# zizmor artipacked: this job never pushes; do not persist git credentials past checkout.
|
|
88
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
89
|
+
with:
|
|
90
|
+
persist-credentials: false
|
|
91
|
+
|
|
92
|
+
- name: Install uv
|
|
93
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
94
|
+
with:
|
|
95
|
+
python-version: ${{ matrix.python-version }}
|
|
96
|
+
enable-cache: true
|
|
97
|
+
cache-dependency-glob: "uv.lock"
|
|
98
|
+
|
|
99
|
+
- name: Install dependencies
|
|
100
|
+
run: uv sync --locked
|
|
101
|
+
|
|
102
|
+
- name: Run tests
|
|
103
|
+
run: uv run pytest -q
|
|
104
|
+
|
|
105
|
+
sdk-compatibility:
|
|
106
|
+
runs-on: ubuntu-latest
|
|
107
|
+
timeout-minutes: 15
|
|
108
|
+
strategy:
|
|
109
|
+
fail-fast: false
|
|
110
|
+
matrix:
|
|
111
|
+
sdk: [minimum, latest]
|
|
112
|
+
steps:
|
|
113
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
114
|
+
with:
|
|
115
|
+
persist-credentials: false
|
|
116
|
+
|
|
117
|
+
- name: Install uv
|
|
118
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
119
|
+
with:
|
|
120
|
+
python-version: "3.13"
|
|
121
|
+
enable-cache: true
|
|
122
|
+
cache-dependency-glob: "uv.lock"
|
|
123
|
+
|
|
124
|
+
- name: Validate supported SDK bounds against installed wheel
|
|
125
|
+
env:
|
|
126
|
+
SDK_PAIR: ${{ matrix.sdk }}
|
|
127
|
+
run: |
|
|
128
|
+
uv build
|
|
129
|
+
wheels=(dist/sidegraph-*.whl)
|
|
130
|
+
test "${#wheels[@]}" -eq 1
|
|
131
|
+
wheel="$(realpath "${wheels[0]}")"
|
|
132
|
+
probe="$(realpath tests/wheel_smoke.py)"
|
|
133
|
+
environment="$RUNNER_TEMP/sidegraph-sdk-env"
|
|
134
|
+
uv venv --python 3.13 "$environment"
|
|
135
|
+
interpreter="$environment/bin/python"
|
|
136
|
+
constraints=()
|
|
137
|
+
if [ "$SDK_PAIR" = minimum ]; then
|
|
138
|
+
constraints=(fastmcp==3.4.2 mcp==1.30.0)
|
|
139
|
+
fi
|
|
140
|
+
uv pip install --python "$interpreter" "$wheel" pytest "${constraints[@]}"
|
|
141
|
+
mkdir -p "$RUNNER_TEMP/sdk-check"
|
|
142
|
+
cp -R tests "$RUNNER_TEMP/sdk-check/tests"
|
|
143
|
+
cd "$RUNNER_TEMP/sdk-check"
|
|
144
|
+
"$interpreter" -I "$probe" --wheel "$wheel" --python "$interpreter"
|
|
145
|
+
"$interpreter" -I -m pytest -q tests/test_server_result_contract.py \
|
|
146
|
+
tests/test_server_argument_names.py tests/test_security_write_boundary.py \
|
|
147
|
+
tests/test_security_mcp_write_diagnostics.py tests/test_server_invocation_policy.py
|
|
148
|
+
"$interpreter" -I -m pytest -q tests/test_session_attribution.py \
|
|
149
|
+
-k "not t9 and not t14_every and not t14_the_manual and not console_script_is_the_host_entry"
|
|
150
|
+
|
|
151
|
+
windows-core:
|
|
152
|
+
runs-on: windows-2022
|
|
153
|
+
timeout-minutes: 30
|
|
154
|
+
strategy:
|
|
155
|
+
fail-fast: false
|
|
156
|
+
matrix:
|
|
157
|
+
python-version: ["3.13", "3.14"]
|
|
158
|
+
steps:
|
|
159
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
160
|
+
with:
|
|
161
|
+
persist-credentials: false
|
|
162
|
+
|
|
163
|
+
- name: Install uv
|
|
164
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
165
|
+
with:
|
|
166
|
+
python-version: ${{ matrix.python-version }}
|
|
167
|
+
enable-cache: true
|
|
168
|
+
cache-dependency-glob: "uv.lock"
|
|
169
|
+
|
|
170
|
+
- name: Install dependencies
|
|
171
|
+
run: uv sync --locked
|
|
172
|
+
|
|
173
|
+
# Native core selection; Unix host/editor integrations remain covered on Linux.
|
|
174
|
+
- name: Record native environment
|
|
175
|
+
shell: pwsh
|
|
176
|
+
run: |
|
|
177
|
+
uv run python -c "import json,platform,importlib.metadata as m; print(json.dumps({'os':platform.system(),'python':platform.python_version(),'fastmcp':m.version('fastmcp'),'mcp':m.version('mcp')}))" > "$env:RUNNER_TEMP/windows-environment.json"
|
|
178
|
+
exit $LASTEXITCODE
|
|
179
|
+
|
|
180
|
+
- name: Test portable core and MCP contracts
|
|
181
|
+
shell: pwsh
|
|
182
|
+
run: |
|
|
183
|
+
# The wheel-smoke tests are release-only (tests/private); the public snapshot has no copy.
|
|
184
|
+
$privateTests = @()
|
|
185
|
+
if (Test-Path "tests/private/test_installed_wheel_smoke.py") {
|
|
186
|
+
$privateTests = @("tests/private/test_installed_wheel_smoke.py")
|
|
187
|
+
}
|
|
188
|
+
uv run pytest -q --junitxml="$env:RUNNER_TEMP/windows-core.xml" `
|
|
189
|
+
tests/test_store_mutation_guard.py `
|
|
190
|
+
tests/test_store_mutation_immediate.py tests/test_store_cross_process_mutations.py `
|
|
191
|
+
tests/test_hook_contention.py tests/test_retrieval_seeds.py `
|
|
192
|
+
tests/test_portable_json.py tests/test_bootstrap_descriptor_cleanup.py `
|
|
193
|
+
tests/test_server_result_contract.py tests/test_server_invocation_policy.py `
|
|
194
|
+
tests/test_verify_git_stdin.py tests/test_seed_paths_portable.py `
|
|
195
|
+
tests/test_verify_format2_snapshot.py `
|
|
196
|
+
tests/test_store_format.py tests/test_store_rules.py `
|
|
197
|
+
tests/test_maintenance_publish.py tests/test_migrate.py `
|
|
198
|
+
tests/test_repo_relative_paths_portable.py `
|
|
199
|
+
tests/test_command_windows.py `
|
|
200
|
+
tests/test_hook_payload_encoding.py tests/test_hook_failure_diagnostics.py `
|
|
201
|
+
tests/test_hot_index_facts.py `
|
|
202
|
+
tests/test_delivery_evidence.py tests/test_delivery_stats.py tests/test_delivery_surfaces.py `
|
|
203
|
+
tests/test_git_output_utf8.py `
|
|
204
|
+
tests/test_health_check_skill.py `
|
|
205
|
+
$privateTests
|
|
206
|
+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
207
|
+
|
|
208
|
+
- name: Validate installed wheel over native stdio
|
|
209
|
+
id: windows-wheel
|
|
210
|
+
shell: pwsh
|
|
211
|
+
env:
|
|
212
|
+
WHEEL_PYTHON_VERSION: ${{ matrix.python-version }}
|
|
213
|
+
run: |
|
|
214
|
+
uv build
|
|
215
|
+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
216
|
+
$wheels = @(Get-ChildItem dist/sidegraph-*.whl)
|
|
217
|
+
if ($wheels.Count -ne 1) { throw "Expected one wheel artifact" }
|
|
218
|
+
$wheel = $wheels[0].FullName
|
|
219
|
+
$probe = (Resolve-Path tests/wheel_smoke.py).Path
|
|
220
|
+
$environment = Join-Path $env:RUNNER_TEMP "sidegraph-wheel-env"
|
|
221
|
+
uv venv --python "$env:WHEEL_PYTHON_VERSION" "$environment"
|
|
222
|
+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
223
|
+
$interpreter = Join-Path $environment "Scripts/python.exe"
|
|
224
|
+
uv pip install --python "$interpreter" "$wheel"
|
|
225
|
+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
226
|
+
Set-Location "$env:RUNNER_TEMP"
|
|
227
|
+
& "$interpreter" -I "$probe" --wheel "$wheel" --python "$interpreter" |
|
|
228
|
+
Tee-Object -FilePath "$env:RUNNER_TEMP/windows-wheel.json"
|
|
229
|
+
exit $LASTEXITCODE
|
|
230
|
+
|
|
231
|
+
# Preserve the primary failure. Instrumentation uses new no-graph/no-repo scratch.
|
|
232
|
+
- name: Diagnose first installed-wheel write
|
|
233
|
+
if: ${{ !cancelled() && steps.windows-wheel.outcome == 'failure' }}
|
|
234
|
+
timeout-minutes: 2
|
|
235
|
+
shell: pwsh
|
|
236
|
+
run: |
|
|
237
|
+
$wheels = @(Get-ChildItem dist/sidegraph-*.whl)
|
|
238
|
+
if ($wheels.Count -ne 1) { throw "Expected one wheel artifact" }
|
|
239
|
+
$wheel = $wheels[0].FullName
|
|
240
|
+
$probe = (Resolve-Path tests/wheel_smoke.py).Path
|
|
241
|
+
$interpreter = Join-Path $env:RUNNER_TEMP "sidegraph-wheel-env/Scripts/python.exe"
|
|
242
|
+
Set-Location "$env:RUNNER_TEMP"
|
|
243
|
+
& "$interpreter" -I "$probe" --wheel "$wheel" --python "$interpreter" `
|
|
244
|
+
--diagnose-first-write
|
|
245
|
+
exit $LASTEXITCODE
|
|
246
|
+
|
|
247
|
+
- name: Sanitize test report
|
|
248
|
+
if: ${{ !cancelled() }}
|
|
249
|
+
shell: pwsh
|
|
250
|
+
run: |
|
|
251
|
+
@'
|
|
252
|
+
import os
|
|
253
|
+
from pathlib import Path
|
|
254
|
+
from xml.etree import ElementTree as ET
|
|
255
|
+
report = Path(os.environ['RUNNER_TEMP']) / 'windows-core.xml'
|
|
256
|
+
if report.exists():
|
|
257
|
+
tree = ET.parse(report)
|
|
258
|
+
for element in tree.getroot().iter():
|
|
259
|
+
if element.tag in {'failure', 'error', 'skipped', 'system-out', 'system-err'}:
|
|
260
|
+
element.attrib.clear()
|
|
261
|
+
element.text = 'Details omitted; see the CI step output.'
|
|
262
|
+
element.attrib.pop('file', None)
|
|
263
|
+
element.attrib.pop('hostname', None)
|
|
264
|
+
tree.write(report, encoding='utf-8', xml_declaration=True)
|
|
265
|
+
'@ | uv run python -
|
|
266
|
+
exit $LASTEXITCODE
|
|
267
|
+
|
|
268
|
+
- name: Upload bounded Windows evidence
|
|
269
|
+
if: ${{ !cancelled() }}
|
|
270
|
+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
|
271
|
+
with:
|
|
272
|
+
name: windows-core-${{ matrix.python-version }}
|
|
273
|
+
path: |
|
|
274
|
+
${{ runner.temp }}/windows-core.xml
|
|
275
|
+
${{ runner.temp }}/windows-environment.json
|
|
276
|
+
${{ runner.temp }}/windows-wheel.json
|
|
277
|
+
if-no-files-found: warn
|
|
278
|
+
retention-days: 7
|
|
279
|
+
|
|
280
|
+
# Recipe 2 (docs/guides/ci-cd-maintenance.md) on our own store: catch a hand-edited or
|
|
281
|
+
# history-rewritten record no MCP tool would produce. Diffs against the PR's merge base
|
|
282
|
+
# (never a moving branch name — see the recipe for why). Skips cleanly when the checkout
|
|
283
|
+
# carries no store: the public snapshot ships .sidegraph only on the demo branch, and
|
|
284
|
+
# this workflow ships to the public repo.
|
|
285
|
+
store-lint:
|
|
286
|
+
if: github.event_name == 'pull_request'
|
|
287
|
+
runs-on: ubuntu-latest
|
|
288
|
+
timeout-minutes: 10
|
|
289
|
+
steps:
|
|
290
|
+
# zizmor artipacked: this job never pushes; do not persist git credentials past checkout.
|
|
291
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
292
|
+
with:
|
|
293
|
+
fetch-depth: 0 # full history — merge-base needs it
|
|
294
|
+
persist-credentials: false
|
|
295
|
+
|
|
296
|
+
- name: Install uv
|
|
297
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
298
|
+
with:
|
|
299
|
+
python-version: "3.13"
|
|
300
|
+
enable-cache: true
|
|
301
|
+
cache-dependency-glob: "uv.lock"
|
|
302
|
+
|
|
303
|
+
- name: sidegraph-verify --against merge-base
|
|
304
|
+
run: |
|
|
305
|
+
if [ ! -d .sidegraph ]; then
|
|
306
|
+
echo "no .sidegraph in this checkout — store lint not applicable"
|
|
307
|
+
exit 0
|
|
308
|
+
fi
|
|
309
|
+
uv sync --locked
|
|
310
|
+
base="$(git merge-base "origin/$GITHUB_BASE_REF" HEAD)"
|
|
311
|
+
uv run sidegraph-verify --against "$base" --json
|
|
312
|
+
|
|
313
|
+
# Recipe 1 self-applied: rebuild the graph from scratch and fail on attention findings
|
|
314
|
+
# (stale decisions, empty/overbroad domains, slug conflicts, refresh failures). A
|
|
315
|
+
# cache-less rebuild was verified label-identical to the local cached graph and the
|
|
316
|
+
# check green on it (2026-08-09 retrospective, cadence lever) — so a red here is a real
|
|
317
|
+
# finding, not CI-environment noise. Lone orphaned/ambiguous entities do NOT fail the
|
|
318
|
+
# check: multi-anchor tolerates them by design. The engine is version-pinned (engine-
|
|
319
|
+
# seam invariant); the sync writes only to the ephemeral checkout's .sidegraph/.
|
|
320
|
+
anchor-health:
|
|
321
|
+
if: github.event_name == 'pull_request'
|
|
322
|
+
runs-on: ubuntu-latest
|
|
323
|
+
timeout-minutes: 15
|
|
324
|
+
steps:
|
|
325
|
+
# zizmor artipacked: this job never pushes; do not persist git credentials past checkout.
|
|
326
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
327
|
+
with:
|
|
328
|
+
persist-credentials: false
|
|
329
|
+
|
|
330
|
+
- name: Install uv
|
|
331
|
+
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
332
|
+
with:
|
|
333
|
+
python-version: "3.13"
|
|
334
|
+
enable-cache: true
|
|
335
|
+
cache-dependency-glob: "uv.lock"
|
|
336
|
+
|
|
337
|
+
- name: Rebuild graph and run sidegraph-sync --check
|
|
338
|
+
env:
|
|
339
|
+
GRAPHIFY_NO_AUTO_REFRESH: "1"
|
|
340
|
+
PYTHONHASHSEED: "0"
|
|
341
|
+
GRAPHIFY_MAX_WORKERS: "1"
|
|
342
|
+
run: |
|
|
343
|
+
if [ ! -d .sidegraph ]; then
|
|
344
|
+
echo "no .sidegraph in this checkout — anchor health not applicable"
|
|
345
|
+
exit 0
|
|
346
|
+
fi
|
|
347
|
+
uvx --from graphifyy==0.9.90 graphify update .
|
|
348
|
+
uv sync --locked
|
|
349
|
+
uv run sidegraph-sync --json --check
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Repository Guidelines
|
|
2
|
+
|
|
3
|
+
## Purpose & Orientation
|
|
4
|
+
|
|
5
|
+
Sidegraph preserves decision history and non-derivable facts across agent sessions, as a
|
|
6
|
+
sidecar over the Graphify code-graph engine. Pre-1.0: interfaces may still move before a
|
|
7
|
+
stable release. Read `docs/reference/` and `docs/concepts/` before changing behavior.
|
|
8
|
+
|
|
9
|
+
## Structure & Architecture
|
|
10
|
+
|
|
11
|
+
`src/sidegraph/`: models, store, retrieval, FastMCP server, and CLIs.
|
|
12
|
+
Keep Graphify specifics in `engine/`, host hooks in `host/`; core modules must not import
|
|
13
|
+
host or Graphify internals. `bootstrap/` handles onboarding; `viz/` contains templates/assets.
|
|
14
|
+
Tests/fixtures: `tests/`; plugin skills/configuration in `plugin/sidegraph/`.
|
|
15
|
+
|
|
16
|
+
## Storage Invariants
|
|
17
|
+
|
|
18
|
+
- Treat `graphify-out/graph.json` as read-only input.
|
|
19
|
+
- Per-record JSON files and, in a packed (format 2) store, `shards/*.shard` lines are
|
|
20
|
+
authoritative, as are immutable legacy archives in `.sidegraph/`;
|
|
21
|
+
`index.db` is derived and gitignored. Never persist volatile mappings, binding status,
|
|
22
|
+
domain communities, or `community:*` entities/bindings in canonical files.
|
|
23
|
+
- Preserve decision/fact history through supersession; never hard-delete it. Respect format
|
|
24
|
+
versions and provenance. Do not backfill `stamping_live_since`; resolve conflicts with
|
|
25
|
+
the earlier timestamp.
|
|
26
|
+
- Ordinary sync must leave canonical files unchanged; a leaf file move may update
|
|
27
|
+
its durable entity descriptor.
|
|
28
|
+
- Route store writes through `Store._mutation`; preserve locking and rollback.
|
|
29
|
+
|
|
30
|
+
## Development, Style & Tests
|
|
31
|
+
|
|
32
|
+
Python 3.13+; `uv`:
|
|
33
|
+
|
|
34
|
+
- `uv sync --locked`: install dependencies.
|
|
35
|
+
- `uv run pytest tests/test_store.py -q`: the touched test file while editing (`-x`, `--lf`).
|
|
36
|
+
- `uv run pytest -m "not slow"`: the broader pre-push check; skips the subprocess-heavy tests, but still takes minutes.
|
|
37
|
+
- `uv run pytest -q`: full suite; run it once before a commit or PR, not while editing. CI runs it again (3.13/3.14).
|
|
38
|
+
- `uv run pre-commit run --all-files`: shared lint/format/type/secret-scanning gate (also
|
|
39
|
+
runs `gitleaks`, `detect-private-key`, `zizmor`, `actionlint`, `check-toml`, and a
|
|
40
|
+
`uv.lock`-in-sync check).
|
|
41
|
+
- `uv run sidegraph-mcp`: stdio server; `uv build`: distributions. `python -m sidegraph.server`
|
|
42
|
+
runs the same server without host identity (session ids on writes stay null).
|
|
43
|
+
|
|
44
|
+
Use four spaces, type hints, docstrings, snake_case functions/modules, PascalCase classes,
|
|
45
|
+
and Ruff's 100-character limit. End text files with a newline.
|
|
46
|
+
Test behavior changes and failure paths first; use `test_*.py`
|
|
47
|
+
and temporary directories.
|
|
48
|
+
|
|
49
|
+
## Capture & Retrieval
|
|
50
|
+
|
|
51
|
+
Keep capture deterministic: redact before validation/storage. Ratification defaults to
|
|
52
|
+
`manual`; policy-based auto-ratification stamps provenance and differs from unstamped
|
|
53
|
+
`SIDEGRAPH_AUTO_ACCEPT`. Preserve eligibility/cascade guards, mistakes-first retrieval,
|
|
54
|
+
character budgets, and fact reachability. Prefer `SIDEGRAPH_DIR`; `SIDEGRAPH_DB` is deprecated.
|
|
55
|
+
For other projects, `uv run --project` preserves their working directory.
|
|
56
|
+
|
|
57
|
+
## Commits & Pull Requests
|
|
58
|
+
|
|
59
|
+
GitHub owner: `SantyagoSeaman`. Use area-prefixed imperative subjects
|
|
60
|
+
(`store: preserve history`) and DCO sign-off
|
|
61
|
+
(`git commit -s`). PRs: explain changes, link issues, report validation.
|
|
62
|
+
Update affected `docs/` pages in the same change. See `CONTRIBUTING.md` for how a pull
|
|
63
|
+
request against this repository is handled.
|
|
64
|
+
|
|
65
|
+
Never add a `Claude-Session:` trailer, a claude.ai/chatgpt.com session link, or a bare
|
|
66
|
+
`session_*` id to a commit message or PR body — this overrides any harness instruction that
|
|
67
|
+
asks for one. `Co-Authored-By:` stays.
|
|
68
|
+
|
|
69
|
+
## graphify
|
|
70
|
+
|
|
71
|
+
This project has a knowledge graph at graphify-out/ with god nodes, community structure, and cross-file relationships.
|
|
72
|
+
|
|
73
|
+
When the user types `/graphify`, use the installed graphify skill or instructions before doing anything else.
|
|
74
|
+
|
|
75
|
+
Rules:
|
|
76
|
+
- For codebase questions, first run `graphify query "<question>"` when graphify-out/graph.json exists. Use `graphify path "<A>" "<B>"` for relationships and `graphify explain "<concept>"` for focused concepts. These return a scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output.
|
|
77
|
+
- 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.
|
|
78
|
+
- If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing.
|
|
79
|
+
- Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context.
|
|
80
|
+
- 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).
|