7.8 KiB
7.8 KiB
作成
LocalTicketBackend によって作成されました。
Intake summary
Marked ready by yoi ticket state.
State changed
Marked ready by yoi ticket state.
State changed
Ticket を workspace-panel が queued にしました。
Decision
Routing decision: implementation_ready
Reason:
- Dashboard Queue により人間が Orchestrator routing を許可した queued Ticket として確認した。
00001KVXK0WDQは Service lifecycle / ingress queue runtime の concrete slice で、WebSocket driver、output command model、WIT/PDK/templates update を non-goal として後続に分離している。- outgoing
depends_onは00001KVXK0WDHだが、00001KVXK0WDHは done / merged / reviewed / validated 済み。TicketShowderived blockers は空で、implementation acceptance blocker は残っていない。 - incoming dependents (
00001KVXK0WDX,00001KVXK0WE4) はこの Ticket 完了後に進めるべき後続であり、この Ticket の acceptance blocker ではない。 - bounded context check で
crates/pod/src/feature/plugin.rsの currentPluginInstanceRegistry,PluginInstanceHandle,PluginIngressEvent,PluginIngressDispatchReport,ComponentInstanceRuntimelifecycle methods を確認した。Ticket は in-process service lifecycle / bounded ingress queue / serial dispatch / diagnostics に収まっており、残る不確実性は local implementation に閉じる。
Evidence checked:
- Ticket body / thread:
item.md,thread.md。未解決 planning question は記録されていない。 - Relations / orchestration plan: outgoing depends_on
00001KVXK0WDHは done。routing 前 plan は historical blocked_by00001KVXK0WDHのみで、prerequisite 完了により解消済み。accepted planorch-plan-20260624-212209-2を記録済み。 - Related Tickets:
00001KVXK0WD3/00001KVXK0WDHは done。 - Code context:
crates/pod/src/feature/plugin.rsの service/ingress registration, instance registry, start/status/stop/handle-ingress, component runtime tests。 - Workspace state:
/home/hare/Projects/yoi/.worktree/orchestrationは clean。inprogress Ticket は 0 件。
IntentPacket:
Intent:
- Plugin Service を host-managed lifecycle と bounded ingress queue を持つ in-process runtime として扱い、
start()を initialization-only にし、後続 ingress events を queue 経由で serial dispatch できるようにする。
Binding decisions / invariants:
- Existing Tool Plugin execution は request-response operation として維持し、service queue に巻き込まない。
- v0 dispatch は per-plugin serial dispatch。concurrent per-plugin event execution は non-goal。
- Queue は bounded。full / timeout / failed service / stop 中 event / invalid event は typed error / diagnostic として扱う。
start()は long-running loop / polling loop / recv loop を担わない。- Durable cross-process event queue は non-goal。まず host-managed in-process queue/lifecycle として実装する。
- WebSocket driver と output command model は後続 Tickets (
00001KVXK0WE4,00001KVXK0WDX) に残す。 - Component Model-only runtime authority and manifest rejection from prerequisites must not regress.
Requirements / acceptance criteria:
- Service Plugin instance が ready/starting/running/stopping/stopped/failed 相当の lifecycle state を持つ。
start()return 後も ingress event を queue 経由で配送できる。- Ingress event has source / ingress name / payload / created_at / attempt / correlation id.
- Queue depth / lifecycle state / last error / dispatch counters are visible in status diagnostics.
- Unit tests cover lifecycle start/stop/failure, bounded queue full, serial dispatch, timeout/failure diagnostics, stop-time event rejection, Tool execution regression.
cargo test -p pod,cargo check -p yoi,git diff --check,nix build .#yoi --no-linkare validation targets.
Implementation latitude:
- Choose exact structs/enums/names and whether queue processing is sync-step driven or background worker, as long as start returns promptly and dispatch remains host-managed/serial.
- Existing
PluginInstanceRegistrymay be extended or refactored if authority boundaries remain clear. - Tests may use existing
test-ingressruntime or focused component fixtures.
Escalate if:
- Implementation requires durable cross-process queue or scheduler semantics.
- WebSocket driver or output command model must be implemented to make lifecycle tests pass.
- Component Tool execution has to be routed through service queue.
- Host API grant/runtime authority or Component Model manifest behavior needs redesign.
Validation:
cargo test -p podcargo check -p yoigit diff --checknix build .#yoi --no-link- Focused tests for service lifecycle/queue may be run during development.
Current code map:
- Primary:
crates/pod/src/feature/plugin.rs。 - Secondary only if needed: manifest service/ingress declarations and docs comments.
- Avoid: WebSocket driver, output command model, WIT/PDK/templates event update, remote runtime protocol, durable cross-process queue.
Critical risks / reviewer focus:
- accidentally making Service runtime a scheduler/durable queue.
- Tool execution regression or Tool path accidentally using Service queue.
- unbounded queue or hidden background loop.
- missing stop/failure/timeout diagnostics.
- scope creep into WebSocket/output commands/WIT-PDK.
Next action:
queued -> inprogressを記録してから worktree-workflow で/home/hare/Projects/yoi/.worktree/00001KVXK0WDQ-plugin-service-lifecycleを作成し、multi-agent-workflow で Coder/Reviewer sibling loop に進める。
State changed
Orchestrator acceptance: queued -> inprogress
- 直前確認で
TicketShowは statequeued、derived blockers は空。 - outgoing dependency
00001KVXK0WDHは done / merged / reviewed / validated 済み。 - accepted plan
orch-plan-20260624-212209-2を確認した。 - routing decision と IntentPacket は Ticket thread に記録済み。
- これ以降に worktree-workflow で
/home/hare/Projects/yoi/.worktree/00001KVXK0WDQ-plugin-service-lifecycleを作成し、multi-agent-workflow に接続する。
Implementation report
Implementation orchestration update:
- prerequisite
00001KVXK0WDHが done になったため、00001KVXK0WDQを再 routing して受理した。 - worktree-workflow に従い、implementation worktree
/home/hare/Projects/yoi/.worktree/00001KVXK0WDQ-plugin-service-lifecycleと branchwork/00001KVXK0WDQ-plugin-service-lifecycleを作成した。 - child worktree では tracked
.yoiproject records を見える状態にし、.yoi/memory、local/runtime/log/lock/secret-like.yoipaths を sparse-checkout で除外する方針にした。 - Coder Pod
yoi-coder-00001KVXK0WDQ-service-lifecycleを sibling として起動した。write scope は child worktree に限定し、runtime workspace root/home/hare/Projects/yoiは startup 要件を満たすため non-recursive read のみにした。 - Coder には root/original workspace と orchestration worktree で read/write/validation/git operation を行わないよう明示した。