fix: align ticket intake state wording
This commit is contained in:
parent
6ca27f3663
commit
a6326a989e
|
|
@ -39,7 +39,8 @@ Intake は以下を行う。
|
||||||
- 不足している要件を質問する。
|
- 不足している要件を質問する。
|
||||||
- 作成または refinement する Ticket が、実装・レビュー・検証・完了判断を単独で行える concrete work item であるか確認する。
|
- 作成または refinement する Ticket が、実装・レビュー・検証・完了判断を単独で行える concrete work item であるか確認する。
|
||||||
- 広い依頼を分割する場合は、進捗コンテナとしての umbrella Ticket ではなく、concrete Ticket / Objective context / split decision record に責務を分ける。
|
- 広い依頼を分割する場合は、進捗コンテナとしての umbrella Ticket ではなく、concrete Ticket / Objective context / split decision record に責務を分ける。
|
||||||
- Ticket の title / canonical id / kind / priority / labels を提案する。
|
- Ticket の title / body/request snapshot / acceptance criteria / priority / readiness / action_required / attention_required を、現在の要件として意味がある範囲で提案する。
|
||||||
|
- canonical ID は Ticket 作成/storage が opaque な path-derived value として割り当てるため、Intake はユーザー向け metadata として提案しない。
|
||||||
- background / requirements / acceptance criteria / escalation conditions を整理する。
|
- background / requirements / acceptance criteria / escalation conditions を整理する。
|
||||||
- binding decisions / invariants と implementation latitude を分けて書く。
|
- binding decisions / invariants と implementation latitude を分けて書く。
|
||||||
- 具体的な除外や触れてはいけない境界が binding decision である場合は、generic な除外リストではなく invariant / escalation condition として明記する。
|
- 具体的な除外や触れてはいけない境界が binding decision である場合は、generic な除外リストではなく invariant / escalation condition として明記する。
|
||||||
|
|
@ -119,7 +120,7 @@ Ticket tools が利用できない環境では、勝手に file write で代替
|
||||||
最低限、以下を確認する。
|
最低限、以下を確認する。
|
||||||
|
|
||||||
- observable な完了条件は何か。
|
- observable な完了条件は何か。
|
||||||
- Ticket の種類は何か: feature / bug / cleanup / design / spike / workflow / docs / release / orchestration。
|
- 作業の種類・影響範囲は prose として body に書けばよいが、current Ticket core metadata として扱わない。
|
||||||
- 受け入れ条件は何か。
|
- 受け入れ条件は何か。
|
||||||
- binding decision として残す具体的な除外・authority boundary はあるか。
|
- binding decision として残す具体的な除外・authority boundary はあるか。
|
||||||
- 後方互換が必要か。
|
- 後方互換が必要か。
|
||||||
|
|
@ -183,13 +184,14 @@ risk_flags: [authority-boundary, persistence, prompt-context, public-api]
|
||||||
```text
|
```text
|
||||||
Title:
|
Title:
|
||||||
|
|
||||||
Kind:
|
|
||||||
Priority:
|
Priority:
|
||||||
Labels:
|
|
||||||
Readiness:
|
Readiness:
|
||||||
Needs planning sync:
|
Action required:
|
||||||
|
Attention required:
|
||||||
Risk flags:
|
Risk flags:
|
||||||
|
|
||||||
|
Body / request snapshot:
|
||||||
|
|
||||||
Background:
|
Background:
|
||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
|
|
@ -207,6 +209,8 @@ Validation:
|
||||||
Related tickets/docs:
|
Related tickets/docs:
|
||||||
```
|
```
|
||||||
|
|
||||||
|
canonical ID は作成時に storage が opaque/path-derived value として割り当てるため、draft では提案しない。
|
||||||
|
|
||||||
この時点ではまだ Ticket を作らない。
|
この時点ではまだ Ticket を作らない。
|
||||||
|
|
||||||
### 7. ユーザー合意を取る
|
### 7. ユーザー合意を取る
|
||||||
|
|
@ -223,7 +227,7 @@ Related tickets/docs:
|
||||||
新規 Ticket の場合:
|
新規 Ticket の場合:
|
||||||
|
|
||||||
- `TicketCreate` を使う。
|
- `TicketCreate` を使う。
|
||||||
- title / canonical id / kind / priority / labels / body を指定する。
|
- title / priority / body と、必要な readiness / action_required / attention_required を指定する。canonical ID は storage が割り当てる。
|
||||||
- body に readiness / open questions / risk flags と、binding decisions / invariants、implementation latitude、escalation conditions を Markdown で明記する。
|
- body に readiness / open questions / risk flags と、binding decisions / invariants、implementation latitude、escalation conditions を Markdown で明記する。
|
||||||
|
|
||||||
既存 Ticket refinement の場合:
|
既存 Ticket refinement の場合:
|
||||||
|
|
@ -236,7 +240,7 @@ Related tickets/docs:
|
||||||
|
|
||||||
ユーザーへ以下を返す。
|
ユーザーへ以下を返す。
|
||||||
|
|
||||||
- 作成/更新した Ticket id / canonical id / title。
|
- 作成/更新した Ticket の system-assigned id / title。
|
||||||
- readiness。
|
- readiness。
|
||||||
- open questions / risk flags。
|
- open questions / risk flags。
|
||||||
- 次に Orchestrator が取るべき routing 候補。
|
- 次に Orchestrator が取るべき routing 候補。
|
||||||
|
|
@ -293,6 +297,6 @@ Ticket の body は Markdown/freeform を維持する。すべてを strict sche
|
||||||
|
|
||||||
## 他 Workflow への接続
|
## 他 Workflow への接続
|
||||||
|
|
||||||
- `ticket-preflight-workflow`: legacy compatibility canonical id の planning/requirements sync 入口。新規 routing は standalone preflight ではなく planning return/requirements sync として扱う。
|
- `ticket-preflight-workflow`: legacy compatibility planning/requirements sync 入口。新規 routing は standalone preflight ではなく planning return/requirements sync として扱う。
|
||||||
- `multi-agent-workflow`: Orchestrator が implementation_ready と判断した後に接続する。
|
- `multi-agent-workflow`: Orchestrator が implementation_ready と判断した後に接続する。
|
||||||
- `ticket-orchestrator-routing`: この Workflow が作った Ticket を routing する後続 Workflow。
|
- `ticket-orchestrator-routing`: この Workflow が作った Ticket を routing する後続 Workflow。
|
||||||
|
|
|
||||||
|
|
@ -817,9 +817,9 @@ impl LocalTicketBackend {
|
||||||
|
|
||||||
pub fn default_intake_ready_state_change_body(&self, from: &str) -> String {
|
pub fn default_intake_ready_state_change_body(&self, from: &str) -> String {
|
||||||
if is_japanese_record_language(self.record_language()) {
|
if is_japanese_record_language(self.record_language()) {
|
||||||
format!("Ticket planning が完了しました。workflow_state {from} -> ready。\n")
|
format!("Ticket planning が完了しました。state {from} -> ready。\n")
|
||||||
} else {
|
} else {
|
||||||
format!("Ticket planning complete; workflow_state {from} -> ready.\n")
|
format!("Ticket planning complete; state {from} -> ready.\n")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1360,7 +1360,7 @@ impl TicketBackend for LocalTicketBackend {
|
||||||
})?;
|
})?;
|
||||||
if !TicketWorkflowState::is_planning_ready_transition(from, to) {
|
if !TicketWorkflowState::is_planning_ready_transition(from, to) {
|
||||||
return Err(TicketError::Conflict(format!(
|
return Err(TicketError::Conflict(format!(
|
||||||
"mark_intake_ready only allows workflow_state planning -> ready, got {} -> {}",
|
"mark_intake_ready only allows state planning -> ready, got {} -> {}",
|
||||||
from.as_str(),
|
from.as_str(),
|
||||||
to.as_str()
|
to.as_str()
|
||||||
)));
|
)));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user