Merge pull request 'docs: add live-operation issue tracking design and plan (#80)' (#395) from task/80-implementation-audit-closeout into base/ouroboros-workflow-20260302
Reviewed-on: #395
This commit was merged in pull request #395.
This commit is contained in:
100
docs/plans/2026-03-02-live-operation-issue-tracking-design.md
Normal file
100
docs/plans/2026-03-02-live-operation-issue-tracking-design.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Live Operation Issue Tracking Design
|
||||
|
||||
**Date:** 2026-03-02
|
||||
**Scope:** Real-operation confirmation tracking for all open Gitea issues, tied to `task/80-implementation-audit-closeout`.
|
||||
|
||||
---
|
||||
|
||||
## 1. Goal
|
||||
|
||||
Define an issue-by-issue tracking method for real-operation confirmation so that:
|
||||
|
||||
- every open issue is tracked with explicit lifecycle states,
|
||||
- parent-child close order is enforced,
|
||||
- and final closeout is reflected in `80` audit work without loss.
|
||||
|
||||
---
|
||||
|
||||
## 2. Target Set
|
||||
|
||||
- Coverage target: all current open Gitea issues (`318~381`, and future open issues during this closeout window).
|
||||
- Tracking starts from open set snapshot and stays synced until closeout completion.
|
||||
|
||||
---
|
||||
|
||||
## 3. Tracking Architecture
|
||||
|
||||
- Primary log: direct comments on each issue ticket.
|
||||
- Aggregate log: single summary comment on the `80` PR (`task/80-implementation-audit-closeout`).
|
||||
- No separate tracking doc as source of truth during execution.
|
||||
|
||||
---
|
||||
|
||||
## 4. State Model and Criteria
|
||||
|
||||
State machine:
|
||||
|
||||
- `NOT_STARTED`
|
||||
- `OBSERVING`
|
||||
- `CONFIRMED`
|
||||
- `CLOSED`
|
||||
|
||||
Rules:
|
||||
|
||||
- `CONFIRMED` requires one real-operation observation evidence item.
|
||||
- `CLOSED` requires close conditions satisfied and ticket close action executed.
|
||||
- Parent issue cannot become `CLOSED` until all child issues are `CLOSED`.
|
||||
|
||||
---
|
||||
|
||||
## 5. Issue Comment Template
|
||||
|
||||
Each issue update comment uses:
|
||||
|
||||
- `Status: <STATE>`
|
||||
- `Observed At: <KST>, <UTC>`
|
||||
- `Environment: live`
|
||||
- `Evidence: <log/query/order-execution identifier>`
|
||||
- `Next: <single next action>`
|
||||
|
||||
This template is reused for every transition for consistent auditability.
|
||||
|
||||
---
|
||||
|
||||
## 6. Parent-Child Policy
|
||||
|
||||
- Parent issue comment must list child issue IDs.
|
||||
- Child issues transition independently.
|
||||
- Parent close gate:
|
||||
- if any child is not `CLOSED`, parent remains at most `CONFIRMED`;
|
||||
- when all children are `CLOSED`, parent can transition to `CLOSED` and be closed.
|
||||
|
||||
---
|
||||
|
||||
## 7. Operational Loop
|
||||
|
||||
1. Initialize all open issues with `NOT_STARTED` comment.
|
||||
2. Move active issues to `OBSERVING` when live confirmation begins.
|
||||
3. Move to `CONFIRMED` after one real-operation evidence capture.
|
||||
4. Close child issues first, then close parent issue(s).
|
||||
5. Update the single `80` PR summary comment whenever issue state changes.
|
||||
6. Reflect final confirmed/closed outcomes in `docs/ouroboros/80_implementation_audit.md`.
|
||||
|
||||
---
|
||||
|
||||
## 8. Evidence and Time Rules
|
||||
|
||||
- Evidence must be replayable/referenceable by identifier (not vague narrative only).
|
||||
- Every update includes both KST and UTC timestamps.
|
||||
- Use absolute dates (example: `2026-03-02`) to avoid ambiguity in session handoff.
|
||||
|
||||
---
|
||||
|
||||
## 9. Completion Conditions
|
||||
|
||||
Tracking design is complete when:
|
||||
|
||||
- all open issues are represented in issue comments with valid lifecycle state,
|
||||
- parent-child closure constraints are respected,
|
||||
- `80` PR summary comment reflects current global status,
|
||||
- and final `80` audit document update is ready for closeout commit.
|
||||
@@ -0,0 +1,203 @@
|
||||
# Live Operation Issue Tracking Implementation Plan
|
||||
|
||||
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
||||
|
||||
**Goal:** Track real-operation confirmation for all open Gitea issues with per-issue comments and a synchronized summary on the `80` PR, then close issues in dependency-safe order.
|
||||
|
||||
**Architecture:** Use issue tickets as the primary state log with a strict four-state lifecycle. Maintain one aggregate status comment on `task/80-implementation-audit-closeout` PR. Enforce child-first closure and parent close gating.
|
||||
|
||||
**Tech Stack:** Git CLI, Gitea CLI (`tea`), Markdown (`docs/ouroboros/80_implementation_audit.md`)
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Snapshot open issues and classify parent-child graph
|
||||
|
||||
**Files:**
|
||||
- Create: none
|
||||
- Modify: none
|
||||
- Test: `tea issues ls` output inspection
|
||||
|
||||
**Step 1: Capture open issue list**
|
||||
|
||||
Run: `tea issues ls --state open --limit 200`
|
||||
Expected: list of all open issues (including `318~381`).
|
||||
|
||||
**Step 2: Fetch details for each issue**
|
||||
|
||||
Run: `for n in $(tea issues ls --state open --limit 200 --output json | jq -r '.[].number'); do tea issue view "$n"; done`
|
||||
Expected: issue bodies/comments available for relation parsing.
|
||||
|
||||
**Step 3: Extract parent-child references**
|
||||
|
||||
Run: parse issue text for relation keywords (`parent`, `child`, `depends on`, `blocks`).
|
||||
Expected: dependency map ready.
|
||||
|
||||
**Step 4: Validate unresolved dependency edges**
|
||||
|
||||
Run: verify each parent references only existing issue numbers.
|
||||
Expected: no dangling child references.
|
||||
|
||||
**Step 5: Commit**
|
||||
|
||||
```bash
|
||||
# no commit (discovery task)
|
||||
```
|
||||
|
||||
### Task 2: Initialize per-issue tracking comments (`NOT_STARTED`)
|
||||
|
||||
**Files:**
|
||||
- Create: none
|
||||
- Modify: none
|
||||
- Test: issue comment presence check
|
||||
|
||||
**Step 1: Prepare standard template text**
|
||||
|
||||
```text
|
||||
Status: NOT_STARTED
|
||||
Observed At: <KST>, <UTC>
|
||||
Environment: live
|
||||
Evidence: N/A
|
||||
Next: Begin live observation for this issue.
|
||||
```
|
||||
|
||||
**Step 2: Post initialization comment to each open issue**
|
||||
|
||||
Run: `tea issues comment <issue-number> --message "<template>"`
|
||||
Expected: each open issue has one initialization comment.
|
||||
|
||||
**Step 3: Verify comment coverage**
|
||||
|
||||
Run: sample-check each issue (`tea issue view <issue-number>`) for latest status comment.
|
||||
Expected: 100% coverage across open issues.
|
||||
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
# no commit (ticket operations)
|
||||
```
|
||||
|
||||
### Task 3: Create and maintain `80` PR aggregate status comment
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/ouroboros/80_implementation_audit.md` (final sync only, not this task)
|
||||
- Test: PR comment contains full issue table
|
||||
|
||||
**Step 1: Identify PR number for `task/80-implementation-audit-closeout`**
|
||||
|
||||
Run: `tea pr ls --state open`
|
||||
Expected: PR number for `task/80...` identified.
|
||||
|
||||
**Step 2: Post initial summary comment**
|
||||
|
||||
Run: `tea pr comment <pr-number> --message "<issue-state-summary-table>"`
|
||||
Expected: one aggregate comment listing `issue | state | last observed at | parent/child`.
|
||||
|
||||
**Step 3: Define update protocol**
|
||||
|
||||
Run: update same summary comment on every issue state change.
|
||||
Expected: summary remains single-source aggregate view.
|
||||
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
# no commit (ticket/PR operations)
|
||||
```
|
||||
|
||||
### Task 4: Execute live observation loop and mark `OBSERVING` -> `CONFIRMED`
|
||||
|
||||
**Files:**
|
||||
- Create: none
|
||||
- Modify: none
|
||||
- Test: evidence-backed state transitions present in issue comments
|
||||
|
||||
**Step 1: Mark active issue as `OBSERVING`**
|
||||
|
||||
Run: `tea issues comment <issue-number> --message "Status: OBSERVING ..."`
|
||||
Expected: issue history shows observation started.
|
||||
|
||||
**Step 2: Capture one real-operation evidence item**
|
||||
|
||||
Run: collect log/query/order identifier tied to issue behavior.
|
||||
Expected: one concrete evidence reference captured.
|
||||
|
||||
**Step 3: Mark issue `CONFIRMED`**
|
||||
|
||||
Run: `tea issues comment <issue-number> --message "Status: CONFIRMED ... Evidence: <id> ..."`
|
||||
Expected: issue has explicit confirmed state.
|
||||
|
||||
**Step 4: Sync PR aggregate summary**
|
||||
|
||||
Run: update `80` PR summary comment row for that issue.
|
||||
Expected: PR summary and issue status aligned.
|
||||
|
||||
**Step 5: Commit**
|
||||
|
||||
```bash
|
||||
# no commit (ticket operations)
|
||||
```
|
||||
|
||||
### Task 5: Close issues with child-first dependency enforcement
|
||||
|
||||
**Files:**
|
||||
- Create: none
|
||||
- Modify: none
|
||||
- Test: parent close attempted only after all children closed
|
||||
|
||||
**Step 1: Close confirmed child issues first**
|
||||
|
||||
Run: `tea issues close <child-issue-number>`
|
||||
Expected: child issue state becomes closed.
|
||||
|
||||
**Step 2: Verify all children for each parent**
|
||||
|
||||
Run: evaluate dependency map for remaining non-closed children.
|
||||
Expected: parent close gate decision available.
|
||||
|
||||
**Step 3: Close eligible parent issues**
|
||||
|
||||
Run: `tea issues close <parent-issue-number>`
|
||||
Expected: parent is closed only when all children are closed.
|
||||
|
||||
**Step 4: Post closure comment and sync PR summary**
|
||||
|
||||
Run: comment `Status: CLOSED` on closed issue and update PR summary row.
|
||||
Expected: closure trace exists in both issue and PR aggregate.
|
||||
|
||||
**Step 5: Commit**
|
||||
|
||||
```bash
|
||||
# no commit (ticket operations)
|
||||
```
|
||||
|
||||
### Task 6: Reflect final tracked outcomes in `80` audit and commit
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/ouroboros/80_implementation_audit.md`
|
||||
- Test: markdown consistency + traceability check
|
||||
|
||||
**Step 1: Update `80` with final live-confirmed statuses**
|
||||
|
||||
Run: edit status lines and evidence summary sections.
|
||||
Expected: document reflects final issue states and confirmation notes.
|
||||
|
||||
**Step 2: Add issue closure summary block**
|
||||
|
||||
Run: include closed child/parent sequence summary.
|
||||
Expected: audit reader can verify closure logic quickly.
|
||||
|
||||
**Step 3: Validate references**
|
||||
|
||||
Run: ensure issue numbers in doc match actual closed/open states.
|
||||
Expected: no mismatch between doc and Gitea.
|
||||
|
||||
**Step 4: Commit closeout doc update**
|
||||
|
||||
```bash
|
||||
git add docs/ouroboros/80_implementation_audit.md
|
||||
git commit -m "docs: finalize 80 audit with live-operation issue confirmations"
|
||||
```
|
||||
|
||||
**Step 5: Push branch**
|
||||
|
||||
Run: `git push`
|
||||
Expected: closeout commit available on `task/80-implementation-audit-closeout`.
|
||||
Reference in New Issue
Block a user