convoke-agents 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +40 -11
  3. package/_bmad/bme/README.md +36 -0
  4. package/_bmad/bme/_enhance/workflows/initiatives-backlog/SKILL.md +1 -1
  5. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-01-init.md +55 -32
  6. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-02-gather.md +62 -59
  7. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-03-qualify.md +176 -0
  8. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-04-generate.md +259 -0
  9. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-r/step-r-01-load.md +65 -35
  10. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-r/step-r-02-rescore.md +60 -30
  11. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-r/step-r-03-update.md +67 -71
  12. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-01-ingest.md +12 -12
  13. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-02-extract.md +49 -44
  14. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-03-qualify.md +192 -0
  15. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-04-update.md +72 -67
  16. package/_bmad/bme/_enhance/workflows/initiatives-backlog/templates/backlog-format-spec.md +223 -112
  17. package/_bmad/bme/_enhance/workflows/initiatives-backlog/templates/lifecycle-process-spec.md +188 -0
  18. package/_bmad/bme/_enhance/workflows/initiatives-backlog/workflow.md +44 -31
  19. package/_bmad/bme/_gyre/config.yaml +3 -0
  20. package/_bmad/bme/_vortex/config.yaml +4 -1
  21. package/package.json +2 -1
  22. package/scripts/convoke-doctor.js +56 -2
  23. package/scripts/lib/artifact-utils.js +16 -3
  24. package/scripts/migrate-artifacts.js +3 -2
  25. package/scripts/portability/catalog-generator.js +1 -1
  26. package/scripts/portability/convoke-export.js +26 -5
  27. package/scripts/portability/export-engine.js +34 -9
  28. package/scripts/portability/seed-catalog-repo.js +6 -6
  29. package/scripts/portability/validate-exports.js +25 -14
  30. package/scripts/update/convoke-update.js +27 -2
  31. package/scripts/update/lib/changelog-reader.js +90 -0
  32. package/scripts/update/lib/config-merger.js +52 -1
  33. package/scripts/update/lib/refresh-installation.js +48 -9
  34. package/scripts/update/lib/taxonomy-merger.js +2 -1
  35. package/scripts/update/lib/validator.js +9 -1
  36. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-03-score.md +0 -146
  37. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-04-prioritize.md +0 -181
  38. package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-03-score.md +0 -147
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: 'step-t-02-extract'
3
- description: 'Extract actionable findings from input, classify, detect overlaps, and validate at Gate 1'
4
- nextStepFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-03-score.md'
5
- outputFile: '{planning_artifacts}/initiatives-backlog.md'
3
+ description: 'Extract actionable findings from input, detect overlaps with existing Intakes and lane items, and validate the extraction batch'
4
+ nextStepFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-03-qualify.md'
5
+ outputFile: '{planning_artifacts}/convoke-note-initiative-lifecycle-backlog.md'
6
6
  templateFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/templates/backlog-format-spec.md'
7
7
  ---
8
8
 
@@ -10,7 +10,7 @@ templateFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/t
10
10
 
11
11
  ## STEP GOAL:
12
12
 
13
- Extract actionable findings from the ingested text, classify each into a backlog category, detect overlaps with existing backlog items, and present the batch for user validation at Gate 1.
13
+ Extract actionable findings from the ingested text, detect overlaps with existing Intakes and lane items, and present the batch for user validation at Gate 1. Each validated finding will become an **Intake** (§2.1) in the backlog — not directly a lane item.
14
14
 
15
15
  ## MANDATORY EXECUTION RULES (READ FIRST):
16
16
 
@@ -24,69 +24,72 @@ Extract actionable findings from the ingested text, classify each into a backlog
24
24
  - ✅ You are a **findings extraction analyst** — thorough, systematic, evidence-based
25
25
  - ✅ Extract what the input actually says — do not invent findings or impose interpretations
26
26
  - ✅ The user validates your extraction at Gate 1 — you propose, they decide
27
+ - ✅ Every finding becomes an Intake — lane assignment is a separate step (step-t-03 Qualify)
27
28
 
28
29
  ### Step-Specific Rules:
