yoi/.yoi/tickets/00001KTVJGC0Y/thread.md

366 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- event: create author: LocalTicketBackend at: 2026-06-11T14:48:44Z -->
## 作成
LocalTicketBackend によって作成されました。
---
<!-- event: intake_summary author: intake at: 2026-06-11T14:48:50Z -->
## Intake summary
`ticket.language` guidance が Ticket role launch prompt に偏っており、Companion など non-Ticket-role Pod が Ticket tools を使う場合に durable Ticket record / Ticket tool body の言語指示が届かない問題を concrete implementation Ticket として整理した。要件は、Ticket role に依存せず universal Ticket capability / tool surface または feature-scoped system prompt path から model-visible guidance を届けること。
---
<!-- event: state_changed author: intake at: 2026-06-11T14:48:50Z from: planning to: ready reason: planning_ready field: state -->
## State changed
要件・受け入れ条件・binding decisions・実装余地・escalation conditions・validation が揃っているため、Orchestrator routing 可能な ready Ticket とする。
---
<!-- event: state_changed author: workspace-panel at: 2026-06-12T14:49:39Z from: ready to: queued reason: queued field: state -->
## State changed
Ticket を `workspace-panel` が queued にしました。
---
<!-- event: decision author: orchestrator at: 2026-06-12T14:54:15Z -->
## Decision
Routing decision: implementation_ready
Reason:
- Ticket body は `ticket.language` guidance を Ticket role launch prompt 専用ではなく、Ticket tools を持つすべての Pod に model-visible に届ける要件を明確に記録している。
- `worker.language` / `memory.language` / `ticket.language` の責務分離、hidden context-only injection 禁止、既存 Ticket record の一括 rewrite 禁止が binding invariant として記録済みである。
- risk flags は prompt-context / tool-description / feature-boundary / ticket-language / companion だが、bounded context check の結果、具体的な未決定 design/API/authority 判断は残っていない。実装方式は Ticket capability/tool surface または feature-scoped system prompt path の範囲で coder が選べる。
- Relation blocker はなく、OrchestrationPlan に accepted plan `orch-plan-20260612-145344-1` を記録済み。
- 現在 active coder は `00001KTVJFT6F`Panel focus`00001KTTW04W2`Companion progress notifyだが、この Ticket の主対象は Ticket language guidance の prompt/tool/feature boundary であり、Panel UI 変更とは独立している。Companion-adjacent確認はあるが、authority強化や progress notify implementation と結合しないように実装・reviewで確認する。
Evidence checked:
- Ticket body / thread: requirements, acceptance criteria, binding decisions, implementation latitude, escalation conditions, validation, intake summary, `ready -> queued` event を確認。
- TicketRelationQuery: outgoing/incoming relation なし、blocker なし。
- TicketOrchestrationPlanQuery: 既存 record なし、今回 accepted plan を記録。
- Code/resource map: `ticket.language` / `Ticket record language` / Ticket tool/backend/feature/prompt surfaces を narrow search で確認。直近の role launch split により Ticket role first-run prompt から language guidance が外れているため、本 Ticket の universal delivery 実装が次の自然な境界であることを確認。
- Workspace/Pod state: Orchestrator worktree clean、active child worktree は別 branch/scope。
IntentPacket:
Intent:
- `ticket.language` guidance を Ticket role 固有の launch prompt ではなく、Ticket-writing tools を持つすべての Pod に durable/model-visible な形で届ける。
- Companion-style non-Ticket-role context でも Ticket tool body / durable Ticket record を configured `ticket.language` に従って書く guidance が見えるようにする。
Binding decisions / invariants:
- `ticket.language` は durable Ticket record / Ticket tool body writing policy であり、Ticket role 固有 policy ではない。
- `worker.language` は通常 prose、`memory.language` は Memory/Knowledge generation、`ticket.language` は durable Ticket records / Ticket tool bodies の責務に分ける。
- `ticket.language` が設定されていても protocol literals、file paths、commands、logs、identifiers、quoted external text を不要に翻訳しない。
- hidden context-only injection を作らない。guidance は tool surface / feature-scoped system prompt / committed prompt path など、モデルから見える根拠を残す。
- 既存 Ticket records を翻訳・一括 rewrite しない。
- Companion default authority を強化しない。
Requirements / acceptance criteria:
- Ticket tools を持つ non-Ticket-role Pod、特に Companion-style context でも guidance が model-visible になる。
- Ticket role Pods でも同等 guidance が届き、既存挙動が退行しない。
- guidance source は universal Ticket capability / tool surface または feature-scoped system prompt path にあり、Ticket role launch prompt 専用ではない。
- `worker.language``ticket.language` を override しない。
- focused test または snapshot-style verification で Ticket role と generic / Companion-style Ticket-capable context の両方を確認する。
- `nix build .#yoi` が通る。
Implementation latitude:
- Ticket tool descriptions/schema text に configured Ticket language instruction を入れる方式、または Ticket feature/capability が有効な Pod への feature-scoped prompt guidance を使う方式を選んでよい。
- 既存 architecture を広く作り替えず、現在の ToolRegistry/feature/prompt resource 境界に合う最小実装を選ぶ。
- Tests は prompt snapshot 全体に brittle にせず、language guidance の存在/非混同を直接確認する。
Escalate if:
- Tool descriptions が configured Ticket language に依存できず、広い ToolRegistry redesign が必要になる。
- feature-scoped prompt guidance が history に残らない context mutation を必要とする。
- Companion の Ticket capability path から Ticket config にアクセスできない。
- 実装が Ticket record language と worker response language を混同する。
- Companion authority を増やす必要が出る。
Validation:
- Ticket role prompt/context の focused test。
- generic / Companion-style Ticket-capable context の guidance 確認 test。
- relevant focused `cargo test`
- `cargo fmt --check`
- `git diff --check`
- `./result/bin/yoi ticket doctor` または同等。
- `nix build .#yoi`
Current code map:
- `crates/ticket/src/config.rs`: `ticket.language` config parsing / validation。
- `crates/ticket/src/tool.rs`: Ticket tool definitions/descriptions and tests。
- `crates/pod/src/feature/builtin/ticket.rs`: Ticket feature registration/capability/tool exposure。
- `crates/pod/src/prompt/*`: feature/system prompt integration if needed。
- `crates/client/src/ticket_role.rs`: ensure Ticket role launch still receives guidance through the new universal path, not first-run Submit prose。
Critical risks / reviewer focus:
- guidance が Ticket role launch prompt 専用に戻っていないこと。
- non-role Ticket-capable context にも model-visible に届くこと。
- hidden ephemeral context injection ではなく、tool/feature/prompt surface として履歴・prompt根拠が残ること。
- `worker.language``ticket.language` を混同しないこと。
- Companion authority / Ticket mutation authority を強化しないこと。
Next action:
- `queued -> inprogress` を記録してから、branch `ticket/ticket-language-guidance-all-tools` / worktree `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools` を作成し、sibling coder に narrow write scope で実装を委譲する。Reviewer は coder evidence 後に read-only で起動する。
---
<!-- event: state_changed author: orchestrator at: 2026-06-12T14:54:22Z from: queued to: inprogress reason: orchestrator_acceptance field: state -->
## State changed
Routing accepted for implementation. Ticket body/thread, relation blockers, orchestration plan, relevant Ticket language / tool / feature / prompt code map, current Orchestrator workspace state, and active parallel work were rechecked. No unresolved blocker or missing planning decision remains. Implementation side effects will start only after this accepted `queued -> inprogress` transition is recorded, using accepted plan `orch-plan-20260612-145344-1`.
---
<!-- event: plan author: orchestrator at: 2026-06-12T14:54:49Z -->
## Plan
Implementation worktree created for multi-agent handoff.
- Ticket: `00001KTVJGC0Y`
- Branch: `ticket/ticket-language-guidance-all-tools`
- Worktree: `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools`
- Base: Orchestrator workspace HEAD `76d358e8` (`orchestration/yoi-orchestrator`), including the accepted routing record and `queued -> inprogress` transition.
- Parallel work note: active child worktrees are `panel-focus-composer-row-selection` and `orchestrator-progress-companion-notify`; this Ticket should stay within Ticket language/tool/feature/prompt guidance surfaces and avoid coupling to their implementation branches.
- Scope rule: implementation work happens only in this child worktree. Root/original workspace must not be read, written, validated, merged, cleaned, or used for git operations.
- Next: spawn sibling coder with narrow write scope to the implementation worktree. Reviewer will be started after coder evidence is available.
---
<!-- event: plan author: orchestrator at: 2026-06-12T14:55:42Z -->
## Plan
Coder delegated.
- Coder Pod: `yoi-coder-ticket-language-guidance`
- Worktree: `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools`
- Branch: `ticket/ticket-language-guidance-all-tools`
- Scope: write `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools`; read child worktree plus minimal non-recursive runtime-root read required by spawn validation.
- Task: make configured `ticket.language` guidance model-visible for all Ticket-capable Pods, including non-role Companion-style contexts; preserve worker/memory/ticket language boundaries; avoid hidden context-only injection; add focused tests and required validation.
- Parallel work note: active sibling worktrees for Panel focus and Companion progress notification exist; coder was instructed to avoid coupling and report concrete merge/design conflict if found.
- Constraint: coder was instructed not to use root/original workspace for decision evidence or git/validation/cleanup, and not to create generated memory/local/runtime/log/lock/secret-like `.yoi` paths.
---
<!-- event: implementation_report author: orchestrator at: 2026-06-12T15:10:38Z -->
## Implementation report
Coder completed implementation.
Coder Pod:
- `yoi-coder-ticket-language-guidance`
Implementation branch/worktree:
- Branch: `ticket/ticket-language-guidance-all-tools`
- Worktree: `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools`
- Commit: `92c4dee7 ticket: guide Ticket tool language universally`
- Worktree status: clean
Changed surfaces:
- `crates/ticket/src/tool.rs`
- `crates/pod/src/feature/builtin/ticket.rs`
Implementation summary:
- Ticket tool `ToolMeta.description` now derives from configured `LocalTicketBackend::record_language()`.
- Added shared `ticket_tool_description(name, record_language)` so all Ticket tool descriptions can include configured Ticket record language guidance.
- Guidance distinguishes durable Ticket record / Ticket tool body text from normal `worker.language` prose and `memory.language` Memory/Knowledge generation.
- Guidance preserves protocol literals, file paths, commands, logs, identifiers, and quoted external text when fidelity matters.
- Feature descriptor `ToolDeclaration` descriptions use the same helper, so Ticket role launch is not the only guidance path.
- Focused tests cover configured-language presence, unset-language omission, read-only Companion-style context, and lifecycle/Ticket-role-style context.
- Companion/read-only authority was not changed.
Orchestrator-verified evidence from child worktree:
- `git status --short --branch`: clean on `ticket/ticket-language-guidance-all-tools`
- `cargo test -p ticket ticket_record_language_guidance`: pass
- `cargo test -p pod ticket_language_guidance`: pass
- `cargo test -p ticket`: pass, 68 tests
- `cargo fmt --check`: pass
- `git diff --check`: pass
- `cargo run -p yoi -- ticket doctor`: `doctor: ok`
- `nix build .#yoi`: pass
Known unrelated validation failure:
- `cargo test -p pod` fails two prompt assertion tests:
- `prompt::catalog::tests::pod_orchestration_guidance_section_renders_resource_body`
- `prompt::system::tests::pod_orchestration_guidance_is_included_for_pod_management_tools`
- The same two focused tests fail on current Orchestrator branch before this implementation is merged, with the same missing phrase `worktree status, diff, and test results`.
- These failures are in Pod orchestration guidance prompt assertions, outside the Ticket tool language guidance change, but reviewer should confirm they are unrelated and not introduced by this Ticket.
Next:
- Spawn read-only sibling reviewer against the recorded intent, binding decisions/invariants, acceptance criteria, commit `92c4dee7`, diff, validation evidence, and known pre-existing unrelated `cargo test -p pod` failures.
---
<!-- event: plan author: orchestrator at: 2026-06-12T15:11:23Z -->
## Plan
Reviewer delegated.
- Reviewer Pod: `yoi-reviewer-ticket-language-guidance`
- Target branch/worktree: `ticket/ticket-language-guidance-all-tools` at `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools`
- Commit under review: `92c4dee7 ticket: guide Ticket tool language universally`
- Scope: read-only child worktree plus minimal non-recursive runtime-root read required by spawn validation.
- Review basis: recorded IntentPacket, binding decisions/invariants, acceptance criteria, implementation summary, diff, focused validation evidence, `nix build` evidence, and known pre-existing unrelated `cargo test -p pod` failure evidence.
- Reviewer focus: universal Ticket tool/capability guidance, Ticket role and generic/Companion-style coverage, worker/memory/ticket language separation, no hidden context-only injection, no authority expansion, and robust focused tests.
---
<!-- event: review author: reviewer:yoi-reviewer-ticket-language-guidance at: 2026-06-12T15:16:59Z status: approve -->
## Review: approve
Approve.
Review target:
- Worktree: `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools`
- Commit: `92c4dee7 ticket: guide Ticket tool language universally`
Evidence:
- 差分は `crates/ticket/src/tool.rs``crates/pod/src/feature/builtin/ticket.rs` に限定されている。
- guidance は shared `ticket_tool_description(name, record_language)` で生成され、registered Ticket tools の `ToolMeta.description` と builtin Ticket feature の `ToolDeclaration` descriptions の両方に使われている。
- guidance は Ticket tool / capability surface で model-visible であり、hidden context injection でも `ticket_role` launch prompt fragment でもない。
- `ticket.language``worker.language` / `memory.language` と区別され、protocol literals、paths、commands、logs、identifiers、quoted external text は fidelity 優先で保持する guidance が明記されている。
- read-only Companion-style access は read-only のままで、mutating tool exposure は拡大していない。
- Ticket role-style lifecycle access も同じ universal tool-description path でカバーされている。
- first-run Ticket role text は record-language guidance を launch prose に戻していない。
Reviewer-run validation:
- `cargo test -p ticket ticket_record_language_guidance`: pass
- `cargo test -p pod ticket_language_guidance`: pass
- `cargo test -p ticket`: pass, 68 tests
- `cargo test -p client ticket_record_language_stays_out_of_first_run_text`: pass
- `cargo fmt --check`: pass
- `git diff --check orchestration/yoi-orchestrator...HEAD`: pass
- `cargo run -p yoi -- ticket doctor`: `doctor: ok`
- `nix build .#yoi`: pass
Known broad `cargo test -p pod` failures:
- Reviewer reproduced the two prompt assertion failures on HEAD, both for missing `worktree status, diff, and test results`.
- This branch has no diff under `crates/pod/src/prompt` or `resources/prompts`, and implementation diff is confined to Ticket tool/feature files.
- Together with Orchestrators base-branch verification, these failures are pre-existing/unrelated and not a blocker for this Ticket.
Non-blocking risk:
- When configured, language guidance is appended to every Ticket tool description, including read-only tools. This repeats some prompt text, but it is an intentional universal capability-surface tradeoff and satisfies the acceptance criteria.
---
<!-- event: implementation_report author: orchestrator at: 2026-06-12T15:19:24Z -->
## Implementation report
Integration completed in the Orchestrator workspace.
Integrated implementation:
- Ticket: `00001KTVJGC0Y`
- Implementation branch: `ticket/ticket-language-guidance-all-tools`
- Implementation commit: `92c4dee7 ticket: guide Ticket tool language universally`
- Reviewer result: approve, no blockers
- Orchestrator merge commit: `ec66cad8 merge: ticket language guidance for tool users`
- Integration target: `orchestration/yoi-orchestrator`
Post-integration validation from Orchestrator worktree:
- `cargo test -p ticket ticket_record_language_guidance`: pass
- `cargo test -p pod ticket_language_guidance`: pass
- `cargo test -p client ticket_record_language_stays_out_of_first_run_text`: pass
- `cargo test -p ticket`: pass, 68 tests
- `cargo fmt --check`: pass
- `git diff --check HEAD~1..HEAD`: pass
- `./result/bin/yoi ticket doctor`: `doctor: ok`
- `nix build .#yoi`: pass
Known unrelated validation failure remains:
- `cargo test -p pod` still includes pre-existing failures in Pod orchestration guidance prompt assertion tests. These were verified on the Orchestrator branch before merge and reviewed as unrelated to this Ticket.
Remaining non-blocking risk:
- When configured, Ticket language guidance is appended to every Ticket tool description, including read-only tools. This repeats some prompt text, but it is the accepted universal capability-surface tradeoff for this Ticket.
---
<!-- event: state_changed author: orchestrator at: 2026-06-12T15:19:29Z from: inprogress to: done reason: implementation_merged_and_validated field: state -->
## State changed
Implementation was merged into the Orchestrator branch, reviewer approved with no blockers, and post-integration validation passed. Cleanup and closure will be recorded next.
---
<!-- event: implementation_report author: orchestrator at: 2026-06-12T15:19:54Z -->
## Implementation report
Cleanup completed.
- Stopped coder Pod: `yoi-coder-ticket-language-guidance`
- Stopped reviewer Pod: `yoi-reviewer-ticket-language-guidance`
- Removed child worktree: `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools`
- Deleted implementation branch: `ticket/ticket-language-guidance-all-tools`
- Orchestrator worktree status after cleanup: clean
Cleanup was limited to child implementation worktree/branch and related child Pods. Root/original workspace was not touched.
---
<!-- event: state_changed author: hare at: 2026-06-12T15:20:11Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-12T15:20:11Z status: closed -->
## 完了
Ticket tool users 全体に `ticket.language` guidance が届くようにした。
実装概要:
- `crates/ticket/src/tool.rs` に shared `ticket_tool_description(name, record_language)` を追加し、configured `ticket.language` がある場合は Ticket tool description に durable Ticket record / Ticket tool body language guidance を追加するようにした。
- `crates/pod/src/feature/builtin/ticket.rs` の builtin Ticket feature `ToolDeclaration` descriptions でも同じ helper を使い、read-only Companion-style context と lifecycle/Ticket-role-style context の両方に guidance が届くようにした。
- guidance は `worker.language` / `memory.language` / `ticket.language` を区別し、protocol literals、file paths、commands、logs、identifiers、quoted external text は fidelity 優先で保持することを明記した。
- guidance は Ticket tool / capability surface で model-visible であり、hidden context injection や `ticket_role` launch prompt fragment ではない。
- Companion/read-only authority や mutating tool exposure は拡大していない。
Review / integration:
- Implementation commit: `92c4dee7 ticket: guide Ticket tool language universally`
- Reviewer: `yoi-reviewer-ticket-language-guidance` が approve。
- Orchestrator merge commit: `ec66cad8 merge: ticket language guidance for tool users`
- Ticket completion commit: `2ba97b67 ticket: mark language guidance done`
Validation:
- `cargo test -p ticket ticket_record_language_guidance`: pass
- `cargo test -p pod ticket_language_guidance`: pass
- `cargo test -p client ticket_record_language_stays_out_of_first_run_text`: pass
- `cargo test -p ticket`: pass, 68 tests
- `cargo fmt --check`: pass
- `git diff --check HEAD~1..HEAD`: pass
- `./result/bin/yoi ticket doctor`: `doctor: ok`
- `nix build .#yoi`: pass
Known unrelated validation failure:
- `cargo test -p pod` still includes pre-existing failures in Pod orchestration guidance prompt assertion tests. These were verified on the Orchestrator branch before merge and reviewed as unrelated to this Ticket.
Cleanup:
- coder/reviewer Pods stopped。
- child worktree `/home/hare/Projects/yoi/.worktree/ticket-language-guidance-all-tools` removed。
- branch `ticket/ticket-language-guidance-all-tools` deleted。
Non-blocking risk:
- configured language guidance is appended to every Ticket tool description, including read-only tools. This repeats some prompt text, but it is the accepted universal capability-surface tradeoff for this Ticket.
---