Skip to content

Commit 1f7263c

Browse files
committed
refactor(board): replace epics+milestone with scope field
Simplify story frontmatter schema by replacing the `epics` array and `milestone` field with a single `scope` field that uses the format `epic/milestone` or just `epic` for stories without a milestone. This change: - Migrates all 207 stories to use the new scope field - Updates CONVENTIONS.md with the new schema - Updates the story template - Adds Phase 2 design to artifact pipeline for story-scoped verification The scope field provides a cleaner hierarchy that matches the board structure (Epic > Milestone > Story) and enables story-specific verification reports organized by scope.
1 parent 626b1e8 commit 1f7263c

File tree

208 files changed

+400
-461
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

208 files changed

+400
-461
lines changed

docs/board/CONVENTIONS.md

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -105,31 +105,37 @@ Stories use YAML frontmatter for metadata:
105105

106106
```yaml
107107
---
108-
id: m26-feat-01-eventlog
109-
title: EventLog Assessment Storage
108+
id: FEAT0109
109+
title: Board generator grouped layout
110110
type: feat
111111
status: in-progress
112112
priority: high
113-
epics: [core]
113+
scope: coherence-verification/01-artifact-pipeline
114114
depends: []
115115
estimate: 2h
116-
created: 2025-01-07
117-
updated: 2025-01-07
116+
created: 2026-01-17
118117
---
119118
```
120119

121120
| Field | Required | Description |
122121
|-------|----------|-------------|
123-
| `id` | Yes | Unique identifier (prefix with milestone: `m26-feat-01`) |
122+
| `id` | Yes | Unique identifier (`TYPE` + 4-digit number: `FEAT0109`, `BUG0001`) |
124123
| `title` | Yes | Human-readable title |
125124
| `type` | Yes | `feat`, `bug`, `chore`, `refactor` |
126125
| `status` | Yes | `backlog`, `in-progress`, `done`, `icebox` |
127126
| `priority` | No | `low`, `medium`, `high`, `critical` |
128-
| `epics` | No | List of epic IDs this story belongs to |
127+
| `scope` | No | Epic and milestone path: `epic-name/milestone-id` or just `epic-name` |
129128
| `depends` | No | List of story IDs that must complete first |
130129
| `estimate` | No | Time estimate (e.g., `2h`, `1d`) |
131130
| `created` | Yes | Creation date |
132-
| `updated` | Yes | Last update date |
131+
132+
**Scope values:**
133+
134+
| Value | Meaning |
135+
|-------|---------|
136+
| `epic/milestone` | Story belongs to epic and milestone (e.g., `coherence-verification/01-artifact-pipeline`) |
137+
| `epic` | Story belongs to epic only, no milestone (e.g., `core`) |
138+
| (empty) | Ad-hoc story, not associated with any epic |
133139

134140
### Story Naming
135141

@@ -493,16 +499,15 @@ The `implementation.md` serves as the entry point and index for the milestone's
493499