29
- - 🎯 Focus on extraction, classification, and overlap detection
30
- - 🚫 FORBIDDEN to score findings (RICE scoring is step-t-03's job)
30
+ - 🎯 Focus on extraction, overlap detection against Intakes and lane items, and Gate 1 validation
31
+ - 🚫 FORBIDDEN to assign a lane (Bug/Fast/Initiative) that is step-t-03's job (the qualifying gate)
32
+ - 🚫 FORBIDDEN to score RICE — that is step-t-03's job for qualified items
31
33
  - 🚫 FORBIDDEN to write to the backlog file (that is step-t-04's job)
32
- - 🚫 FORBIDDEN to truncate or skip any part of the input text (FR46)
34
+ - 🚫 FORBIDDEN to truncate or skip any part of the input text
33
35
  - 💬 Approach: systematic extraction, then collaborative validation at Gate 1
34
36
 
35
37
  ## EXECUTION PROTOCOLS:
36
38
  - 🎯 Follow the MANDATORY SEQUENCE exactly
37
- - 📖 Load {templateFile} for category reference
39
+ - 📖 Load {templateFile} for file structure reference
38
40
  - 💾 Track extraction state — redisplay updated batch after every Gate 1 edit
39
41
 
40
42
  ## CONTEXT BOUNDARIES:
41
- - Available context: User's input text (from step-t-01), existing backlog (if loaded), backlog format spec template
43
+ - Available context: User's input text (from step-t-01), existing backlog (if loaded), backlog format spec
42
44
  - Focus: Extraction and Gate 1 validation only
43
- - Limits: Do NOT score or write to backlog
45
+ - Limits: Do NOT qualify findings into lanes or write to backlog
44
46
  - Dependencies: step-t-01-ingest.md (input text accepted)
45
47
 
46
48
  ## MANDATORY SEQUENCE
47
49
 
48
50
  **CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
49
51
 
50
- ### 1. Load Category Reference
52
+ ### 1. Load Format Reference
51
53
 
52
- Load `{templateFile}` (backlog-format-spec.md) and extract the category names from the "Category Names" section. Current categories:
53
-
54
- - Documentation & Onboarding
55
- - Update & Migration System
56
- - Testing & CI
57
- - Infrastructure
58
- - Agent Quality & Consistency
59
- - Platform & Product Vision
60
-
61
- New categories may be proposed if a finding doesn't fit any existing category.
54
+ Load `{templateFile}` (backlog-format-spec.md) and note the structure:
55
+ - §2.1 Intakes is the append target for this step's output
56
+ - §2.2 Bug Lane, §2.3 Fast Lane, §2.4 Initiative Lane contain already-qualified items
57
+ - §2.5 Absorbed / Archived contains removed items
62
58
 
63
59
  ### 2. Extract Actionable Findings
64
60
 
65
- Process the **complete** input text from step-t-01. Do NOT truncate, summarize, or skip sections (FR46).
61
+ Process the **complete** input text from step-t-01. Do NOT truncate, summarize, or skip sections.
66
62
 
67
63
  For each passage in the input, determine if it is **actionable**. A finding is actionable if it:
68
64
  - **Proposes a change** (something should be different)
69
65
  - **Identifies a gap** (something is missing)
70
66
  - **Flags a risk** (something could go wrong)
67
+ - **Reports a break** (something is observably broken)
71
68
 
72
69
  Non-actionable content (general comments, praise, questions without implied action, status updates) should be set aside as **observations** — they are NOT included in the extraction batch but may be escalated at Gate 1.
73
70
 
74
71
  For each actionable finding, record:
75
72
  1. **Finding number** — sequential (1, 2, 3...)
76
- 2. **Title** — concise summary (matches backlog Initiative column style)
77
- 3. **Category** — one of the categories from step 1 (or propose a new one)
78
- 4. **Source reference** — which part of the input it came from (e.g., "paragraph 3", "under 'Performance Issues' heading", "line about caching") (FR4)
79
- 5. **Type** — Change / Gap / Risk
73
+ 2. **Title** — concise summary (matches lane table style)
74
+ 3. **Source reference** — which part of the input it came from (e.g., "paragraph 3", "under 'Performance Issues' heading", "line about caching")
75
+ 4. **Type** — Change / Gap / Risk / Break
80
76
 
81
77
  ### 3. Detect Overlaps with Existing Backlog
82
78
 
83
79
  **Skip this step if no existing backlog was loaded in step-t-01.**
84
80
 
85
- For each extracted finding, compare against existing backlog items by semantic similarity (title + description). Flag potential overlaps when a finding appears to address the same concern as an existing item.
81
+ For each extracted finding, compare against **all existing items**:
82
+ - §2.1 Intakes (unqualified items)
83
+ - §2.2 Bug Lane items
84
+ - §2.3 Fast Lane items
85
+ - §2.4 Initiative Lane items
86
+ - §2.5 Absorbed/Archived items (flag if finding restates something already absorbed)
87
+
88
+ Compare by semantic similarity (title + description). Flag potential overlaps when a finding appears to address the same concern as an existing item.
86
89
 
87
90
  For each overlap flag, record:
88
- - The existing item's **ID** (e.g., D2, P4)
89
- - The existing item's **title**
91
+ - The existing item's **location** (Intakes, Fast Lane, Initiative Lane, Absorbed, etc.)
92
+ - The existing item's **ID** and **title**
90
93
  - Brief explanation of why it might overlap
91
94
 
92
95
  ### 4. Handle Zero Findings
@@ -97,7 +100,7 @@ Display:
97
100
 
98
101
  > **No actionable findings extracted from the input.**
99
102
  >
100
- > The input contained no content that proposes a change, identifies a gap, or flags a risk.
103
+ > The input contained no content that proposes a change, identifies a gap, flags a risk, or reports a break.
101
104
  >
102
105
  > **Options:**
103
106
  > - Paste a specific passage you'd like me to re-examine
@@ -118,15 +121,17 @@ Display the extraction results in a numbered list:
118
121
  >
119
122
  > **Actionable findings extracted: [N]**
120
123
  >
121
- > | # | Finding | Category | Source | Type | Overlap |
122
- > |---|---------|----------|--------|------|---------|
123
- > | 1 | [title] | [category] | [source ref] | Change | — |
124
- > | 2 | [title] | [category] | [source ref] | Gap | ⚠️ Overlaps D2: "[existing title]" |
125
- > | 3 | [title] | [category] | [source ref] | Risk | — |
124
+ > | # | Finding | Source | Type | Overlap |
125
+ > |---|---------|--------|------|---------|
126
+ > | 1 | [title] | [source ref] | Change | — |
127
+ > | 2 | [title] | [source ref] | Gap | ⚠️ Overlaps §2.3 Fast Lane I15: "[existing title]" |
128
+ > | 3 | [title] | [source ref] | Break | — |
126
129
  >
127
130
  > **Observations (not included — escalate with `E` if actionable):**
128
131
  > - [observation 1]
129
132
  > - [observation 2]
133
+ >
134
+ > *Each validated finding will be logged as an Intake (§2.1). Qualification into a lane happens in the next step.*
130
135
 
131
136
  ### 6. Present GATE 1 MENU OPTIONS
132
137
 
@@ -135,25 +140,25 @@ Display:
135
140
  > **Gate 1 — Edit the extraction batch:**
136
141
  >
137
142
  > **Overlap resolution** (for flagged items only):
138
- > - `merge #N` — Absorb finding into the existing overlapping item
143
+ > - `merge #N` — Absorb finding into the existing overlapping item (no new intake created)
139
144
  > - `skip #N` — Drop finding (existing item is sufficient)
140
- > - `new #N` — Override overlap flag, keep as separate new item
145
+ > - `new #N` — Override overlap flag, keep as separate new intake
141
146
  >
142
147
  > **Batch editing:**
143
148
  > - `E #N` — Escalate observation #N to actionable finding
144
149
  > - `+ [title — description]` — Add a finding the workflow missed
145
150
  > - `R #N` — Remove finding #N from the batch
146
151
  >
147
- > **[C] Continue** — Finalize batch and proceed to RICE scoring
152
+ > **[C] Continue** — Finalize batch and proceed to qualifying gate
148
153
 
149
154
  #### Menu Handling Logic:
150
155
  - IF `merge #N`: Mark finding #N as merged with existing item. Remove from batch. Redisplay updated batch and menu.
151
156
  - IF `skip #N`: Remove finding #N from batch. Redisplay updated batch and menu.
152
- - IF `new #N`: Clear overlap flag on finding #N (will be added as new item). Redisplay updated batch and menu.
153
- - IF `E #N`: Move observation #N into the findings batch as actionable. Assign a category and source ref. Redisplay updated batch and menu.
154
- - IF `+ [text]`: Add a new finding to the batch. Ask user for category if not obvious. Redisplay updated batch and menu.
157
+ - IF `new #N`: Clear overlap flag on finding #N (will be added as new intake). Redisplay updated batch and menu.
158
+ - IF `E #N`: Move observation #N into the findings batch as actionable. Assign a source ref. Redisplay updated batch and menu.
159
+ - IF `+ [text]`: Add a new finding to the batch. Assign a source ref (likely "user-added"). Redisplay updated batch and menu.
155
160
  - IF `R #N`: Remove finding #N from the batch. Redisplay updated batch and menu.
156
- - IF C: Finalize the batch. Load, read the entire file, and execute `{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-03-score.md`
161
+ - IF C: Finalize the batch. Load, read the entire file, and execute `{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-03-qualify.md`
157
162
  - IF any other input: Display "Unknown command. Use `merge/skip/new #N`, `E #N`, `+ [text]`, `R #N`, or **C** to continue." then redisplay menu.
158
163
 
159
164
  #### EXECUTION RULES:
@@ -164,6 +169,6 @@ Display:
164
169
  - Do NOT auto-continue — the user must explicitly approve the batch
165
170
 
166
171
  ## 🚨 SYSTEM SUCCESS/FAILURE METRICS:
167
- ### ✅ SUCCESS: All actionable findings extracted with categories and source refs, overlaps detected, user validated batch at Gate 1, confirmed findings passed to step-t-03
168
- ### ❌ SYSTEM FAILURE: Input truncated, findings invented (not from input), overlaps missed, user not given Gate 1 validation opportunity, findings scored prematurely
172
+ ### ✅ SUCCESS: All actionable findings extracted with source refs, overlaps detected across all backlog sections, user validated batch at Gate 1, confirmed findings passed to step-t-03 for qualification
173
+ ### ❌ SYSTEM FAILURE: Input truncated, findings invented (not from input), overlaps missed, user not given Gate 1 validation opportunity, findings qualified or scored prematurely
169
174
  **Master Rule:** Skipping steps is FORBIDDEN.
@@ -0,0 +1,192 @@
1
+ ---
2
+ name: 'step-t-03-qualify'
3
+ description: 'Qualifying gate — assign Lane, Portfolio, and RICE score for each validated finding. Optional skip keeps the finding as a raw intake.'
4
+ nextStepFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-04-update.md'
5
+ outputFile: '{planning_artifacts}/convoke-note-initiative-lifecycle-backlog.md'
6
+ templateFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/templates/rice-scoring-guide.md'
7
+ processFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/templates/lifecycle-process-spec.md'
8
+ advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
9
+ partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
10
+ ---
11
+
12
+ # Step 3: Qualifying Gate (Lane + Portfolio + RICE)
13
+
14
+ ## STEP GOAL:
15
+
16
+ Run the **qualifying gate** on each validated finding from Gate 1. For each finding, the qualifier (Vortex, John, or Winston) assigns a **Lane** (Bug / Fast / Initiative), a **Portfolio** attachment, and an initial **RICE** score. Findings the qualifier is not ready to route stay logged as raw intakes in §2.1 with no lane.
17
+
18
+ ## MANDATORY EXECUTION RULES (READ FIRST):
19
+
20
+ ### Universal Rules:
21
+ - 🛑 NEVER generate lane/portfolio/RICE without user input — the qualifying gate is user-driven
22
+ - 📖 CRITICAL: Read this complete step file before taking action
23
+ - 🔄 CRITICAL: When loading next step with 'C', read the entire file
24
+ - 📋 YOU ARE A QUALIFYING-GATE FACILITATOR supporting the qualifier (Vortex / John / Winston)
25
+
26
+ ### Role Reinforcement:
27
+ - ✅ You are a **qualifying gate facilitator** — propose, don't decide; the qualifier decides
28
+ - ✅ Only Vortex team, John, or Winston can qualify. Confirm the user is acting in one of those roles.
29
+ - ✅ Propose lane/portfolio/RICE based on finding description, but flag uncertainty plainly
30
+ - ✅ Every finding ends this step in one of two states: **qualified** (lane + portfolio + RICE) or **raw intake** (logged to §2.1 only)
31
+
32
+ ### Step-Specific Rules:
33
+ - 🎯 Focus on lane assignment, portfolio attachment, and RICE scoring
34
+ - 🚫 FORBIDDEN to write to the backlog file (that is step-t-04's job)
35
+ - 🚫 FORBIDDEN to re-extract or re-classify findings (that was step-t-02's job)
36
+ - 🚫 FORBIDDEN to add new findings here (new findings require a fresh Triage run)
37
+ - 💬 Approach: walk findings one at a time, propose + decide, track state
38
+
39
+ ## EXECUTION PROTOCOLS:
40
+ - 🎯 Follow the MANDATORY SEQUENCE exactly
41
+ - 📖 Load {templateFile} for RICE factor definitions and calibration examples
42
+ - 📖 Load {processFile} for lane definitions and portfolio taxonomy
43
+ - 💾 Track each finding's qualification decision for step-t-04
44
+
45
+ ## CONTEXT BOUNDARIES:
46
+ - Available context: Validated findings from Gate 1 (step-t-02), RICE scoring guide, lifecycle process spec, existing backlog
47
+ - Focus: Qualifying gate per-finding
48
+ - Limits: Do NOT write to backlog or modify extraction results
49
+ - Dependencies: step-t-02-extract.md (Gate 1 validated findings)
50
+
51
+ ## MANDATORY SEQUENCE
52
+
53
+ **CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
54
+
55
+ ### 1. Load References
56
+
57
+ Load `{templateFile}` (rice-scoring-guide.md) and internalize:
58
+ - **Factor definitions:** Reach (1-10), Impact (0.25-3), Confidence (20-100%), Effort (1-10)
59
+ - **Guided questions** for each factor
60
+ - **Calibration examples** (study the reasoning, not just the numbers)
61
+ - **Composite formula:** Score = (R × I × C) / E, where C is decimal (e.g., 70% = 0.7)
62
+
63
+ Load `{processFile}` (lifecycle-process-spec.md) and internalize:
64
+ - **§1.3 Three Lanes** — Bug / Fast / Initiative triggers and rules
65
+ - **§1.4 Portfolio Attachment** — current taxonomy (convoke, vortex, gyre, forge, bmm, enhance, loom, helm) and growth rule
66
+ - **§1.6 RICE Scoring** — lane-specific scoring notes
67
+
68
+ ### 2. Confirm Qualifier Role
69
+
70
+ Display:
71
+
72
+ > **Qualifying Gate — Confirm Qualifier**
73
+ >
74
+ > Only three parties can qualify intakes:
75
+ > - **[V] Vortex** team (via discovery)
76
+ > - **[J] John** (PM shortcut)
77
+ > - **[W] Winston** (Architect shortcut)
78
+ >
79
+ > Who is qualifying in this session?
80
+
81
+ Record the qualifier identity. If the user declines to pick one, display: "Qualifying requires an authorized qualifier (Vortex, John, or Winston). You can still log findings as raw intakes — type `raw-only` to skip qualification for this session." and accept either a role letter or `raw-only`.
82
+
83
+ ### 3. Walk Findings One at a Time
84
+
85
+ Initialize:
86
+ - `qualified_items = []` — findings with lane + portfolio + RICE assigned
87
+ - `raw_intakes = []` — findings kept as intakes only (no lane)
88
+ - `current_index = 1`
89
+
90
+ For each finding from Gate 1:
91
+
92
+ #### 3a. Present Finding & Proposed Qualification
93
+
94
+ Display:
95
+
96
+ > **Finding [current_index] of [total]**
97
+ >
98
+ > **Title:** [title]
99
+ > **Source:** [source ref]
100
+ > **Type:** [Change/Gap/Risk/Break]
101
+ >
102
+ > **Proposed qualification:**
103
+ > - **Lane:** [proposed lane with brief rationale, e.g., "Fast Lane — single-module point fix"]
104
+ > - **Portfolio:** [proposed portfolio, e.g., "convoke"]
105
+ > - **RICE:** R:[r] I:[i] C:[c]% E:[e] = [score]
106
+ > *[one-line RICE rationale]*
107
+ >
108
+ > *If Type is `Break`, default lane is Bug and RICE impact defaults to 2+ unless narrow scope.*
109
+
110
+ #### 3b. Present Per-Finding Menu
111
+
112
+ Display:
113
+
114
+ > **Review this qualification:**
115
+ >
116
+ > **Lane override:**
117
+ > - `L bug` / `L fast` / `L initiative` — Change lane
118
+ > - `L none` — Keep as raw intake (no lane, stays in §2.1 only)
119
+ >
120
+ > **Portfolio override:**
121
+ > - `P [item]` — Set portfolio (convoke, vortex, gyre, forge, bmm, enhance, loom, helm, or a new portfolio)
122
+ > - `P new [name] — [rationale]` — Propose a new portfolio item (John+Winston decision per §1.4)
123
+ >
124
+ > **RICE adjustments:**
125
+ > - `R [value]` — Reach (1-10)
126
+ > - `I [value]` — Impact (0.25, 0.5, 1, 2, or 3)
127
+ > - `CF [value]` — Confidence (20-100%)
128
+ > - `E [value]` — Effort (1-10)
129
+ >
130
+ > **Decisions:**
131
+ > - `K` — Keep/accept proposed qualification
132
+ > - `RAW` — Log as raw intake only (§2.1); no lane assigned
133
+ > - `S` — Skip this finding (not logged, dropped)
134
+ > - `X` — Exit qualification early (remaining findings become raw intakes)
135
+ >
136
+ > **[A] Advanced Elicitation** — Deeper analysis
137
+ > **[P] Party Mode** — Multi-perspective discussion
138
+ > **[C] Continue** — Apply current qualification and advance to next finding
139
+
140
+ #### Menu Handling Logic:
141
+ - IF `L bug/fast/initiative`: Update lane. If lane is `bug`, note RICE impact may be hardcoded. Redisplay.
142
+ - IF `L none`: Mark finding for raw-intake-only routing. Redisplay.
143
+ - IF `P [item]`: Update portfolio. If `new`, record the proposal for John+Winston review in Change Log. Redisplay.
144
+ - IF `R/I/CF/E [value]`: Validate range. Update, recalculate composite, redisplay.
145
+ - IF K: Accept current state. Add to `qualified_items` (or `raw_intakes` if lane is `none`). Advance to next finding.
146
+ - IF RAW: Add to `raw_intakes`. Advance to next finding.
147
+ - IF S: Drop finding entirely (note in Change Log). Advance to next finding.
148
+ - IF X: Remaining findings become raw intakes. Go to step 4.
149
+ - IF A: Execute `{advancedElicitationTask}`. When finished, redisplay.
150
+ - IF P: Execute `{partyModeWorkflow}`. When finished, redisplay.
151
+ - IF C: Same as K if no change was made; otherwise record adjustments, advance.
152
+ - IF any other input: Display error, redisplay menu.
153
+
154
+ #### 3c. Advance
155
+ Increment `current_index`. If `<= total`, go to 3a. Otherwise go to step 4.
156
+
157
+ ### 4. Present Qualification Summary
158
+
159
+ Display:
160
+
161
+ > **Qualification Complete**
162
+ >
163
+ > **Qualified items (will be added to lanes):** [N]
164
+ > **Raw intakes (logged to §2.1 only):** [N]
165
+ > **Dropped:** [N]
166
+ > [If early exit: **Auto-converted to raw intakes:** [N]]
167
+ >
168
+ > **Qualified breakdown:**
169
+ > - Bug Lane: [N]
170
+ > - Fast Lane: [N]
171
+ > - Initiative Lane: [N]
172
+ >
173
+ > **Qualifier:** [Vortex / John / Winston / raw-only]
174
+
175
+ ### 5. Present MENU OPTIONS
176
+
177
+ Display:
178
+
179
+ > **[C] Continue** — Write qualifications to backlog (step-t-04)
180
+ > **[R] Revisit** — Walk findings again (re-enter step 3)
181
+ > **[X] Abort** — Return to mode selection without writing
182
+
183
+ #### Menu Handling Logic:
184
+ - IF C: Load, read the entire file, and execute `{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-04-update.md`, passing `qualified_items`, `raw_intakes`, `dropped_items`, and the qualifier identity.
185
+ - IF R: Re-enter step 3 from `current_index = 1`. Preserve existing decisions but allow edits.
186
+ - IF X: Discard all qualifications. Load, read, and execute `{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/workflow.md`.
187
+ - IF any other input: Display error, redisplay menu.
188
+
189
+ ## 🚨 SYSTEM SUCCESS/FAILURE METRICS:
190
+ ### ✅ SUCCESS: Every finding either qualified (lane + portfolio + RICE) or routed to raw intakes, qualifier identity recorded, user validated decisions, results passed to step-t-04
191
+ ### ❌ SYSTEM FAILURE: Qualification performed without authorized qualifier, findings assigned to lane without RICE, findings lost between steps, step-t-04 invoked with missing data
192
+ **Master Rule:** Skipping steps is FORBIDDEN.
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: 'step-t-04-update'
3
- description: 'Validate backlog structure, append scored items safely, regenerate prioritized view, and present completion summary'
4
- outputFile: '{planning_artifacts}/initiatives-backlog.md'
3
+ description: 'Validate backlog structure, log every finding as an Intake in §2.1, append qualified items to their lanes, update Change Log, and present completion summary'
4
+ outputFile: '{planning_artifacts}/convoke-note-initiative-lifecycle-backlog.md'
5
5
  templateFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/templates/backlog-format-spec.md'
6
6
  workflowFile: '{project-root}/_bmad/bme/_enhance/workflows/initiatives-backlog/workflow.md'
7
7
  ---
8
8
 
9
- # Step 4: Backlog Update, Safety & Completion
9
+ # Step 4: Backlog Update Log Intakes & Append Qualified Items
10
10
 
11
11
  ## STEP GOAL:
12
12
 
13
- Validate backlog structure, safely append scored items from Gate 2, regenerate the prioritized view, and present a completion summary before returning to the T/R/C menu.
13
+ Validate backlog structure, log every finding (qualified or raw) as an **Intake** in §2.1 (the audit trail), append qualified items to their assigned lane's table (§2.2 Bug / §2.3 Fast / §2.4 Initiative), update the Change Log, and present a completion summary before returning to the T/R/C menu.
14
14
 
15
15
  ## MANDATORY EXECUTION RULES (READ FIRST):
16
16
 
@@ -21,17 +21,18 @@ Validate backlog structure, safely append scored items from Gate 2, regenerate t
21
21
  - 📋 YOU ARE A BACKLOG OPERATIONS SPECIALIST performing safe, structured writes
22
22
 
23
23
  ### Role Reinforcement:
24
- - ✅ You are a **backlog operations specialist** — precise, non-destructive, append-only
25
- - ✅ Preserve all existing content — never delete, overwrite, or reorder existing rows
26
- - ✅ The Prioritized View is the ONLY section regenerated from scratch
24
+ - ✅ You are a **backlog operations specialist** — precise, non-destructive, append-only for lanes and intakes
25
+ - ✅ Preserve all existing content — never delete, overwrite, or reorder existing rows outside the touched lane's sort update
26
+ - ✅ **Part 1 (Lifecycle Process) must not be modified** it's semi-static documentation
27
+ - ✅ Every qualified item generates **two** rows: one in §2.1 Intakes (audit trail) AND one in the assigned lane
27
28
  - ✅ All output must be standard markdown — no HTML, no proprietary syntax
28
29
 
29
30
  ### Step-Specific Rules:
30
31
  - 🎯 Focus on validation, safe writes, and completion reporting
31
- - 🚫 FORBIDDEN to delete or reorder existing backlog items (FR18, NFR1)
32
- - 🚫 FORBIDDEN to re-score items (scoring was finalized at Gate 2)
33
- - 🚫 FORBIDDEN to modify step-t-01, step-t-02, or step-t-03
34
- - 💬 Approach: validate first, write safely, summarize clearly
32
+ - 🚫 FORBIDDEN to delete or reorder existing §2.1 Intakes (append-only per §1.1)
33
+ - 🚫 FORBIDDEN to re-qualify items (qualification was finalized at step-t-03)
34
+ - 🚫 FORBIDDEN to modify Part 1 (Lifecycle Process) — load it for context only
35
+ - 💬 Approach: validate first, write intakes + lane items safely, summarize clearly
35
36
 
36
37
  ## EXECUTION PROTOCOLS:
37
38
  - 🎯 Follow the MANDATORY SEQUENCE exactly
@@ -39,10 +40,10 @@ Validate backlog structure, safely append scored items from Gate 2, regenerate t
39
40
  - 💾 Write to `{outputFile}` only after validation passes (or user overrides)
40
41
 
41
42
  ## CONTEXT BOUNDARIES:
42
- - Available context: Scored findings from Gate 2, existing backlog file, backlog format spec template
43
- - Focus: Structural validation, safe append, prioritized view regeneration, completion summary
44
- - Limits: Do NOT re-score, re-extract, or re-classify items
45
- - Dependencies: step-t-03-score.md (scored findings from Gate 2)
43
+ - Available context: Qualified items + raw intakes + dropped items from step-t-03, qualifier identity, existing backlog file, format spec
44
+ - Focus: Structural validation, append to §2.1 and lanes, lane sort, Change Log, completion summary
45
+ - Limits: Do NOT re-qualify, re-extract, or re-classify items; do NOT modify Part 1
46
+ - Dependencies: step-t-03-qualify.md (qualified + raw items + qualifier identity)
46
47
 
47
48
  ## MANDATORY SEQUENCE
48
49
 
@@ -50,21 +51,25 @@ Validate backlog structure, safely append scored items from Gate 2, regenerate t
50
51
 
51
52
  ### 1. Pre-Write Validation
52
53
 
53
- Load `{outputFile}` (existing backlog) and validate structural integrity:
54
-
55
- 1. **Section heading anchors** — All 7 required H2 sections exist in correct order:
56
- - `## RICE Scoring Guide`
57
- - `## Backlog`
58
- - `## Exploration Candidates`
59
- - `## Epic Groupings`
60
- - `## Prioritized View (by RICE Score)`
61
- - `## Completed`
62
- - `## Change Log`
63
- 2. **Prioritized view table** — Has exactly 6 columns (Rank, #, Initiative, Score, Track, Category)
64
- 3. **Category tables** — Each table under `## Backlog` has exactly 10 columns (#, Initiative, Source, R, I, C, E, Score, Track, Status)
65
- 4. **Change Log section** — The `## Change Log` H2 section exists with a table
66
-
67
- If ALL checks pass, proceed directly to step 3 (Append Items).
54
+ Load `{outputFile}` (existing backlog) and validate structural integrity per format spec:
55
+
56
+ 1. **Frontmatter present** — YAML block at top of file.
57
+ 2. **Part 1 section anchor** — `## Part 1: Lifecycle Process` exists. (Content is not inspected — only the anchor.)
58
+ 3. **Part 2 section anchors** — All five H3 sections exist in correct order under `## Part 2: Backlog`:
59
+ - `### 2.1 Intakes (Unqualified)`
60
+ - `### 2.2 Bug Lane`
61
+ - `### 2.3 Fast Lane (Quick Wins + Spikes)`
62
+ - `### 2.4 Initiative Lane`
63
+ - `### 2.5 Absorbed / Archived`
64
+ 4. **Table column counts:**
65
+ - §2.1 Intakes: 5 columns (ID, Description, Source, Date, Raiser)
66
+ - §2.2 Bug Lane: 10 columns
67
+ - §2.3 Fast Lane: 9 columns
68
+ - §2.4 Initiative Lane: 10 columns
69
+ 5. **Change Log section** — `## Change Log` H2 exists with a table.
70
+ 6. **File missing guard** — If the backlog file does not exist, display: "No backlog file found at `{outputFile}`. Triage cannot create a new file — use Create mode [C] first." Then load workflow.md and return.
71
+
72
+ If ALL checks pass, proceed directly to step 3 (Append Intakes).
68
73
 
69
74
  ### 2. Mismatch Handling
70
75
 
@@ -79,54 +84,50 @@ If ANY validation check fails, present the specific mismatch(es):
79
84
 
80
85
  **ALWAYS halt and wait for user input.**
81
86
 
82
- - IF Y: Continue to step 3 (Append Items)
83
- - IF X: Display "Aborting backlog update." then load, read the entire file, and execute `{workflowFile}` to return to mode selection
84
- - IF any other input: Display "Please select **Y** or **X**." then redisplay the prompt
87
+ - IF Y: Continue to step 3.
88
+ - IF X: Display "Aborting backlog update." then load, read the entire file, and execute `{workflowFile}` to return to mode selection.
89
+ - IF any other input: Display "Please select **Y** or **X**." then redisplay the prompt.
85
90
 
86
- ### 3. Append Items
91
+ ### 3. Append Intakes to §2.1
87
92
 
88
- For each scored item from Gate 2:
93
+ For **every** finding that reached this step (qualified + raw intake + dropped), append a row to §2.1 Intakes:
89
94
 
90
- 1. **Find target category** — Locate the H3 section under `## Backlog` matching the item's category
91
- 2. **Create category if needed** — If category doesn't exist, add a new H3 heading with a 10-column table at the end of `## Backlog` (before `## Exploration Candidates`)
92
- 3. **Generate item ID** — Use category prefix letter (D/U/T/I/A/P) + next number (increment from highest existing in that category)
93
- 4. **Append row** — Add new row to end of category table. NEVER delete, overwrite, or reorder existing rows
94
- 5. **Add provenance** — Include in the Initiative description: `Added from [source], [date]` where source is the input origin from step-t-01 and date is the current session date
95
+ 1. **Generate Intake ID** — `IN-{n}` where `n` is the next sequential integer after the highest existing IN-ID in §2.1.
96
+ 2. **Description** — concise one-line summary from the finding.
97
+ 3. **Source** — session origin (e.g., "party mode 2026-04-15", "code review ag-7-5", "retrospective sp-epic-5").
98
+ 4. **Date** — current session date (YYYY-MM-DD, absolute).
99
+ 5. **Raiser** — the qualifier identity from step-t-03 (Vortex / John / Winston / raw-only).
95
100
 
96
- **Column format** (10 columns per backlog-format-spec.md):
97
- ```
98
- | [ID] | **[Title]** — [description]. Added from [source], [date] | [source ref] | [R] | [I] | [C]% | [E] | [score] | [track] | Backlog |
99
- ```
101
+ **Do NOT delete or reorder existing Intake rows.** Append new rows at the end of the table.
100
102
 
101
- **Important:** Triage Gate 2 adjustments are the initial score no rescore provenance is generated.
103
+ **Dropped items are also logged to §2.1** with a Description prefixed `[DROPPED]` and the reason in the Change Log. This preserves the audit trail even for findings the qualifier chose not to route.
102
104
 
103
- ### 4. Regenerate Prioritized View
105
+ ### 4. Append Qualified Items to Their Lanes
104
106
 
105
- Rebuild the `## Prioritized View (by RICE Score)` table from scratch:
107
+ For each item in `qualified_items` (i.e., findings routed to Bug / Fast / Initiative):
106
108
 
107
- 1. Collect ALL active items from all category tables (existing + newly appended)
108
- 2. Exclude items with Status "Done" or items in the `## Completed` section
109
- 3. Sort by composite RICE score descending
110
- 4. Tiebreak: (1) Higher Confidence first, (2) Newer insertion order first
111
- 5. Generate sequential rank numbers starting at 1
109
+ 1. **Find target lane table** §2.2 (Bug), §2.3 (Fast), or §2.4 (Initiative).
110
+ 2. **Generate lane ID:**
111
+ - Bug Lane: `BUG-{n}` sequential.
112
+ - Fast Lane + Initiative Lane: single alpha prefix from a simple heuristic (U for Update, I for Infrastructure, T for Testing, A for Agent, D for Doc, P for Platform). If uncertain, use `Q-{n}` (for Qualified-uncategorized).
113
+ 3. **Append row** with the columns defined in the format spec for the target lane. Include the RICE score rationale as a tail note only if it aids future review (keep rows compact).
114
+ 4. **Cross-reference** — In the Intake row's Description cell (in §2.1), append ` → [laneID]` so intake→lane linkage is preserved.
115
+ 5. **Re-sort the touched lane's table by composite RICE score descending.** Tiebreak: Confidence higher first, then insertion order newer first.
112
116
 
113
- Table format (6 columns):
114
- ```
115
- | Rank | # | Initiative | Score | Track | Category |
116
- |------|---|-----------|-------|-------|----------|
117
- ```
117
+ **Never delete, overwrite, or reorder rows in lanes that were not touched this session.**
118
118
 
119
- ### 5. Add Changelog Entry
119
+ ### 5. Add Change Log Entry
120
120
 
121
121
  Prepend a new row to the `## Change Log` table (newest first):
122
122
 
123
123
  ```
124
- | YYYY-MM-DD | Triage: Added [N] items ([categories affected]). [Any merge notes if applicable] |
124
+ | YYYY-MM-DD | Triage by [Qualifier]: Logged [N] intakes. Qualified [X] ([Bug: a, Fast: b, Initiative: c]). Raw intakes: [Y]. Dropped: [Z]. [Any new portfolio proposals flagged.] |
125
125
  ```
126
126
 
127
- ### 6. Update Last Updated Date
127
+ ### 6. Update Frontmatter
128
128
 
129
- Set the metadata header `Last Updated` field to the current date (YYYY-MM-DD format).
129
+ - Set `status: active` if this is the first write to the file (was `draft`).
130
+ - Do NOT modify the `created` date.
130
131
 
131
132
  ### 7. Completion Summary & Return to Menu
132
133
 
@@ -134,11 +135,15 @@ After successful write, display:
134
135
 
135
136
  > **Triage Complete**
136
137
  >
137
- > **Items added:** [N]
138
- > **Items merged:** [N] (absorbed into existing items at Gate 1)
139
- > **Categories affected:** [list]
138
+ > **Intakes logged:** [N]
139
+ > **Qualified into lanes:** [X]
140
+ > - Bug Lane: [n]
141
+ > - Fast Lane: [n]
142
+ > - Initiative Lane: [n]
143
+ > **Raw intakes (awaiting qualification):** [Y]
144
+ > **Dropped (logged with reason):** [Z]
140
145
  >
141
- > **New Top 3 Positions:**
146
+ > **Top 3 Fast Lane positions (post-sort):**
142
147
  > 1. [#ID] [title] — Score: [X.X]
143
148
  > 2. [#ID] [title] — Score: [X.X]
144
149
  > 3. [#ID] [title] — Score: [X.X]
@@ -150,6 +155,6 @@ Then return to the T/R/C menu:
150
155
  Load, read the entire file, and execute `{workflowFile}`.
151
156
 
152
157
  ## 🚨 SYSTEM SUCCESS/FAILURE METRICS:
153
- ### ✅ SUCCESS: Pre-write validation performed, existing content preserved, items appended with correct IDs and provenance, prioritized view regenerated with all items sorted correctly, changelog updated, completion summary displayed with top 3, T/R/C menu re-presented
154
- ### ❌ SYSTEM FAILURE: Existing backlog content deleted/overwritten/reordered, items written without validation, wrong IDs or missing provenance, prioritized view not regenerated, no completion summary, no return to menu
158
+ ### ✅ SUCCESS: Validation performed, every finding logged as an Intake (audit trail complete), qualified items appended to correct lanes with proper IDs, lanes re-sorted by RICE, Change Log updated with qualifier identity and counts, completion summary displayed, menu re-presented
159
+ ### ❌ SYSTEM FAILURE: Findings not logged as Intakes, qualified items written without the cross-reference in Intakes, Part 1 modified, existing rows deleted/reordered, Change Log missing the qualifier identity, dropped items lost without audit trail
155
160
  **Master Rule:** Skipping steps is FORBIDDEN.