merge: sync orchestration before queue 00001KVDH2E06
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 'Plugin: enforce Plugin permission grants'
|
||||
state: 'inprogress'
|
||||
state: 'closed'
|
||||
created_at: '2026-06-15T14:48:59Z'
|
||||
updated_at: '2026-06-18T13:12:47Z'
|
||||
updated_at: '2026-06-18T14:24:42Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['plugin', 'permission', 'grant-enforcement', 'capability-boundary', 'tool-execution']
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
Ticket `00001KV5W3PJ3` is complete.
|
||||
|
||||
Completed implementation:
|
||||
- Added typed Plugin permission declarations/grants for tool surfaces, tool names/namespaces, `external_write`, and future `host_api.https` / `host_api.fs` boundaries.
|
||||
- Bound grants to source-qualified package identity, deterministic digest, and exact package version.
|
||||
- Added fail-closed registration gating in `PluginToolFeature::install`.
|
||||
- Added independent runtime execution gating in `run_plugin_wasm_tool` before WASM load/execute.
|
||||
- Added future host API permission boundary checks without implementing actual `https` / `fs` host APIs.
|
||||
- Added bounded/sanitized denial diagnostics.
|
||||
- Preserved the existing PreToolCall / Tool permission path; plugin grants are an additional fail-closed gate, not an ambient authority grant.
|
||||
|
||||
Reviewed / merged:
|
||||
- Implementation commit: `b1ba1599` (`plugin: enforce permission grants`)
|
||||
- Reviewer result: approve, no blockers.
|
||||
- Orchestrator merge commit: `94aa3c1d` (`merge: plugin permission grants`)
|
||||
|
||||
Validation in Orchestrator worktree:
|
||||
- `cargo fmt --check` — passed
|
||||
- `cargo check -p manifest -p pod` — passed
|
||||
- `cargo test -p pod plugin -- --nocapture` — passed; 27 passed, 0 failed
|
||||
- `cargo test -p manifest plugin -- --nocapture` — passed; 17 passed, 0 failed
|
||||
- `git diff --check` — passed
|
||||
|
||||
Cleanup:
|
||||
- Stopped Coder Pod `yoi-coder-00001KV5W3PJ3`.
|
||||
- Stopped Reviewer Pod `yoi-reviewer-00001KV5W3PJ3`.
|
||||
- Removed child worktree `/home/hare/Projects/yoi/.worktree/00001KV5W3PJ3-plugin-permission-grants`.
|
||||
- Deleted merged branch `impl/00001KV5W3PJ3-plugin-permission-grants`.
|
||||
|
||||
Root/original workspace promotion was not performed in this step; the completed work is integrated on the Orchestrator branch.
|
||||
@@ -122,3 +122,268 @@ State handling:
|
||||
- Ticket remains `inprogress` because acceptance and worktree side effects already happened; it is not silently returned to `queued`.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-18T13:56:44Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Implementation resume note:
|
||||
|
||||
Coder Pod の再開を試み、最初の `SpawnPod` は child scope に runtime workspace root `/home/hare/Projects/yoi` の read scope が含まれていなかったため失敗した。
|
||||
|
||||
Recovery:
|
||||
- 既存 implementation worktree `/home/hare/Projects/yoi/.worktree/00001KV5W3PJ3-plugin-permission-grants` を再利用。
|
||||
- child scope を workspace root read + implementation worktree write に狭く設定して再試行。
|
||||
- Coder Pod `yoi-coder-00001KV5W3PJ3` の起動に成功。
|
||||
|
||||
Current status:
|
||||
- Ticket は `inprogress` のまま。
|
||||
- Coder は Plugin permission grants 実装、focused validation、commit、実装報告を行う予定。
|
||||
- root/original workspace は触らず、implementation worktree 上で作業するよう指示済み。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-18T14:15:12Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder implementation report received:
|
||||
|
||||
Commit:
|
||||
- `b1ba1599` — `plugin: enforce permission grants`
|
||||
|
||||
Summary:
|
||||
- typed plugin permission declarations/grants を追加。
|
||||
- `surfaces.tool`
|
||||
- specific tool names
|
||||
- tool namespaces
|
||||
- `external_write`
|
||||
- future `host_api.https` / `host_api.fs`
|
||||
- grant binding を source-qualified package id / deterministic digest / exact package version に結合。
|
||||
- registration gating を `PluginToolFeature::install` に実装。
|
||||
- ungranted / unrequested plugin tools は登録されない。
|
||||
- partial grant では authorized tools のみ登録し、skipped tools は bounded diagnostics。
|
||||
- runtime execution gating を `run_plugin_wasm_tool` に実装。
|
||||
- WASM 読み込み/実行前に binding と requested/granted tool authority を再確認。
|
||||
- future host API boundary として `validate_wasm_imports` が `yoi:https` / `yoi:fs` imports を認識し、non-implemented boundary error の前に permission check。
|
||||
- actual `https` / `fs` host API は実装していない。
|
||||
- `external_write` を plugin tool manifest metadata に追加し、requested+granted の場合のみ許可。
|
||||
- Existing PreToolCall/tool permission path は変更せず、plugin grant checks を追加の fail-closed gate とした。
|
||||
|
||||
Files changed:
|
||||
- `crates/manifest/src/plugin.rs`
|
||||
- `crates/pod/src/feature/plugin.rs`
|
||||
- `crates/pod/src/pod.rs`
|
||||
|
||||
Validation reported by Coder:
|
||||
- `cargo fmt --check`
|
||||
- `cargo check -p manifest -p pod`
|
||||
- `cargo test -p pod plugin -- --nocapture` — 27 passed
|
||||
- `cargo test -p manifest plugin -- --nocapture` — 17 passed
|
||||
- `git diff --check`
|
||||
|
||||
Orchestrator evidence checked:
|
||||
- Pod output を確認。
|
||||
- implementation worktree は clean。
|
||||
- commit `b1ba1599` が branch `impl/00001KV5W3PJ3-plugin-permission-grants` の HEAD。
|
||||
- diff stat: `crates/manifest/src/plugin.rs`, `crates/pod/src/feature/plugin.rs`, `crates/pod/src/pod.rs` に 575 insertions / 19 deletions。
|
||||
|
||||
Routing classification: review_needed
|
||||
|
||||
Next action:
|
||||
- recorded intent / invariants / acceptance criteria に照らして、read-only Reviewer Pod で外部レビューする。
|
||||
- 特に fail-closed grant enforcement、source/digest/version binding、no ambient authority、external_write/effect metadata、bounded diagnostics、existing PreToolCall path との整合性を確認する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: yoi-orchestrator at: 2026-06-18T14:16:18Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Review dispatch:
|
||||
|
||||
Reviewer Pod `yoi-reviewer-00001KV5W3PJ3` を read-only scope で起動した。
|
||||
|
||||
Review target:
|
||||
- worktree: `/home/hare/Projects/yoi/.worktree/00001KV5W3PJ3-plugin-permission-grants`
|
||||
- branch: `impl/00001KV5W3PJ3-plugin-permission-grants`
|
||||
- commit: `b1ba1599`
|
||||
|
||||
Reviewer focus:
|
||||
- recorded intent / invariants / acceptance criteria に対する適合性。
|
||||
- registration / execution の fail-closed grant enforcement。
|
||||
- source-qualified identity / digest / version binding。
|
||||
- unrelated grant / digest mismatch / missing surface/tool/external_write / unknown kind の拒否。
|
||||
- `external_write` と Tool effect / PreToolCall path の整合性。
|
||||
- future `https` / `fs` host API permission boundary が ambient authority を作っていないこと。
|
||||
- bounded safe diagnostics。
|
||||
|
||||
Next:
|
||||
- Reviewer output を確認し、approve なら Ticket review に記録して merge-ready 判断へ進む。request_changes なら Coder に修正依頼する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KV5W3PJ3 at: 2026-06-18T14:22:32Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
Review result: approve
|
||||
|
||||
対象:
|
||||
- Ticket: `00001KV5W3PJ3`
|
||||
- branch: `impl/00001KV5W3PJ3-plugin-permission-grants`
|
||||
- commit: `b1ba1599` (`plugin: enforce permission grants`)
|
||||
|
||||
No blockers found.
|
||||
|
||||
Review / validation performed:
|
||||
- review target branch/head が `impl/00001KV5W3PJ3-plugin-permission-grants` at `b1ba1599` であることを確認。
|
||||
- merge-base `a984f580` との差分を確認。
|
||||
- changed files は以下に限定:
|
||||
- `crates/manifest/src/plugin.rs`
|
||||
- `crates/pod/src/feature/plugin.rs`
|
||||
- `crates/pod/src/pod.rs`
|
||||
- `git diff --check` against merge-base を実行し、whitespace/check failure なし。
|
||||
- Review boundary が read-only/static review のため cargo validation は再実行せず、Coder reported validation を確認。
|
||||
|
||||
Evidence:
|
||||
- typed permission/grant model が追加されている。
|
||||
- `PluginGrantConfig` は non-empty grants を source-qualified id、digest、exact version に binding し、missing/mismatched binding では fail する。
|
||||
- permission variants は `surfaces.*`、tool names/namespaces、`external_write`、future `host_api.https/fs` を含む。
|
||||
- `PluginToolManifest.external_write` は explicit metadata として追加され、matching request+grant を要求する設計。
|
||||
- grant binding は resolution 時に enforcement され、mismatch では `Grant` diagnostic と no resolved record になる。
|
||||
- registration は fail-closed。
|
||||
- `PluginToolFeature::install` が tool 登録前に `authorize_plugin_tool` を呼び、denied tool は bounded diagnostic として skip する。
|
||||
- `authorize_plugin_tool` は requested+granted `surfaces.tool`、tool permission/name/namespace、必要時 `external_write` を要求する。
|
||||
- execution も独立して fail-closed。
|
||||
- `run_plugin_wasm_tool` が WASM read/load/execute 前に manifest tool を再確認し、`authorize_plugin_tool` を再実行する。
|
||||
- future host API は実装せずに permission boundary を model 化。
|
||||
- `authorize_plugin_host_api` は requested+granted host API permission を要求してから `host_api.* is not implemented` を返す。
|
||||
- `validate_wasm_imports` は `yoi:https` / `yoi:fs` imports を authorization path に通してから unsupported module を reject する。
|
||||
- denial diagnostics は bounded/sanitized。
|
||||
- `bounded_message` が 512 bytes に truncation し、newline/tab 以外の control characters を除去する。
|
||||
- Existing Tool / PreToolCall path と矛盾していない。
|
||||
- granted plugin tools は normal `ToolRegistry` / `PreToolCall` policy path に入る。
|
||||
|
||||
Test coverage evidence in diff:
|
||||
- no grant denies registration and runtime execution。
|
||||
- specific grant registers only intended tool。
|
||||
- unrelated package/digest/version grants do not authorize。
|
||||
- requested surface/tool/external_write missing denies。
|
||||
- future host API permissions checked before unimplemented boundary。
|
||||
- exact package identity/digest/version binding and mismatch cases。
|
||||
- unknown permission kind fails at manifest parse boundary。
|
||||
|
||||
Residual note:
|
||||
- `external_write` effect metadata は broader `ToolMeta` public API effect field ではなく plugin manifest/tool metadata level で表現されている。Ticket の escalation condition が broad PreToolCall/Tool metadata redesign を要求していたため、この slice では implemented permission gate として許容可能。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-18T14:23:59Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Merge / validation report:
|
||||
|
||||
Implementation branch `impl/00001KV5W3PJ3-plugin-permission-grants` を Orchestrator worktree の `orchestration` branch に merge した。
|
||||
|
||||
Merge:
|
||||
- merge commit: `94aa3c1d` — `merge: plugin permission grants`
|
||||
- implementation commit: `b1ba1599` — `plugin: enforce permission grants`
|
||||
- changed files:
|
||||
- `crates/manifest/src/plugin.rs`
|
||||
- `crates/pod/src/feature/plugin.rs`
|
||||
- `crates/pod/src/pod.rs`
|
||||
|
||||
Validation in Orchestrator worktree:
|
||||
- `cargo fmt --check` — passed
|
||||
- `cargo check -p manifest -p pod` — passed
|
||||
- `cargo test -p pod plugin -- --nocapture` — passed; 27 passed, 0 failed
|
||||
- `cargo test -p manifest plugin -- --nocapture` — passed; 17 passed, 0 failed
|
||||
- `git diff --check` — passed
|
||||
|
||||
Review:
|
||||
- Reviewer `yoi-reviewer-00001KV5W3PJ3` returned `approve` with no blockers.
|
||||
|
||||
Outcome:
|
||||
- Recorded requirements are satisfied.
|
||||
- Implementation is merged into the Orchestrator branch and validated.
|
||||
- Ticket is ready for done/close processing under standing merge/close completion authority. Root/original workspace promotion is not performed in this step.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-18T14:24:23Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Cleanup report:
|
||||
|
||||
Plugin permission grants Ticket の implementation/review Pods と child worktree を cleanup した。
|
||||
|
||||
Stopped Pods:
|
||||
- `yoi-coder-00001KV5W3PJ3`
|
||||
- `yoi-reviewer-00001KV5W3PJ3`
|
||||
|
||||
Removed child implementation worktree:
|
||||
- `/home/hare/Projects/yoi/.worktree/00001KV5W3PJ3-plugin-permission-grants`
|
||||
|
||||
Deleted merged implementation branch:
|
||||
- `impl/00001KV5W3PJ3-plugin-permission-grants` at `b1ba1599`
|
||||
|
||||
Orchestrator branch remains the integration authority for this completed work. Root/original workspace promotion was not performed in this step.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-18T14:24:29Z from: inprogress to: done reason: merged_validated_review_approved field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Implementation commit `b1ba1599` was reviewed and approved, merged into the Orchestrator branch as `94aa3c1d`, validated in the Orchestrator worktree, and child implementation resources were cleaned up. Requirements and acceptance criteria are satisfied for this Ticket.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: hare at: 2026-06-18T14:24:42Z from: done to: closed reason: closed field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket を closed にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-18T14:24:42Z status: closed -->
|
||||
|
||||
## 完了
|
||||
|
||||
Ticket `00001KV5W3PJ3` is complete.
|
||||
|
||||
Completed implementation:
|
||||
- Added typed Plugin permission declarations/grants for tool surfaces, tool names/namespaces, `external_write`, and future `host_api.https` / `host_api.fs` boundaries.
|
||||
- Bound grants to source-qualified package identity, deterministic digest, and exact package version.
|
||||
- Added fail-closed registration gating in `PluginToolFeature::install`.
|
||||
- Added independent runtime execution gating in `run_plugin_wasm_tool` before WASM load/execute.
|
||||
- Added future host API permission boundary checks without implementing actual `https` / `fs` host APIs.
|
||||
- Added bounded/sanitized denial diagnostics.
|
||||
- Preserved the existing PreToolCall / Tool permission path; plugin grants are an additional fail-closed gate, not an ambient authority grant.
|
||||
|
||||
Reviewed / merged:
|
||||
- Implementation commit: `b1ba1599` (`plugin: enforce permission grants`)
|
||||
- Reviewer result: approve, no blockers.
|
||||
- Orchestrator merge commit: `94aa3c1d` (`merge: plugin permission grants`)
|
||||
|
||||
Validation in Orchestrator worktree:
|
||||
- `cargo fmt --check` — passed
|
||||
- `cargo check -p manifest -p pod` — passed
|
||||
- `cargo test -p pod plugin -- --nocapture` — passed; 27 passed, 0 failed
|
||||
- `cargo test -p manifest plugin -- --nocapture` — passed; 17 passed, 0 failed
|
||||
- `git diff --check` — passed
|
||||
|
||||
Cleanup:
|
||||
- Stopped Coder Pod `yoi-coder-00001KV5W3PJ3`.
|
||||
- Stopped Reviewer Pod `yoi-reviewer-00001KV5W3PJ3`.
|
||||
- Removed child worktree `/home/hare/Projects/yoi/.worktree/00001KV5W3PJ3-plugin-permission-grants`.
|
||||
- Deleted merged branch `impl/00001KV5W3PJ3-plugin-permission-grants`.
|
||||
|
||||
Root/original workspace promotion was not performed in this step; the completed work is integrated on the Orchestrator branch.
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"orch-plan-20260618-135757-1","ticket_id":"00001KVDETSN6","kind":"accepted_plan","accepted_plan":{"summary":"Panel startup latency の主 metric を user-visible dashboard content ready に置き直し、live-like fixture / expected dashboard snapshot / slow-source breakdown を追加し、必要な latency 改善を行う。first frame や単一 Ticket row readiness を主 evidence として扱わない。","branch":"impl/00001KVDETSN6-panel-dashboard-content-ready","worktree":"/home/hare/Projects/yoi/.worktree/00001KVDETSN6-panel-dashboard-content-ready","role_plan":"Orchestrator は専用 implementation worktree を作成し、Coder をその worktree への narrow write scope で起動する。既存 Plugin permission grants Coder とは主対象が異なり、Panel/E2E/TUI harness 側の変更として並行可能。Reviewer は実装報告後に read-only で確認する。"},"author":"yoi-orchestrator","at":"2026-06-18T13:57:57Z"}
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 'Panel startup latency をユーザー目線の dashboard content ready 基準で計測・改善する'
|
||||
state: 'queued'
|
||||
state: 'inprogress'
|
||||
created_at: '2026-06-18T13:30:51Z'
|
||||
updated_at: '2026-06-18T13:55:08Z'
|
||||
updated_at: '2026-06-18T14:46:51Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['panel', 'e2e', 'startup-latency', 'user-visible-readiness', 'dashboard-content', 'profiling']
|
||||
|
||||
@@ -13,4 +13,415 @@ LocalTicketBackend によって作成されました。
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-18T13:58:25Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: implementation_ready
|
||||
|
||||
Reason:
|
||||
- Panel Queue により、この Ticket は Orchestrator routing 対象として明示許可された。
|
||||
- 主目的は Panel startup latency の測定基準を、first frame / 単一 Ticket row readiness ではなく、ユーザー目線の dashboard content ready に揃えること。
|
||||
- 要件、非目標、validation、escalation 条件が実装可能な粒度で揃っており、残る不確実性は Panel/E2E/TUI harness 近傍の bounded implementation investigation に閉じる。
|
||||
- `depends_on` / incoming `blocks` の未解決 blocker は見当たらない。関連 Ticket は完了済みまたは context link として扱える。
|
||||
- 既存 in-progress Ticket `00001KV5W3PJ3` は Plugin permission grants 領域で、今回の主作業面は Panel startup/E2E/TUI harness 側のため、別 worktree での並行実装は conflict risk が低い。
|
||||
|
||||
Evidence checked:
|
||||
- Ticket `00001KVDETSN6` body/thread/artifacts via `TicketShow`。
|
||||
- `TicketRelationQuery(00001KVDETSN6)` の relation metadata: blocking acceptance blocker はなし。
|
||||
- `TicketOrchestrationPlanQuery(00001KVDETSN6)`: 既存 plan record はなし。今回 `accepted_plan` を記録済み。
|
||||
- 関連 Ticket `00001KV62PF32`, `00001KV5MRH6D`, `00001KV5D7MG5` の状態: done/closed context として確認。
|
||||
- Orchestrator worktree `/home/hare/Projects/yoi/.worktree/orchestration` の git state と既存 worktree/branch: matching implementation branch/worktree はなし。
|
||||
- Code map: `panel_ready`, `rows_rendered`, startup latency / fixture readiness 周辺の既存実装・テスト候補を grep で確認。
|
||||
- Visible Pods: 既存 Coder `yoi-coder-00001KV5W3PJ3` は別 Ticket 用。今回の worktree / branch / scope を分離できる。
|
||||
|
||||
IntentPacket:
|
||||
|
||||
Intent:
|
||||
- Panel startup latency の主な evidence を、ユーザーが dashboard として意味ある内容を見られる状態へ合わせる。
|
||||
- live-like fixture と expected dashboard content snapshot を使い、Ticket/Pod/claim など代表 dashboard data が描画・利用可能になるまでを測定できるようにする。
|
||||
- 測定結果から遅延源を分解し、必要な範囲で startup/readiness 改善を行う。
|
||||
|
||||
Binding decisions / invariants:
|
||||
- `panel_ready` や first frame は主 UX metric にしない。必要なら補助 metric として残す。
|
||||
- `rows_rendered`/単一 Ticket row readiness だけで dashboard content ready と見なさない。
|
||||
- E2E/fixture はユーザーに見える dashboard content を代表すること。空画面や trivial row だけの readiness は不可。
|
||||
- Panel は scheduler/backend ではなく local-file-first view である、という既存設計を変えない。
|
||||
- Mouse/input semantics や Panel queue/close/review workflow semantics をこの Ticket で広げない。
|
||||
- root/original workspace は操作せず、Orchestrator worktree から作成した child implementation worktree だけで実装する。
|
||||
|
||||
Requirements / acceptance criteria:
|
||||
- Dashboard content ready を測る fixture/test harness または equivalent な計測 surface が追加される。
|
||||
- Expected dashboard content snapshot / assertion があり、ユーザーに意味のある複数種の dashboard rows/data が ready 条件に含まれる。
|
||||
- Startup latency 出力に first frame と dashboard content ready の違い、または slow-source breakdown が分かる evidence がある。
|
||||
- 既存 Panel startup regression test / benchmark 相当が新しい基準に合わせて更新される。
|
||||
- 改善実装を入れる場合は、semantic shortcut ではなく実際の readiness path の遅延削減であること。
|
||||
|
||||
Implementation latitude:
|
||||
- 既存 Panel test/fixture structure を調査し、最小の fixture/harness 拡張で dashboard content ready を表現してよい。
|
||||
- Metric 名、structured output field 名、test helper の分割は既存コードに合わせてよい。
|
||||
- 遅延改善は、測定で見えた局所的な loading/readiness bottleneck に限定してよい。
|
||||
|
||||
Escalate if:
|
||||
- Panel architecture を scheduler/backend 化する必要が出る。
|
||||
- Dashboard ready の定義に product/UX 判断が必要な未記録の分岐がある。
|
||||
- Terminal/PTY 実 E2E の新規大規模設計が必要になる。
|
||||
- Existing Ticket lifecycle / queue semantics を変更しないと達成できない。
|
||||
|
||||
Validation:
|
||||
- Focused Panel startup / fixture / snapshot tests。
|
||||
- Relevant `cargo test` / `cargo check`。
|
||||
- `cargo fmt --check`。
|
||||
- `git diff --check`。
|
||||
- `nix build .#yoi` は dependency/Cargo.lock/package-source-filter 変更時のみ。
|
||||
|
||||
Current code map:
|
||||
- Panel startup metric / rows readiness / test fixtures around matches for `panel_ready`, `rows_rendered`, `startup latency`, dashboard fixture readiness.
|
||||
- Likely crates: `crates/tui` and related integration/E2E harness files.
|
||||
- Avoid unrelated Plugin permission grant worktree and root/original workspace.
|
||||
|
||||
Critical risks / reviewer focus:
|
||||
- Metric rename/additionが実際の UX readiness を測らず名前だけ変えていないか。
|
||||
- Fixture が live-like で、Ticket/Pod/claim など dashboard content を代表しているか。
|
||||
- Slow-source breakdown が regression triage に使える bounded output か。
|
||||
- Startup performance 改善が semantics を壊す shortcut ではないか。
|
||||
- Existing Panel behavior / queue semantics / row selection semantics を accidental に変更していないか。
|
||||
|
||||
Next action:
|
||||
- `queued -> inprogress` を記録し、Orchestrator worktree の tracked Ticket records を commit してから、専用 implementation worktree を作成し Coder Pod を narrow write scope で起動する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-18T13:58:33Z from: queued to: inprogress reason: orchestrator_acceptance_dashboard_content_ready field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Routing decision と accepted implementation plan を記録済み。Ticket body/thread、relations、OrchestrationPlan、関連 Ticket、Orchestrator worktree、visible Pods、既存 branch/worktree を確認し、blocking relation / conflict / missing planning decision は見つからなかった。Panel startup dashboard-content-ready work は既存 Plugin permission grants work と主対象が異なり、別 worktree/branch/scope で並行可能なため、implementation side effects の前に acceptance を記録する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-18T13:59:23Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Implementation start note:
|
||||
|
||||
`queued -> inprogress` acceptance、accepted plan の記録、Orchestrator worktree での Ticket record commit 後に、専用 implementation worktree と Coder Pod を起動した。
|
||||
|
||||
Worktree:
|
||||
- `/home/hare/Projects/yoi/.worktree/00001KVDETSN6-panel-dashboard-content-ready`
|
||||
- branch: `impl/00001KVDETSN6-panel-dashboard-content-ready`
|
||||
- base: Orchestrator branch commit `3b487944`
|
||||
|
||||
Coder Pod:
|
||||
- `yoi-coder-00001KVDETSN6`
|
||||
|
||||
Scope / boundaries:
|
||||
- child runtime workspace root は read scope。
|
||||
- implementation worktree は write scope。
|
||||
- root/original workspace と Orchestrator worktree へは書き込まないよう指示済み。
|
||||
- `.yoi/memory`、runtime/log/lock/local/secret-like `.yoi` paths は編集しないよう指示済み。
|
||||
|
||||
Next:
|
||||
- Coder は dashboard content ready metric / live-like fixture / slow-source breakdown / focused validation を実装し、commit と実装報告を返す予定。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-18T14:15:27Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder implementation report received:
|
||||
|
||||
Commit:
|
||||
- `fc1ee5bb` — `tui: measure panel dashboard readiness`
|
||||
|
||||
Summary:
|
||||
- Panel startup E2E に dashboard-content-ready metric を追加。
|
||||
- fixture に複数 Ticket、Pod metadata、Companion claim、orchestration overlay を追加。
|
||||
- Expected dashboard content snapshot / assertions を導入し、loading/partial/single-row では ready 判定しないようにした。
|
||||
- stdout JSON に `dashboard_content_ready`, `startup_readiness_checks`, `startup_sources` を追加。
|
||||
- source breakdown と render-source summary を追加。
|
||||
- startup regression test を first frame / single-row ではなく dashboard content ready basis に更新。
|
||||
- semantic shortcut ではなく expected dashboard row set と overlay/action/status を検証する readiness path として実装。
|
||||
|
||||
Files changed:
|
||||
- `crates/tui/tests/e2e/panel.rs`
|
||||
|
||||
Validation reported by Coder:
|
||||
- `cargo fmt --check`
|
||||
- `cargo test -p tui --test panel --features e2e -- --nocapture panel_startup_latency_e2e_reports_content_ready_after_rows`
|
||||
- `cargo test -p tui --test panel --features e2e -- --nocapture panel_startup_latency_e2e_fails_if_expected_dashboard_content_is_missing`
|
||||
- `cargo test -p tui --test panel --features e2e -- --nocapture panel_startup_latency_e2e_fails_if_orchestration_overlay_is_missing`
|
||||
- `cargo check -p tui`
|
||||
- `git diff --check`
|
||||
|
||||
Measured evidence reported by Coder:
|
||||
- passing content-ready run:
|
||||
- `panel_ready_ms`: 39
|
||||
- `row_ready_ms`: 140
|
||||
- `dashboard_content_ready_ms`: 140
|
||||
- negative fixtures fail as expected for missing expected dashboard content / missing orchestration overlay。
|
||||
|
||||
Orchestrator evidence checked:
|
||||
- Pod output を確認。
|
||||
- implementation worktree は clean。
|
||||
- commit `fc1ee5bb` が branch `impl/00001KVDETSN6-panel-dashboard-content-ready` の HEAD。
|
||||
- diff stat: `crates/tui/tests/e2e/panel.rs` に 385 insertions / 34 deletions。
|
||||
|
||||
Routing classification: review_needed
|
||||
|
||||
Next action:
|
||||
- recorded intent / invariants / acceptance criteria に照らして、read-only Reviewer Pod で外部レビューする。
|
||||
- 特に dashboard content ready が名前だけの metric ではないこと、fixture が live-like な representative dashboard content を検証していること、single-row readiness だけでは通らないこと、negative fixtures が有効であること、Panel semantics を accidental に変更していないことを確認する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: yoi-orchestrator at: 2026-06-18T14:16:26Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Review dispatch:
|
||||
|
||||
Reviewer Pod `yoi-reviewer-00001KVDETSN6` を read-only scope で起動した。
|
||||
|
||||
Review target:
|
||||
- worktree: `/home/hare/Projects/yoi/.worktree/00001KVDETSN6-panel-dashboard-content-ready`
|
||||
- branch: `impl/00001KVDETSN6-panel-dashboard-content-ready`
|
||||
- commit: `fc1ee5bb`
|
||||
|
||||
Reviewer focus:
|
||||
- recorded intent / invariants / acceptance criteria に対する適合性。
|
||||
- `dashboard_content_ready` が名前だけの metric ではなく、代表 dashboard content の expected row/content set に基づくこと。
|
||||
- first frame / single-row readiness だけでは主 E2E が通らないこと。
|
||||
- missing dashboard content / missing orchestration overlay の negative fixtures が意味を持つこと。
|
||||
- startup source breakdown が bounded で regression triage に使えること。
|
||||
- Existing Panel behavior / workflow semantics を accidental に変更していないこと。
|
||||
|
||||
Next:
|
||||
- Reviewer output を確認し、approve なら Ticket review に記録して merge-ready 判断へ進む。request_changes なら Coder に修正依頼する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVDETSN6 at: 2026-06-18T14:20:21Z status: request_changes -->
|
||||
|
||||
## Review: request changes
|
||||
|
||||
Review result: request_changes
|
||||
|
||||
対象:
|
||||
- Ticket: `00001KVDETSN6`
|
||||
- branch: `impl/00001KVDETSN6-panel-dashboard-content-ready`
|
||||
- commit: `fc1ee5bb` (`tui: measure panel dashboard readiness`)
|
||||
|
||||
Blockers:
|
||||
|
||||
1. Dashboard content readiness が required Companion / Orchestrator / orchestration overlay content を含んでいない。
|
||||
- fixture は 2 件の Ticket と `workspace` / `workspace-orchestrator` の Pod metadata だけを作っている。
|
||||
- expected dashboard content は ready Ticket、planning Ticket、Pod name `workspace` のみ。
|
||||
- orchestration worktree/overlay fixture setup、expected overlay state、Companion/Orchestrator status assertion が `dashboard_content_ready` に含まれていない。
|
||||
- Ticket acceptance criteria の Ticket / Pod / Companion / Orchestrator / overlay elements を代表する expected dashboard snapshot に不足がある。
|
||||
|
||||
2. Wrong / missing action labels が readiness を通過できる。
|
||||
- `ExpectedPanelTicketRow::matches` は row kind、id、title、status のみを確認している。
|
||||
- `ExpectedDashboardContent` は `tickets` と `pod_names` のみ。
|
||||
- main E2E は ready/planning/pod categories を確認するが、`actionable_rows > 0` や specific action labels を確認していない。
|
||||
- acceptance では missing action label / wrong action が失敗することを求めている。
|
||||
|
||||
3. Missing overlay / missing action / wrong state の committed negative fixtures がない。
|
||||
- 既存 negative test は単一 ticket matcher の wrong title / wrong kind に限られる。
|
||||
- missing row、wrong state、missing overlay、missing action label が dashboard readiness を失敗させることを示す test/fixture が必要。
|
||||
|
||||
4. emitted `dashboard_content_ready` event が broad category gate のまま。
|
||||
- runtime readiness predicate は `ticket_configured && ready_ticket_rows > 0 && planning_ticket_rows > 0 && pod_rows > 0` 程度。
|
||||
- harness 側 expected filter により現在の test では first-frame/single-ticket passing を防いでいるが、event 名自体は overlay/action/header content を検証せず emit され得る。
|
||||
- main/exported metric として誤用されやすく、Ticket の expected dashboard snapshot 定義より弱い。
|
||||
|
||||
5. Slow-source breakdown が requested attribution には粗い。
|
||||
- 追加 source は pod list、companion presence/lifecycle、ticket config、orchestrator presence/lifecycle、`workspace_panel.build` など。
|
||||
- Ticket は Ticket scan/parsing、orchestration overlay validation/read、Pod metadata scan、socket/status probing、role claim scan、git worktree/branch checks の attribution を求めている。
|
||||
- overlay/role/ticket parsing/git checks が `workspace_panel.build` に lump されており、live-latency source の診断には不足。
|
||||
|
||||
Positive evidence:
|
||||
- main startup test は `dashboard_content_ready` を待つ形に変更され、`panel_ready` や単一 ready Ticket row だけではない。
|
||||
- current main E2E は expected fixture Tickets と expected Pod name を要求するため、first frame / single Ticket row だけでは通らない。
|
||||
- diff は E2E instrumentation / harness/tests に閉じており、queue/close/review workflow semantic changes は見当たらない。
|
||||
- Reviewer は `git diff --check fc1ee5bb^..fc1ee5bb` を実行し、成功を確認した。
|
||||
|
||||
Requested changes:
|
||||
- expected dashboard content に action labels / disabled reasons を追加する。
|
||||
- Companion / Orchestrator status と orchestration overlay state の fixture support と assertions を追加する。
|
||||
- missing row、wrong state、missing overlay、missing action label の negative tests/fixtures を追加する。
|
||||
- `dashboard_content_ready` event 自体が complete snapshot semantics を carry/validate する、または exported/main metric が broad category gate と誤解されない形にする。
|
||||
- source breakdown を、少なくとも ticket scan/parsing、overlay validation/read/git checks、pod metadata/status probing、local claim scan が見える程度に分割する。省略する場合は明確な non-action rationale を記録する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: yoi-orchestrator at: 2026-06-18T14:20:54Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Review follow-up dispatch:
|
||||
|
||||
Reviewer `yoi-reviewer-00001KVDETSN6` は `request_changes` を返したため、Ticket review として記録し、既存 Coder Pod `yoi-coder-00001KVDETSN6` に修正依頼を送った。
|
||||
|
||||
Coder に依頼した主な修正:
|
||||
- dashboard content readiness に Companion / Orchestrator / orchestration overlay state を含める。
|
||||
- expected dashboard content に action labels / disabled reasons 相当を含め、wrong/missing action が readiness を通らないようにする。
|
||||
- missing row、wrong state、missing overlay、missing action label の negative tests/fixtures を追加する。
|
||||
- `dashboard_content_ready` event / exported main metric が broad category gate と誤解されないよう、complete snapshot semantics を carry/validate するか内部 gate と分離する。
|
||||
- slow-source breakdown を ticket scan/parsing、overlay validation/read/git checks、pod metadata/status probing、local claim scan などに分割する。広い設計変更なしに観測できない source は明確な non-action rationale として報告する。
|
||||
|
||||
Next:
|
||||
- Coder の修正 commit / validation report を待つ。
|
||||
- 修正後、必要に応じて同じ review focus で再レビューする。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-18T14:41:45Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder review-fix implementation report received:
|
||||
|
||||
Incremental fix commit:
|
||||
- `5870251b` — `tui: tighten panel dashboard readiness`
|
||||
|
||||
Summary:
|
||||
- `dashboard_content_ready` を broad category gate から、full dashboard snapshot を carry/validate する readiness に強化。
|
||||
- Snapshot/header assertions を追加。
|
||||
- Companion status
|
||||
- Orchestrator status
|
||||
- orchestration overlay state
|
||||
- Ticket action labels
|
||||
- disabled reasons
|
||||
- local / overlay Ticket states
|
||||
- E2E fixture を real git/orchestration worktree overlay を作る形に更新。
|
||||
- local ready Ticket は `ready` のまま。
|
||||
- orchestration overlay 側で同 Ticket を `inprogress` に進める。
|
||||
- visible `ready→prog` row と `Wait` action を期待する。
|
||||
- negative coverage を追加。
|
||||
- missing expected row
|
||||
- wrong state
|
||||
- missing overlay
|
||||
- missing action label
|
||||
- source breakdown attribution を拡張。
|
||||
- `pod_metadata_status_probe.initial`
|
||||
- `ticket_config_probe`
|
||||
- `ticket_config_parse`
|
||||
- `orchestration_overlay_validation_read_git`
|
||||
- `ticket_scan_parse`
|
||||
- `local_claim_scan`
|
||||
- `pod_row_materialization`
|
||||
- `workspace_panel.build.total`
|
||||
|
||||
Files changed in incremental fix:
|
||||
- `crates/tui/src/multi_pod.rs`
|
||||
- `crates/tui/src/workspace_panel.rs`
|
||||
- `tests/e2e/src/lib.rs`
|
||||
- `tests/e2e/tests/panel.rs`
|
||||
|
||||
Coder reported no blockers/escalations.
|
||||
|
||||
Orchestrator evidence checked:
|
||||
- Pod output を確認。
|
||||
- implementation worktree は clean。
|
||||
- branch `impl/00001KVDETSN6-panel-dashboard-content-ready` HEAD は `5870251b`。
|
||||
- incremental diff stat from `fc1ee5bb..5870251b`: 4 files changed, 709 insertions, 65 deletions。
|
||||
- `git diff --check fc1ee5bb..HEAD` passed。
|
||||
|
||||
Validation re-run by Orchestrator in implementation worktree:
|
||||
- `cargo fmt --check` — passed
|
||||
- `cargo check -p tui --features e2e-test` — passed
|
||||
- `cargo test -p yoi-e2e --features e2e --test panel` — passed; 7 passed, 0 failed
|
||||
- `git diff --check` — passed
|
||||
|
||||
Routing classification: review_needed
|
||||
|
||||
Next action:
|
||||
- previous `request_changes` blockers が解消されたか、read-only Reviewer Pod で再レビューする。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: yoi-orchestrator at: 2026-06-18T14:42:24Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Review re-dispatch:
|
||||
|
||||
Reviewer Pod `yoi-reviewer-00001KVDETSN6-r2` を read-only scope で起動した。
|
||||
|
||||
Review target:
|
||||
- worktree: `/home/hare/Projects/yoi/.worktree/00001KVDETSN6-panel-dashboard-content-ready`
|
||||
- branch: `impl/00001KVDETSN6-panel-dashboard-content-ready`
|
||||
- commits:
|
||||
- `fc1ee5bb` — initial implementation
|
||||
- `5870251b` — review-fix implementation
|
||||
|
||||
Reviewer focus:
|
||||
- previous `request_changes` blockers が解消されているか。
|
||||
- final `dashboard_content_ready` が Ticket / Pod / Companion / Orchestrator / overlay elements を含む expected dashboard snapshot semantics を持つか。
|
||||
- first-frame / single-row readiness だけで main metric が通らないか。
|
||||
- missing row / wrong state / missing overlay / missing action label の negative tests が意味を持つか。
|
||||
- slow-source breakdown が bounded かつ診断可能か。
|
||||
- Panel workflow semantics を accidental に変更していないか。
|
||||
|
||||
Next:
|
||||
- Reviewer output を確認し、approve なら merge/validation/close-ready 処理へ進む。request_changes なら blocker を記録して Coder に戻す。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVDETSN6-r2 at: 2026-06-18T14:46:51Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
Review result: approve
|
||||
|
||||
対象:
|
||||
- Ticket: `00001KVDETSN6`
|
||||
- branch: `impl/00001KVDETSN6-panel-dashboard-content-ready`
|
||||
- commits:
|
||||
- `fc1ee5bb` — `tui: measure panel dashboard readiness`
|
||||
- `5870251b` — `tui: tighten panel dashboard readiness`
|
||||
|
||||
No remaining blockers found.
|
||||
|
||||
Evidence reviewed:
|
||||
- `dashboard_content_ready` は broad readiness timestamp ではなく、rendered dashboard snapshot を carry するようになっている。
|
||||
- `crates/tui/src/multi_pod.rs` の `PanelE2eDashboardContentReady` が `header`, `rows`, `source_breakdown` を持つ。
|
||||
- rendered Ticket rows は `action`, `disabled_reason`, `local_state`, `orchestration_overlay_state` を含み、Ticket / Pod / Companion / Orchestrator / overlay-visible content の validation basis になっている。
|
||||
- main E2E readiness wait は first-frame / single-row readiness では通らない。
|
||||
- `panel_e2e_dashboard_content_is_ready` が header content、ready/planning/pod categories、action/disabled/overlay fields を含む Ticket rows を要求する。
|
||||
- test harness は emitted snapshot を `ExpectedDashboardContent` と照合するため、wrong visible content は metric を満たさない。
|
||||
- Companion / Orchestrator / overlay content が coverage に含まれている。
|
||||
- `tests/e2e/tests/panel.rs` が `companion_status`, `orchestrator_status`, overlay state, local state, action label, disabled reason を assert する。
|
||||
- `tests/e2e/src/lib.rs` が real orchestration worktree overlay を作成し、local state は `ready` のまま overlay state を `inprogress` に進め、visible `ready→prog` / `Wait` row を期待している。
|
||||
- Negative coverage は meaningful。
|
||||
- missing expected row、wrong state、missing overlay state、missing action label が `snapshot_for_expected` を失敗させる。
|
||||
- wrong action labels は `ExpectedPanelTicketRow::matches` が `action` equality を見るため reject される。
|
||||
- Slow-source breakdown は改善され、bounded。
|
||||
- initial pod metadata/status probing、ticket config probe/parse、orchestration overlay validation/read/git checks、ticket scan/parse、local claim scan、pod row materialization、total workspace panel build が区別されている。
|
||||
- `workspace_panel.build.total` は additive component ではなく enclosing total であることが naming から分かる。
|
||||
- Panel semantics は preserved と判断。
|
||||
- local-ready / overlay-inprogress の場合に disabled `Wait` action になり、stale local state から queue しない。
|
||||
- planning rows は expected disabled reason 付き `Clarify` を維持。
|
||||
- 新しい assertions は intended user-visible dashboard content/action labels に結びついており、incidental layout/terminal formatting には依存していない。
|
||||
|
||||
Reviewer validation:
|
||||
- final branch と `fc1ee5bb..5870251b` focus areas の static review。
|
||||
- read-only git/worktree inspection。
|
||||
- `git diff --check` over reviewed commits — passed。
|
||||
|
||||
Orchestrator validation already confirmed:
|
||||
- `cargo fmt --check` — passed
|
||||
- `cargo check -p tui --features e2e-test` — passed
|
||||
- `cargo test -p yoi-e2e --features e2e --test panel` — passed
|
||||
- `git diff --check` — passed
|
||||
|
||||
Conclusion:
|
||||
- Previous request_changes blockers are resolved.
|
||||
- Implementation satisfies the recorded Ticket acceptance criteria and is ready for merge/validation in the Orchestrator worktree.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user