ticket: record coder reports and intake refinement
This commit is contained in:
parent
2bd4e43eaa
commit
7b80a9b69c
13
.yoi/tickets/20260608-061235-001/artifacts/relations.json
Normal file
13
.yoi/tickets/20260608-061235-001/artifacts/relations.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"version": 1,
|
||||
"relations": [
|
||||
{
|
||||
"ticket_id": "20260608-061235-001",
|
||||
"kind": "depends_on",
|
||||
"target": "20260607-035710-001",
|
||||
"note": "この Ticket の残り範囲は、既に closed 済みの OrchestrationPlan record/tool surface を前提にした re-kick / active work set discovery 層として扱う。Plan store 自体を再実装しないための canonical prerequisite 記録。",
|
||||
"author": "intake",
|
||||
"at": "2026-06-09T11:34:44Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: "Prevent idle starvation in Ticket orchestration planning"
|
||||
state: "planning"
|
||||
state: 'ready'
|
||||
created_at: "2026-06-08T06:12:35Z"
|
||||
updated_at: "2026-06-08T06:27:33Z"
|
||||
updated_at: '2026-06-09T11:35:29Z'
|
||||
---
|
||||
|
||||
## Background
|
||||
|
|
|
|||
|
|
@ -48,3 +48,73 @@ This Ticket assumes that behavior exists and builds the `new_queued` / `planned_
|
|||
Therefore, the OrchestrationPlan/re-kick layer should not introduce its own separate `preflight_needed` bucket or cleanup logic.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: intake at: 2026-06-09T11:35:09Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
## Intake refinement: ready scope for Orchestrator routing
|
||||
|
||||
既存 Ticket の本文と thread を確認し、関連 work と現在の Ticket lifecycle vocabulary に合わせて、残りの実装対象を以下に整理する。
|
||||
|
||||
### Scope after related work
|
||||
|
||||
- この Ticket は、Orchestrator が `queued` work を見落とさず、かつ active work を待っている最中に無駄な再 kick を繰り返さないための **active work set discovery / re-kick policy** を実装対象にする。
|
||||
- OrchestrationPlan record/tool surface は既に別 Ticket で実装済みの前提として扱い、この Ticket で plan store 自体を再実装しない。
|
||||
- 既存本文・thread の `workflow_state` という語は現在 schema の authoritative field ではない。実装では Ticket frontmatter の `state` を authority とし、既存記録中の `workflow_state = queued` などは historical wording / conceptual alias として読む。
|
||||
|
||||
### Binding decisions / invariants
|
||||
|
||||
- `new_queued` / `planned_queued` / `inprogress` は新しい core Ticket state として追加しない。必要な work-set classification は、現在の Ticket `state`、OrchestrationPlan records、role/session claim、visible Pod/worktree state から導出する。
|
||||
- `queued` は Orchestrator が routing/start-if-unblocked を検討できる状態であり、implementation side effects は必ず `queued -> inprogress` が記録された後に限る。
|
||||
- Panel や local lifecycle hook が Orchestrator に attention / kick を与えることはできるが、unattended scheduler loop や常時 polling にはしない。
|
||||
- Orchestrator が active coder/reviewer/preflight/merge/cleanup 等の完了待ちである間は、queued/planned work が存在するだけでは再 kick しない。
|
||||
- `planned_queued` work を開始しない理由が capacity / dependency / conflict / dirty workspace 等で説明できる場合は、bounded reason を OrchestrationPlan record または既存の適切な durable artifact に残し、Panel/user が理解できるようにする。
|
||||
- duplicate start を避けるため、Ticket state、role/session claims、Plan records、visible Pod/worktree state を確認してから attention/kick/acceptance を行う。
|
||||
|
||||
### Implementation latitude
|
||||
|
||||
- どの runtime/panel boundary で idle Orchestrator を検出して kick するか、どの view-model/helper に work-set derivation を置くか、bounded payload の具体形は実装側で選んでよい。
|
||||
- 既存 OrchestrationPlan types で waiting/capacity reason が足りない場合、最小の typed extension は検討してよい。ただし core Ticket lifecycle state の増殖や旧 `workflow_state` 復活は避ける。
|
||||
- Panel 表示は state-first / heuristic-free の原則を維持する。title text、labels、thread event の有無、Pod 名 substrings を lifecycle authority にしない。
|
||||
|
||||
### Acceptance criteria
|
||||
|
||||
- Orchestrator が idle/not occupied のとき、new queued work を検出して plan incorporation または bounded work-list attention に進める。
|
||||
- Inprogress work が存在せず、planned queued work が unblocked かつ capacity/policy 上開始可能なとき、Orchestrator が次の acceptance/routing を行える。
|
||||
- Active inprogress operation の完了待ち中は、queued/planned work の存在だけで再 kick しない。
|
||||
- 開始しない planned queued work には、ユーザーが確認できる bounded waiting/blocking reason が残る。
|
||||
- 既存の human gate、`queued -> inprogress` acceptance step、dirty-workspace/dependency/conflict/capacity checks を迂回しない。
|
||||
- duplicate Orchestrator/coder/reviewer/worktree start を起こさない。
|
||||
|
||||
### Validation
|
||||
|
||||
- `nix build .#yoi` を通す。
|
||||
- Ticket / panel / orchestrator routing 周辺の既存テストまたは追加テストで、少なくとも idle queued detection、active-work wait suppression、waiting reason recording、duplicate-start prevention の主要分岐を確認する。
|
||||
- 実装報告では、どの authority を work-set classification に使ったか、implementation side effects が `queued -> inprogress` 後に限定されていることを明示する。
|
||||
|
||||
### Readiness
|
||||
|
||||
- readiness: implementation_ready
|
||||
- risk_flags: [orchestration-policy, panel-lifecycle, persistence, role-session, authority-boundary, duplicate-start]
|
||||
- blocking open questions: none
|
||||
|
||||
この refinement により、Orchestrator はこの Ticket を implementation candidate として routing できる。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: intake_summary author: intake at: 2026-06-09T11:35:29Z -->
|
||||
|
||||
## Intake summary
|
||||
|
||||
Ticket 20260608-061235-001 は implementation_ready。残り範囲は既に実装済みの OrchestrationPlan record/tool surface を前提にした active work set discovery / Orchestrator re-kick policy。`new_queued` / `planned_queued` / `inprogress` は新しい core Ticket state ではなく、現在の Ticket `state`、OrchestrationPlan records、role/session claims、visible Pod/worktree state から導出する分類として扱う。Panel/lifecycle hook は idle Orchestrator に bounded attention を与えるが、unattended scheduler loop や常時 polling にはしない。`queued -> inprogress` acceptance 前の implementation side effects、blind spawn、duplicate start は禁止。active coder/reviewer/preflight/merge/cleanup 待ち中は queued/planned work の存在だけで re-kick しない。risk_flags: [orchestration-policy, panel-lifecycle, persistence, role-session, authority-boundary, duplicate-start]。blocking open questions はない。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: intake at: 2026-06-09T11:35:29Z from: planning to: ready reason: intake_ready field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Intake refinement により、既存の plan store 実装との差分、current `state` vocabulary、binding invariants、implementation latitude、validation focus が整理され、Orchestrator が routing できる状態になった。
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
title: 'Profile feature flagsでtool surfaceを制御する'
|
||||
state: 'inprogress'
|
||||
created_at: '2026-06-09T08:22:09Z'
|
||||
updated_at: '2026-06-09T11:31:52Z'
|
||||
updated_at: '2026-06-09T12:05:22Z'
|
||||
assignee: null
|
||||
queued_by: 'workspace-panel'
|
||||
queued_at: '2026-06-09T10:31:11Z'
|
||||
|
|
|
|||
|
|
@ -116,3 +116,29 @@ Parallel-routing rationale:
|
|||
- It is expected to have only small/manageable overlap with the Ticket schema field cleanup running in parallel.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: coder at: 2026-06-09T12:05:22Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Implemented Profile feature flags for built-in tool-surface registration.
|
||||
|
||||
Summary:
|
||||
- Added resolved `feature` config with explicit flags for `task`, `memory`, `web`, `pod_management`, `ticket`, and `ticket_orchestration` plus Ticket `access = "read_only" | "lifecycle"`.
|
||||
- Changed controller registration so optional built-in surfaces are registered only when enabled by Profile/config; core filesystem/process tools remain static and scope-gated.
|
||||
- Kept safety boundaries: web tools still fail closed under web config, memory feature requires `[memory]`, pod-management feature requires non-empty delegation scope, Ticket tools still use backend host authority.
|
||||
- Split Ticket base and orchestration tool declarations so Ticket orchestration can be surfaced independently.
|
||||
- Migrated project role profiles and builtin default profile to explicit feature settings.
|
||||
|
||||
Validation passed:
|
||||
- `cargo test -p manifest feature --lib`
|
||||
- `cargo test -p pod feature --tests`
|
||||
- `cargo test -p pod pod_management_feature_requires_delegation_scope --test controller_test`
|
||||
- `cargo test -p tools --test integration`
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check`
|
||||
- `cargo run -q -p yoi -- ticket doctor`
|
||||
- `cargo check --workspace`
|
||||
- `nix build .#yoi`
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
title: 'action_requiredとattention_requiredをTicket schemaから削除する'
|
||||
state: 'inprogress'
|
||||
created_at: '2026-06-09T09:55:18Z'
|
||||
updated_at: '2026-06-09T11:31:52Z'
|
||||
updated_at: '2026-06-09T12:04:53Z'
|
||||
assignee: null
|
||||
queued_by: 'workspace-panel'
|
||||
queued_at: '2026-06-09T10:11:38Z'
|
||||
|
|
|
|||
|
|
@ -142,3 +142,30 @@ Parallel-routing rationale:
|
|||
- It is expected to have only small/manageable overlap with Profile feature-flag work.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: coder at: 2026-06-09T12:04:53Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Implemented removal of `action_required` and `attention_required` from current Ticket schema/tool/API/panel behavior.
|
||||
|
||||
Summary:
|
||||
- Removed both fields from `NewTicket`, parsed/public metadata structs, list/show JSON output, TicketCreate params/schema, CLI list hints, and workspace panel row state.
|
||||
- Removed Panel ready-ticket blocker and safe-close guards that depended on those fields; relation blockers continue to block via existing relation metadata.
|
||||
- Added doctor obsolete-frontmatter diagnostics for both fields and updated focused tests to assert new writes/schema/output omit them.
|
||||
- Updated maintained Intake/Orchestrator workflow guidance and development routing classification text away from the obsolete fields.
|
||||
- Checked local `.yoi/tickets/**/item.md` frontmatter: no `action_required` or `attention_required` entries were present, so no non-null current values required migration or replacement.
|
||||
|
||||
Validation:
|
||||
- `cargo test -p ticket`
|
||||
- `cargo test -p tui workspace_panel`
|
||||
- `cargo test -p tui ticket_close_action`
|
||||
- `cargo test -p yoi ticket`
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check`
|
||||
- `cargo run -q -p yoi -- ticket doctor`
|
||||
- `cargo check --workspace`
|
||||
- frontmatter grep/awk check for `.yoi/tickets/*/item.md`
|
||||
- `nix build .#yoi`
|
||||
|
||||
---
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user