494500
```markdown
495501
---
496-
id: m26-feat-01-types
502+
id: FEAT0042
497503
title: Core Type Definitions
498504
type: feat
499505
status: backlog
500506
priority: high
501-
epics: [core]
507+
scope: core/01-event-sourcing
502508
depends: []
503509
estimate: 2h
504-
created: 2024-01-15
505-
updated: 2024-01-15
510+
created: 2026-01-15
506511
---
507512

508513
# Core Type Definitions

docs/board/epics/coherence-verification/milestones/01-verification-artifact-pipeline/README.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,28 @@ Developers can run `just verify all` to capture screenshots, interaction sequenc
1616

1717
## Done Criteria
1818

19+
### Phase 1: Artifact Capture
1920
- [x] `just verify snapshots` captures key screen PNGs
2021
- [x] `just verify checkpoints` captures interaction sequence PNGs
2122
- [x] `just verify videos` records CLI (VHS) + Web (Playwright) and stitches with ffmpeg
2223
- [x] `just verify report` generates `verification/report.md`
23-
- [ ] Report links artifacts to story acceptance criteria (planned for phase 2)
24+
25+
### Phase 2: Story-Scoped Verification
26+
- [x] Story frontmatter uses `scope` field (replaces `epics` + `milestone`)
27+
- [x] All stories migrated to new schema
28+
- [x] CONVENTIONS.md documents new schema
29+
- [ ] Verification annotations in acceptance criteria (`<!-- verify: type:name -->`)
30+
- [ ] `just verify story <ID>` captures artifacts for a story
31+
- [ ] `just verify story-report <ID>` generates story-specific report
32+
- [ ] Reports committed at `verification/reports/<scope>/<id>.md`
2433

2534
## Design
2635

2736
See [design.md](design.md) for architecture and implementation details.
2837

2938
## Work Items
3039

31-
> Work tracked inline during implementation (no separate story files).
40+
### Phase 1 (Complete)
3241

3342
| Item | Status |
3443
|------|--------|
@@ -37,3 +46,15 @@ See [design.md](design.md) for architecture and implementation details.
3746
| Implement checkpoints.spec.ts | done |
3847
| Implement videos.spec.ts with CLI+Web stitching | done |
3948
| Document verification commands in CLAUDE.md | done |
49+
50+
### Phase 2 (In Progress)
51+
52+
| Item | Status |
53+
|------|--------|
54+
| Design story-scoped verification | done |
55+
| Update story frontmatter schema (scope field) | done |
56+
| Migrate all stories to new schema | done |
57+
| Update CONVENTIONS.md | done |
58+
| Implement verification annotation parsing | pending |
59+
| Implement `just verify story` command | pending |
60+
| Update .gitignore for reports directory | pending |

docs/board/epics/coherence-verification/milestones/01-verification-artifact-pipeline/design.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,3 +292,158 @@ See [verification/report.md](verification/report.md) for full details.
292292
- [x] `verification/checkpoints.json` definition file
293293
- [x] Report generation script
294294
- [x] Documentation in CLAUDE.md
295+
296+
---
297+
298+
# Phase 2: Story-Scoped Verification
299+
300+
> Link artifacts to story acceptance criteria to complete the coherence loop.
301+
302+
## Overview
303+
304+
Phase 1 captures artifacts globally. Phase 2 adds story-scoped verification where each story's acceptance criteria can reference specific artifacts, and the report shows coverage.
305+
306+
### Key Decisions
307+
308+
| Decision | Choice | Rationale |
309+
|----------|--------|-----------|
310+
| **Verification location** | Story file (inline) | Single source of truth; criteria and verification together |
311+
| **Scope field** | Single `scope` replacing `epics` + `milestone` | Simpler hierarchy; one field for report path |
312+
| **Report per story** | `reports/<scope>/<id>.md` | Organized by epic/milestone; matches board hierarchy |
313+
314+
---
315+
316+
## Story Frontmatter Schema
317+
318+
Replace `epics` array and `milestone` field with single `scope` field:
319+
320+
```yaml
321+
---
322+
id: FEAT0109
323+
title: Board generator grouped layout
324+
type: feat
325+
status: done
326+
priority: high
327+
scope: coherence-verification/01-artifact-pipeline # epic/milestone or just epic
328+
depends: []
329+
estimate: 2h
330+
created: 2026-01-17
331+
---
332+
```
333+
334+
**Scope values:**
335+
| Value | Meaning |
336+
|-------|---------|
337+
| `epic/milestone` | Story belongs to epic and milestone |
338+
| `epic` | Story belongs to epic (no milestone) |
339+
| (empty) | Ad-hoc story |
340+
341+
---
342+
343+
## Verification Annotations
344+
345+
Add HTML comments to acceptance criteria referencing artifacts:
346+
347+
```markdown
348+
## Acceptance Criteria
349+
350+
- [ ] Sessions page displays list <!-- verify: snapshot:sessions -->
351+
- [ ] Clicking row opens detail <!-- verify: checkpoint:view-session-detail -->
352+
- [ ] CLI help shows commands <!-- verify: video:cli/help -->
353+
```
354+
355+
**Annotation format:** `<!-- verify: <type>:<name> -->`
356+
357+
| Type | Lookup |
358+
|------|--------|
359+
| `snapshot:<name>` | `snapshots.json` by name |
360+
| `checkpoint:<name>` | `checkpoints.json` by name |
361+
| `video:<path>` | Video file at path |
362+
363+
---
364+
365+
## Commands
366+
367+
| Command | Description |
368+
|---------|-------------|
369+
| `just verify story <ID>` | Capture artifacts for story, generate report |
370+
| `just verify story-report <ID>` | Generate report only (artifacts exist) |
371+
372+
**Story command flow:**
373+
1. Find story file by ID
374+
2. Parse `scope` from frontmatter
375+
3. Extract criteria with `<!-- verify: -->` annotations
376+
4. Capture only referenced artifacts
377+
5. Generate report at `verification/reports/<scope>/<id>.md`
378+
379+
---
380+
381+
## Directory Structure (Updated)
382+
383+
```
384+
verification/
385+
├── snapshots.json
386+
├── checkpoints.json
387+
├── report.md # Global report
388+
├── reports/ # Story-specific reports (COMMITTED)
389+
│ ├── coherence-verification/
390+
│ │ └── 01-artifact-pipeline/
391+
│ │ └── FEAT0109.md
392+
│ └── core/
393+
│ └── BUG0001.md
394+
├── snapshots/
395+
├── checkpoints/
396+
└── videos/
397+
```
398+
399+
---
400+
401+
## Story Report Format
402+
403+
`verification/reports/<scope>/<id>.md`:
404+
405+
```markdown
406+
# Verification: FEAT0109
407+
408+
**Story:** Board generator grouped layout
409+
**Scope:** coherence-verification/01-artifact-pipeline
410+
**Generated:** 2026-01-18T10:30:00Z
411+
**Branch:** feat/0109-board-generator
412+
413+
## Coverage
414+
415+
| Criterion | Artifact | Status |
416+
|-----------|----------|--------|
417+
| Sessions page displays list | sessions.png ||
418+
| Clicking row opens detail | view-session-detail/ ||
419+
| CLI help shows commands | cli/help.webm ||
420+
421+
**Coverage: 3/3 (100%)**
422+
423+
## Uncovered Criteria
424+
425+
(none)
426+
```
427+
428+
---
429+
430+
## Error Handling
431+
432+
| Scenario | Behavior |
433+
|----------|----------|
434+
| Artifact not in definitions | Report shows `❌ (not defined)` |
435+
| Artifact capture fails | Report shows `❌ (capture failed)` |
436+
| No verify annotations | Report shows "No verification annotations found" |
437+
| Story file not found | Command fails with clear error |
438+
439+
---
440+
441+
## Deliverables (Phase 2)
442+
443+
- [ ] Update story frontmatter schema (`scope` replaces `epics` + `milestone`)
444+
- [ ] Migrate all existing stories to new schema
445+
- [ ] Add verification annotation parsing
446+
- [ ] Implement `just verify story <ID>` command
447+
- [ ] Implement `just verify story-report <ID>` command
448+
- [ ] Update `.gitignore` to commit `reports/**/*.md`
449+
- [ ] Update CONVENTIONS.md with new schema

docs/board/stages/backlog/stories/[FEAT][0115]-eval-web-ui.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@ title: Eval Web UI
44
type: feat
55
status: backlog
66
priority: medium
7-
epics: [evals]
7+
scope: evals/39-performance-evaluation
88
depends: [m39-feat-05]
99
estimate: 4h
10-
milestone: 39
1110
---
1211

1312
# Eval Web UI

docs/board/stages/backlog/stories/[FEAT][0116]-pty-server-core.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ title: PTY server core
44
type: feat
55
status: backlog
66
priority: medium
7-
epics: [tui]
7+
scope: tui/46-terminal-server
88
depends: []
99
estimate:
1010
created: 2026-01-14
11-
updated: 2026-01-14
12-
milestone: 46
1311
---
1412

1513
# PTY server core

docs/board/stages/backlog/stories/[FEAT][0117]-session-management.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ title: Session management
44
type: feat
55
status: backlog
66
priority: medium
7-
epics: [tui]
7+
scope: tui/46-terminal-server
88
depends: []
99
estimate:
1010
created: 2026-01-14
11-
updated: 2026-01-14
12-
milestone: 46
1311
---
1412

1513
# Session management

docs/board/stages/backlog/stories/[FEAT][0118]-websocket-pty-endpoint.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ title: WebSocket PTY endpoint
44
type: feat
55
status: backlog
66
priority: medium
7-
epics: [tui]
7+
scope: tui/46-terminal-server
88
depends: []
99
estimate:
1010
created: 2026-01-14
11-
updated: 2026-01-14
12-
milestone: 46
1311
---
1412

1513
# WebSocket PTY endpoint

docs/board/stages/backlog/stories/[FEAT][0119]-xtermjs-web-integration.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ title: xterm.js web integration
44
type: feat
55
status: backlog
66
priority: medium
7-
epics: [tui]
7+
scope: tui/46-terminal-server
88
depends: []
99
estimate:
1010
created: 2026-01-14
11-
updated: 2026-01-14
12-
milestone: 46
1311
---
1412

1513
# xterm.js web integration

docs/board/stages/done/stories/[BUG][0001]-cwd-propagation.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ title: Fix CWD Propagation Implementation Plan
44
type: bug
55
status: done
66
priority: medium
7-
epics: [core]
7+
scope: core
88
depends: []
99
estimate:
1010
created: 2026-01-07
11-
updated: 2026-01-07
12-
milestone:
1311
---
1412
# Fix CWD Propagation Implementation Plan
1513

docs/board/stages/done/stories/[BUG][0002]-firehose-not-loading-historical-events.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ title: "bug-0002: Firehose Not Loading Historical Events"
44
type: bug
55
status: done
66
priority: medium
7-
epics: [core]
7+
scope: core
88
depends: []
99
estimate:
1010
created: 2026-01-01
11-
updated: 2026-01-07
12-
milestone:
1311
---
1412

1513
# bug-0002: Firehose Not Loading Historical Events

0 commit comments

Comments
 (0)