84 lines
4.4 KiB
Markdown
84 lines
4.4 KiB
Markdown
---
|
|
title: 'Extract stagingのsource anchor形式を実装する'
|
|
state: 'inprogress'
|
|
created_at: '2026-07-16T17:17:22Z'
|
|
updated_at: '2026-07-16T19:28:00Z'
|
|
assignee: null
|
|
queued_by: 'workspace-panel'
|
|
queued_at: '2026-07-16T19:26:52Z'
|
|
---
|
|
|
|
## 背景
|
|
|
|
Overview-first extract では、extract worker が開始時点の会話 snapshot と filtered Overview projection を参照し、必要な evidence だけを探索して staging payload を出す。これを安全に実装するには、先に staging payload / source anchor / evidence reference の形式を固める必要がある。
|
|
|
|
現状の `StagingRecord` は record 全体に `source: SourceRef` を持つが、個々の `decision` / `discussion` / `attempt` / `request` がどの evidence に基づくかを表現しづらい。consolidation が staging を審査・剪定するためには、entry-level source anchors と overview/evidence refs を辿れる形式が必要である。
|
|
|
|
関連:
|
|
|
|
- Objective `00001KVJSMQXZ`
|
|
- `.yoi/objectives/00001KVJSMQXZ/memory-architecture-overview.md`
|
|
- Ticket `00001KXMK7YMC` — `session-explore` feature 付き extract worker 実装
|
|
- Ticket `00001KXMK846H` — staging から Memory 化する resolution / disposition 実装
|
|
|
|
## 実装意図
|
|
|
|
この Ticket は `session-explore` worker の前提となる staging schema を実装する。目的は、extract worker が「根拠を読んだふり」をせず、host が解決した source anchor と staging entry を機械的に結びつけられるようにすることである。
|
|
|
|
この Ticket では extract worker の feature / tool 実装までは行わない。まず serialization / schema / tests を固める。
|
|
|
|
## 対象領域
|
|
|
|
主な対象:
|
|
|
|
- `crates/memory/src/extract/payload.rs`
|
|
- `ExtractedPayload`
|
|
- `DecisionEntry` / `DiscussionEntry` / `AttemptEntry` / `RequestEntry`
|
|
- entry-level source refs / evidence refs の追加
|
|
- `crates/memory/src/extract/staging.rs`
|
|
- staging write / read compatibility
|
|
- `crates/memory/src/schema/common.rs`
|
|
- `SourceRef` との関係確認
|
|
- `crates/memory/src/consolidate/input.rs`
|
|
- 新形式 staging を consolidation input に表示できるか確認
|
|
- relevant tests under `crates/memory`
|
|
|
|
## 実装要件
|
|
|
|
- extract staging の source anchor / evidence reference 型を実装する。
|
|
- session id / segment id。
|
|
- entry range。
|
|
- evidence id。
|
|
- evidence kind: message / tool_call / tool_result / file_ref / ticket_ref / objective_ref など拡張可能な形。
|
|
- optional summary / label。
|
|
- `DecisionEntry` / `DiscussionEntry` / `AttemptEntry` / `RequestEntry` に optional entry-level source refs を持たせる。
|
|
- 既存 JSON 互換性を壊さないため default empty / skip serializing empty とする。
|
|
- 既存の `StagingRecord.source` は維持する。
|
|
- record-level source は extract 対象 range 全体を示す。
|
|
- entry-level source refs は個々の claim の evidence を示す。
|
|
- source refs は extract worker が自由作文した根拠文字列ではなく、host が解決した anchor を参照できる形式にする。
|
|
- staging JSON の読み書きで、旧形式 staging が読めることを維持する。
|
|
- consolidation input で entry-level source refs が確認できるようにする。
|
|
- 最初は human-readable 表示でよい。
|
|
- consolidation が未対応でも壊れない optional field として扱う。
|
|
- raw tool result content 全文を staging payload に埋め込まない。
|
|
|
|
## 非目標
|
|
|
|
- `session-explore` feature / evidence tools をこの Ticket で実装しない。
|
|
- extract worker 起動経路をこの Ticket で変更しない。
|
|
- staging -> Memory resolution / disposition log をこの Ticket で実装しない。
|
|
- Knowledge / Skill / Ticket / docs への routing をこの Ticket で実装しない。
|
|
|
|
## 受け入れ条件
|
|
|
|
- staging payload に entry-level source refs / evidence refs を保存できる。
|
|
- 既存 `StagingRecord.source` と互換性が維持されている。
|
|
- 旧形式 staging JSON が読める。
|
|
- new-format staging JSON が serialization / deserialization できる。
|
|
- consolidation input に source refs が表示される、または少なくとも lossless に通る。
|
|
- source refs は bounded metadata / anchors のみで、raw tool result 全文を含まない。
|
|
- relevant unit tests が追加または更新されている。
|
|
- `cargo test -p memory` または該当 crate の同等テストが通る。
|
|
- code 変更として `nix build .#yoi` が通る。
|