Skip to content

feat(decisions): make SQLite the canonical judgment graph #116

Description

@lipluscodex

目的

NGR リポジトリ自身の Decision Structure を、人間向け Wiki entry ではなく NGR の SQLite 内に保持する machine-native judgment graph へ移行できるようにする。判断の追加、更新、置換、休眠、削除を raw SQL ではなく domain-level write API から安全に操作し、必要時に人間向け view を生成できる基礎を作る。

前提

  • 現行 NGR は SQLite に document node と typed edge を保持し、Decision Structure を検索対象として扱える。
  • 現行の Wiki entry は state-form node と typed relation を文章で表現しており、機械向け graph としては冗長で、人間にも規模拡大時の可読性が低い。
  • NGR リポジトリ自身を先行実験対象とする。今回、Wiki 表示の完全互換は必須条件にしない。
  • SQLite の判断データを失うことは許容しない。backup、復旧、決定論的 export または再構築可能性を保つ。

制約

  • AI に raw SQL を公開しない。判断追加、更新、置換、休眠、削除は明示的な domain API と transaction boundary を通す。
  • 物理削除と、通常検索から外す論理的忘却を分離する。
  • stable judgment identity、current state、typed relation、provenance、lifecycle state を保持する。
  • supersede は旧判断を暗黙上書きせず、後継への到達経路を維持する。
  • dangling edge、部分更新、二重 successor を fail closed にする。
  • 既存 retrieval、feedback、MCP contract の既定挙動を壊さない。
  • 移行と round-trip は fixture で検証し、既存 Wiki entry の本番移行は検証後に行う。
  • GitHub Wiki は正本ではなく optional/generated view として扱える設計にする。

対象ファイル

  • src/neuron_graph_rag/storage.py - judgment lifecycle schema と atomic persistence
  • src/neuron_graph_rag/engine.py または新規 domain module - write API
  • src/neuron_graph_rag_mcp/server.py - 必要な model-facing write surface
  • tools/ - Wiki import / deterministic export / backup-restore
  • tests/ - lifecycle、integrity、migration、round-trip
  • docs/requirements.md と関連設計文書 - source-of-truth boundary と運用契約

完了条件

  • SQLite だけから judgment node と relation の current graph を再現できる。
  • add / update / supersede / archive / restore / hard-delete candidate の契約と失敗条件がテストされている。
  • 通常検索は inactive judgment を既定で除外し、監査経路では履歴へ到達できる。
  • export 後の再 import で semantic identity と relation が一致する。
  • Wiki を失っても SQLite の backup から判断構造を復旧できる。

Metadata

Metadata

Assignees

Labels

enhancement新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能review-pending実装完了後、review または次段階の判断待ち

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions