From 8e21e2f3f28a9ec37be749f3a29c377183d9e3ca Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 25 May 2026 05:43:06 +0900 Subject: [PATCH] docs: add memory consolidation skip ticket --- TODO.md | 3 ++ ...memory-consolidation-skip-observability.md | 48 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 tickets/memory-consolidation-skip-observability.md diff --git a/TODO.md b/TODO.md index a1a5ddc8..2e94e37b 100644 --- a/TODO.md +++ b/TODO.md @@ -10,6 +10,9 @@ - llm-worker のエラー耐性 - ストリーム途中失敗時の継続 → [tickets/llm-worker-stream-continuation.md](tickets/llm-worker-stream-continuation.md) - E2E テストハーネス(`tests/e2e/`、opt-in) → [tickets/e2e-harness.md](tickets/e2e-harness.md) +- メモリ機構 + - consolidation skip 表示と invalid staging の観測性 → [tickets/memory-consolidation-skip-observability.md](tickets/memory-consolidation-skip-observability.md) + - TUI 拡充 - navigation mode / block focus の設計 → [tickets/tui-navigation-mode-design.md](tickets/tui-navigation-mode-design.md) - spawned child Pod の一覧と一時 attach → [tickets/tui-spawned-pod-panel.md](tickets/tui-spawned-pod-panel.md) diff --git a/tickets/memory-consolidation-skip-observability.md b/tickets/memory-consolidation-skip-observability.md new file mode 100644 index 00000000..96cbc0a6 --- /dev/null +++ b/tickets/memory-consolidation-skip-observability.md @@ -0,0 +1,48 @@ +# メモリ機構: consolidation skip 表示と invalid staging の観測性 + +## 背景 + +`memory-audit-log` 実装後、TUI actionbar に `memory consolidation skipped: no_staging_entries` が表示されるようになった。これは一見すると「staging が無い」状態に見えるが、実際の workspace には `.insomnia/memory/_staging/*.json` が残っている場合がある。 + +現状の原因は二つある。 + +1. `run_consolidate_once` が成功後に backlog drain のため loop し、直後の空確認で `skipped: no_staging_entries` を emit する。これにより、直前の `completed_record_changes` 表示が actionbar 上で上書きされる。 +2. 旧 schema の staging file は `source.session_id` を持ち、現行 schema が要求する `source.segment_id` を持たないため parse で skip される。結果として、ファイルは存在するのに valid entry が 0 件となり、`no_staging_entries` と記録される。 + +この状態は機能停止ではないが、観測面として misleading であり、memory 機構の稼働状況を人間が誤解しやすい。 + +## 方針 + +Audit log には worker の skip / no-op を残しつつ、actionbar には人間が見る価値のある状態だけを出す。特に successful consolidation の直後に発生する drain 終端確認の `no_staging_entries` は actionbar に出さない。 + +また、staging directory にファイルがあるが current schema として読めない場合は、`no_staging_entries` ではなく invalid staging が存在することを audit log から分かるようにする。 + +## 要件 + +- consolidation が `completed` した直後の drain 確認で発生する idle skip が、直前の actionbar 表示を上書きしない。 + - 例: `completed_record_changes` の直後に `no_staging_entries` を actionbar へ出さない。 + - audit log へ残すかどうかは実装判断でよいが、UI event としては抑制する。 +- 通常の post-run check で staging が本当に空の場合も、actionbar に `no_staging_entries` を毎回出さない。 + - idle/no-op 状態は audit log 側で確認できればよい。 +- `list_staging_entries` あるいはその呼び出し側で、invalid / parse-failed staging file の存在を区別できるようにする。 + - 少なくとも invalid count が audit reason または structured field から分かる。 + - 例: `no_valid_staging_entries invalid=6`。 +- `threshold_not_reached` と `no_valid_staging_entries` / `invalid_staging_entries` は区別される。 +- 既存の old schema staging を自動 migration / delete しない。 + - `source.session_id` と `source.segment_id` は意味が違う可能性があるため、この ticket では観測性改善に留める。 + - 必要なら後続で archive/drop/migration 方針を決める。 + +## 完了条件 + +- successful consolidation の直後に actionbar が `no_staging_entries` で上書きされない。 +- staging directory に parse 不能な `.json` がある場合、audit log が `no_staging_entries` ではなく invalid staging の存在を示す。 +- staging が本当に空の periodic/post-run check は actionbar にノイズを出さない。 +- consolidation skip / invalid staging の挙動を確認する test がある。 +- `cargo fmt --check` と関連 crate の test が通る。 + +## 範囲外 + +- old schema staging file の自動 migration。 +- old schema staging file の自動削除 / archive。 +- actionbar transient notice 汎用 API の実装。 +- memory audit log の保存形式の大幅変更。