merge: simplify ticket identity fields
# Conflicts: # .yoi/tickets/20260607-020215-001/item.md # .yoi/tickets/20260607-020215-001/thread.md # .yoi/tickets/20260608-072732-001/item.md # .yoi/tickets/20260608-110940-001/item.md # .yoi/tickets/20260608-125430-001/item.md # .yoi/tickets/closed/20260607-020215-workspace-panel-orchestrator-queue-automation/item.md # .yoi/tickets/closed/20260607-020215-workspace-panel-orchestrator-queue-automation/thread.md # .yoi/tickets/open/20260607-020215-workspace-panel-orchestrator-queue-automation/item.md # .yoi/tickets/open/20260607-020215-workspace-panel-orchestrator-queue-automation/thread.md
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: "Define Objective records for medium-term goals"
|
||||
state: "queued"
|
||||
created_at: "2026-06-08T12:54:30Z"
|
||||
updated_at: "2026-06-09T02:28:14Z"
|
||||
queued_by: "workspace-panel"
|
||||
queued_at: "2026-06-09T02:27:33Z"
|
||||
---
|
||||
|
||||
## Background
|
||||
|
||||
Tickets are settling into a concrete implementation/work-item unit: Intake/Planning shapes user intent into Tickets that can be implemented, reviewed, and completed. Parent/child Ticket relationships are useful for decomposition, but they are not sufficient for medium-term strategic context.
|
||||
|
||||
Some work needs a separate record for the goal, motivation, strategy, success criteria, and decision context that spans multiple Tickets without turning the Ticket hierarchy into a roadmap/project-management system.
|
||||
|
||||
Use the term `Objective` for this concept. `Project` is too broad, and `Initiative` feels too business/process-heavy.
|
||||
|
||||
## Goal
|
||||
|
||||
Design a lightweight `Objective` record type for medium-term goals that can group and contextualize multiple Tickets while keeping Tickets focused on implementable work items.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Define `Objective` as a first-class project record distinct from Ticket.
|
||||
- Objective: medium-term goal, motivation, strategy, success criteria, and decision context.
|
||||
- Ticket: implementable work item shaped by Intake/Planning.
|
||||
- OrchestrationPlan: current execution plan for queued/in-progress work.
|
||||
- Keep Objectives lightweight and Markdown-oriented initially.
|
||||
- Avoid building a full roadmap/project-management system in the first version.
|
||||
- Prefer a simple local file backend under a clear `.yoi/` path.
|
||||
- An Objective should be able to record at least:
|
||||
- title;
|
||||
- goal statement;
|
||||
- motivation/background;
|
||||
- strategy or design direction;
|
||||
- success criteria / exit conditions;
|
||||
- linked Tickets;
|
||||
- important decisions or pivots;
|
||||
- current state such as active/paused/done, if useful.
|
||||
- Tickets should be able to reference an Objective or be listed under it.
|
||||
- The relation should not replace Ticket dependency/blocking metadata.
|
||||
- A Ticket can belong to an Objective without depending on every other Ticket in that Objective.
|
||||
- Orchestrator/Intake/Planning should be able to use Objective context when shaping or routing Tickets.
|
||||
- Objective context should help answer “why this direction?” and “what judgment criteria apply?”
|
||||
- It should not allow agents to skip reading the actual Ticket body/thread before implementation decisions.
|
||||
- Panel/CLI should eventually be able to show Objective context and linked Tickets, but first design can focus on record shape and workflow semantics.
|
||||
- Clarify how Objectives differ from:
|
||||
- parent/child Tickets;
|
||||
- typed Ticket relations such as `depends_on` / `blocks`;
|
||||
- OrchestrationPlan execution decisions;
|
||||
- local Pod/session runtime claims.
|
||||
|
||||
## Non-goals
|
||||
|
||||
- Replacing Tickets.
|
||||
- Replacing typed Ticket relation metadata.
|
||||
- Replacing OrchestrationPlan.
|
||||
- Implementing full roadmap scheduling, milestones, OKRs, or dependency graph solving.
|
||||
- Making every Ticket require an Objective.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- There is a documented concept and proposed file/API shape for `Objective` records.
|
||||
- The design explains when to create an Objective versus a parent Ticket.
|
||||
- The design explains how Tickets link to Objectives without conflating that link with dependency/blocking relations.
|
||||
- The design explains how Orchestrator/Intake should consult Objective context while still treating Ticket body/thread as the implementation authority.
|
||||
- A first implementation path is identified with minimal schema and tooling scope.
|
||||
- `target/debug/yoi ticket doctor` and `git diff --check` pass for any record changes.
|
||||
@@ -0,0 +1,95 @@
|
||||
<!-- event: create author: LocalTicketBackend at: 2026-06-08T12:54:30Z -->
|
||||
|
||||
## 作成
|
||||
|
||||
LocalTicketBackend によって作成されました。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: intake at: 2026-06-09T00:17:06Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
## Intake refinement
|
||||
|
||||
既存 Ticket は `Objective` record の目的・背景・要件・受け入れ条件をすでに含んでおり、新規 Ticket 作成ではなくこの Ticket の refinement で足りる。`objective` label の重複 Ticket は見つからず、関連する planning Ticket として `typed-ticket-relation-metadata` と `deprecate-umbrella-tickets` がある。
|
||||
|
||||
### Binding decisions / invariants
|
||||
|
||||
- `Objective` は Ticket / OrchestrationPlan / Pod session claim と別の first-class project record として扱う。
|
||||
- Objective は medium-term goal、motivation、strategy / design direction、success criteria / exit conditions、decision context、linked Tickets を保持するための軽量 record であり、実装可能 work item である Ticket を置き換えない。
|
||||
- Objective と Ticket の link は dependency / blocking relation ではない。Ticket が Objective に属していても、その Objective 内の他 Ticket すべてに依存することを意味しない。
|
||||
- Objective context は Intake / Planning / Orchestrator の判断材料になるが、実装判断の authority は引き続き各 Ticket body/thread と明示的な Ticket relation / OrchestrationPlan record にある。
|
||||
- 初期設計は Markdown-oriented かつ local file backend 前提に留め、roadmap scheduling、milestones、OKR、dependency graph solving、全 Ticket への Objective 必須化は範囲外にする。
|
||||
- `Project` / `Initiative` ではなく `Objective` という用語を使う。
|
||||
|
||||
### Implementation latitude
|
||||
|
||||
- 具体的な record schema、`.yoi/` 配下の path、frontmatter fields、CLI/API 名、Panel 表示の段階分けは実装時の調査で提案してよい。
|
||||
- 初回 scope は設計文書と最小実装方針の提示で足りる。必要であれば小さな local-file reader/writer/API skeleton を提案してよいが、full roadmap system に広げない。
|
||||
- Ticket 側に Objective reference を置くか、Objective 側に linked Tickets を列挙するか、または両方をどう扱うかは、validation と git-trackable record と運用の単純さを基準に設計してよい。
|
||||
- `deprecate-umbrella-tickets` と `typed-ticket-relation-metadata` の内容は関連 context として読むべきだが、それらの実装をこの Ticket に取り込まない。
|
||||
|
||||
### Escalation conditions
|
||||
|
||||
- Objective が dependency/blocking relation、OrchestrationPlan runtime plan、または local Pod/session/worktree claim を兼ね始める設計になりそうな場合は Orchestrator/人間判断へ戻す。
|
||||
- Objective を全 Ticket に必須化する、または scheduling / roadmap / OKR system に拡張する必要が出た場合は scope creep として戻す。
|
||||
- public CLI/API、storage migration、backward compatibility、Panel UX の binding decision が複数案で割れる場合は、設計案と trade-off を thread に記録して判断を戻す。
|
||||
- Ticket body/thread を読まずに Objective context だけで実装判断できるような導線になりそうな場合は、Ticket authority boundary に反するため戻す。
|
||||
|
||||
### Readiness
|
||||
|
||||
- readiness: implementation_ready
|
||||
- risk_flags: [project-record, ticket-model, workflow, persistence, cli-api, panel-ux]
|
||||
- blocking open questions: none
|
||||
|
||||
Validation は既存 acceptance criteria の通り `target/debug/yoi ticket doctor` と `git diff --check` を含める。runtime resource / prompt / packaging / code に触れる実装になった場合は repository guidance に従って focused tests と `nix build .#yoi` も実施する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: intake_summary author: intake at: 2026-06-09T00:17:13Z -->
|
||||
|
||||
## Intake summary
|
||||
|
||||
既存 Ticket を新規作成せず refinement した。`Objective` は Ticket / OrchestrationPlan / Pod/session claim と別の lightweight project record とし、medium-term goal・motivation・strategy/design direction・success criteria/exit conditions・decision context・linked Tickets を保持する。Ticket を置き換えず、Objective link は dependency/blocking relation ではない。初期 scope は Markdown/local-file 前提の設計と最小実装方針に限定し、roadmap scheduling、milestones、OKR、dependency graph solving、全 Ticket への Objective 必須化は範囲外。blocking open questions はなく、Orchestrator が implementation/design work として routing できる。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: intake at: 2026-06-09T00:17:13Z from: planning to: ready reason: intake_ready field: workflow_state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Intake refinement により目的・受け入れ条件・binding decisions / invariants・implementation latitude・escalation conditions が揃ったため、workflow_state を ready にする。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: workspace-panel at: 2026-06-09T02:27:33Z from: ready to: queued reason: queued field: workflow_state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: orchestrator at: 2026-06-09T02:28:14Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: defer_pending_ticket_identity_migration
|
||||
|
||||
This Ticket is queued and appears implementation-ready, but I am intentionally not accepting it to `inprogress` yet.
|
||||
|
||||
Reason:
|
||||
- `simplify-ticket-identity-fields` is already active, with Coder Pod `coder-simplify-ticket-identity-fields` running in `.worktree/simplify-ticket-identity-fields`.
|
||||
- Objective record design/linking depends on stable Ticket identity and reference semantics, and the active Ticket is changing canonical Ticket identity, flat layout, state, and lookup surfaces.
|
||||
- Implementing Objective link/reference guidance before the identity simplification lands would create avoidable conflict and may choose reference shapes that immediately need migration.
|
||||
|
||||
State decision:
|
||||
- Leave this Ticket `queued`.
|
||||
- Do not create a worktree or spawn a coder yet.
|
||||
|
||||
Next action:
|
||||
- After `simplify-ticket-identity-fields` is merged/closed/cleaned up or explicitly held back, re-read this Ticket against the new identity model and accept it from queued if still unblocked.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user