wize-dev-kit 0.1.5 → 0.2.5
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.
- package/CHANGELOG.md +130 -1
- package/README.md +64 -0
- package/package.json +1 -1
- package/src/method-skills/1-analysis/wize-document-project/workflow.md +188 -20
- package/src/method-skills/1-analysis/wize-prfaq/workflow.md +150 -11
- package/src/method-skills/1-analysis/wize-product-brief/workflow.md +90 -19
- package/src/method-skills/1-analysis/wize-refresh-knowledge/workflow.md +127 -0
- package/src/method-skills/1-analysis/wize-research/workflow.md +101 -9
- package/src/method-skills/1-analysis/wize-trigger-map/workflow.md +80 -16
- package/src/method-skills/2-plan-workflows/wize-create-prd/workflow.md +132 -23
- package/src/method-skills/2-plan-workflows/wize-ux-design/workflow.md +132 -28
- package/src/method-skills/2-plan-workflows/wize-ux-scenarios/workflow.md +91 -15
- package/src/method-skills/2-plan-workflows/wize-validate-prd/workflow.md +106 -12
- package/src/method-skills/3-solutioning/wize-check-implementation-readiness/workflow.md +101 -11
- package/src/method-skills/3-solutioning/wize-create-architecture/workflow.md +197 -29
- package/src/method-skills/3-solutioning/wize-create-epics-and-stories/workflow.md +127 -12
- package/src/method-skills/3-solutioning/wize-design-system/workflow.md +182 -22
- package/src/method-skills/3-solutioning/wize-nfr-principles/workflow.md +142 -16
- package/src/method-skills/3-solutioning/wize-tech-vision/workflow.md +127 -21
- package/src/method-skills/4-implementation/wize-code-review/workflow.md +105 -10
- package/src/method-skills/4-implementation/wize-create-story/workflow.md +131 -10
- package/src/method-skills/4-implementation/wize-dev-story/workflow.md +140 -17
- package/src/method-skills/4-implementation/wize-quick-dev/workflow.md +121 -18
- package/src/method-skills/4-implementation/wize-retrospective/workflow.md +112 -10
- package/src/method-skills/4-implementation/wize-sprint-planning/workflow.md +85 -10
- package/src/method-skills/4-implementation/wize-sprint-status/workflow.md +96 -11
- package/src/orchestrator-skills/wize-help/skill.md +25 -1
- package/src/tea-skills/wize-tea-design/workflow.md +104 -13
- package/src/tea-skills/wize-tea-gate/workflow.md +115 -25
- package/src/tea-skills/wize-tea-nfr/workflow.md +104 -14
- package/src/tea-skills/wize-tea-review/workflow.md +120 -13
- package/src/tea-skills/wize-tea-risk/workflow.md +99 -10
- package/src/tea-skills/wize-tea-trace/workflow.md +83 -12
- package/tools/installer/baseline.js +128 -0
- package/tools/installer/commands/agent.js +197 -0
- package/tools/installer/commands/sync.js +45 -0
- package/tools/installer/commands/update.js +172 -0
- package/tools/installer/version-check.js +117 -0
- package/tools/installer/wize-cli.js +98 -11
|
@@ -3,25 +3,146 @@ code: wize-create-story
|
|
|
3
3
|
name: Create Story
|
|
4
4
|
phase: 4-implementation
|
|
5
5
|
owner: wize-agent-architect # Tony writes; Shuri may refine
|
|
6
|
-
status:
|
|
6
|
+
status: ready
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Create Story
|
|
10
10
|
|
|
11
|
-
**Goal.** Author one Pull-Request-sized story
|
|
11
|
+
**Goal.** Author one Pull-Request-sized story with crisp acceptance criteria, named touch-points, and a contract for Hawkeye's `tea-design.md`. This is the single most-edited artifact in the lifecycle; make it useful.
|
|
12
|
+
|
|
13
|
+
Tony drives. Shuri reads and proposes refinements before pulling the story.
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
- New story splits from an epic (most common — done in `wize-create-epics-and-stories`).
|
|
18
|
+
- A story that comes in mid-sprint and needs a quick scaffold.
|
|
19
|
+
- A `tea-gate` waived rationale created a follow-up story.
|
|
12
20
|
|
|
13
21
|
## Inputs
|
|
22
|
+
|
|
14
23
|
- `.wize/solutioning/architecture.md`
|
|
15
24
|
- `.wize/solutioning/epics/{epic}.md`
|
|
16
|
-
- (
|
|
25
|
+
- `.wize/planning/prd.md` (the AC list)
|
|
26
|
+
- (optional) `.wize/planning/ux/ux-design/{screen}.md`
|
|
27
|
+
|
|
28
|
+
## Output
|
|
17
29
|
|
|
18
|
-
## Outputs
|
|
19
30
|
- `.wize/solutioning/stories/{epic}/{story-id}.md`
|
|
20
31
|
|
|
21
|
-
##
|
|
22
|
-
|
|
32
|
+
## Steps
|
|
33
|
+
|
|
34
|
+
### 1. Name it by outcome
|
|
35
|
+
|
|
36
|
+
Verb-led, user-visible. *"Onboarding: invite first teammate"* not *"Build invite form."*
|
|
37
|
+
|
|
38
|
+
### 2. Frontmatter
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
---
|
|
42
|
+
story_id: E01-S03
|
|
43
|
+
epic: 01-onboarding
|
|
44
|
+
status: ready-for-dev
|
|
45
|
+
priority: 2 # 1=now, 2=next, 3=later
|
|
46
|
+
estimate: M # S | M | L (XL → slice further before merging here)
|
|
47
|
+
linked_screens: [onboarding-step-1, invite-modal]
|
|
48
|
+
linked_acs: [AC-02-1, AC-02-2]
|
|
49
|
+
---
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 3. Context (3–5 lines)
|
|
53
|
+
|
|
54
|
+
What place this story occupies in the user journey, why it matters here, what it depends on.
|
|
55
|
+
|
|
56
|
+
### 4. ACs (lifted from PRD; not reworded)
|
|
57
|
+
|
|
58
|
+
Don't reword PRD ACs in a story — copy them verbatim. If they're not crisp enough, fix in the PRD first.
|
|
59
|
+
|
|
60
|
+
### 5. Out of scope
|
|
61
|
+
|
|
62
|
+
Explicit. Other ACs the user might think this story touches, with a one-line reason it's not here.
|
|
63
|
+
|
|
64
|
+
### 6. Notes for Shuri
|
|
65
|
+
|
|
66
|
+
- Touch points: files Shuri will likely edit.
|
|
67
|
+
- Reuse: components from `design-system` already named.
|
|
68
|
+
- `testid` map: names Hawkeye expects.
|
|
69
|
+
- Edge cases worth flagging (only ones not derivable from ACs).
|
|
70
|
+
|
|
71
|
+
### 7. Notes for Hawkeye
|
|
72
|
+
|
|
73
|
+
A one-paragraph hint: suggested split, fixtures, mocks, environment. Hawkeye writes the real `tea-design.md` but reads this hint.
|
|
74
|
+
|
|
75
|
+
## INVEST rules
|
|
76
|
+
|
|
77
|
+
Every story passes:
|
|
78
|
+
|
|
79
|
+
- **I**ndependent.
|
|
80
|
+
- **N**egotiable.
|
|
81
|
+
- **V**aluable.
|
|
82
|
+
- **E**stimable (Tony sizes).
|
|
83
|
+
- **S**mall (≤ 1 PR).
|
|
84
|
+
- **T**estable.
|
|
85
|
+
|
|
86
|
+
If any letter fails, fix before queueing.
|
|
87
|
+
|
|
88
|
+
## Estimation rough guide
|
|
89
|
+
|
|
90
|
+
- **S** ≤ 4h.
|
|
91
|
+
- **M** 4h–1d.
|
|
92
|
+
- **L** 1–2d.
|
|
93
|
+
- **XL** > 2d → split.
|
|
94
|
+
|
|
95
|
+
These are intervals, not commitments. Hill plans capacity against M-median.
|
|
96
|
+
|
|
97
|
+
## Full story template
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
---
|
|
101
|
+
story_id: E01-S03
|
|
102
|
+
epic: 01-onboarding
|
|
103
|
+
status: ready-for-dev
|
|
104
|
+
priority: 2
|
|
105
|
+
estimate: M
|
|
106
|
+
linked_screens: [onboarding-step-1, invite-modal]
|
|
107
|
+
linked_acs: [AC-02-1, AC-02-2]
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
# Story: Onboarding step 1 — invite first teammate
|
|
111
|
+
|
|
112
|
+
## Context
|
|
113
|
+
After sign-up the admin lands on `/onboarding`. This story implements the first
|
|
114
|
+
moment-of-truth from scenario S1: inviting the first teammate.
|
|
115
|
+
|
|
116
|
+
## Acceptance criteria
|
|
117
|
+
- **AC-02-1:** Given a new admin on `/onboarding`, When they enter a valid email and click "Send invite", Then a `teammate_invited` event fires and the screen advances to "Invite sent" within 1s.
|
|
118
|
+
- **AC-02-2:** Given an invalid email, When the user blurs the field, Then error text appears (200ms) identifying which rule failed.
|
|
119
|
+
|
|
120
|
+
## Out of scope
|
|
121
|
+
- Bulk invite (multiple emails) — separate story E01-S07.
|
|
122
|
+
- Custom invite message — defer to E02-S03.
|
|
123
|
+
- "Skip for now" button — not a moment-of-truth path; out.
|
|
124
|
+
|
|
125
|
+
## Notes for Shuri (Dev)
|
|
126
|
+
- Touch points: `app/(onboarding)/invite/page.tsx`, `lib/email/send-invite.ts`, new server action `inviteTeammate`.
|
|
127
|
+
- Reuse: `Button` (primary), `Input`, `Banner` (success/error) from design-system.
|
|
128
|
+
- testid: `invite-form`, `invite-email`, `invite-cta`, `invite-sent-banner`.
|
|
129
|
+
- Idempotency: use `(team_id, email)` composite key.
|
|
130
|
+
|
|
131
|
+
## Notes for Hawkeye (TEA)
|
|
132
|
+
Suggested split: 4 unit, 1 integration, 1 E2E.
|
|
133
|
+
- Unit: validateInviteEmail, mailer payload, server action error mapping, retry policy.
|
|
134
|
+
- Integration: server action calls mailer with right args (MSW on Resend).
|
|
135
|
+
- E2E: happy path on Playwright @chromium @ios.
|
|
136
|
+
- Risk: R-1 (mailer) — extra E2E asserts banner within 1s of click.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Anti-patterns Tony rejects
|
|
140
|
+
|
|
141
|
+
- **ACs reworded from PRD.** Source-of-truth drift.
|
|
142
|
+
- **Stories with no touch points.** Shuri spends an hour finding the files.
|
|
143
|
+
- **No notes for Hawkeye.** TEA designs in the dark.
|
|
144
|
+
- **Stories named by feature** ("Add invite button") — name by **outcome**.
|
|
145
|
+
|
|
146
|
+
## Hand-off
|
|
23
147
|
|
|
24
|
-
|
|
25
|
-
- One story = one PR. If two, split.
|
|
26
|
-
- Each AC must be testable. If Hawkeye can't write a test for it, rewrite the AC.
|
|
27
|
-
- "Out of scope" is mandatory. Force the cut.
|
|
148
|
+
> Story E01-S03 ready. Shuri, pull when sprint allows. Hawkeye, `tea-design.md` for this story whenever you're ready.
|
|
@@ -3,31 +3,154 @@ code: wize-dev-story
|
|
|
3
3
|
name: Dev Story
|
|
4
4
|
phase: 4-implementation
|
|
5
5
|
owner: wize-agent-dev # Shuri
|
|
6
|
-
status:
|
|
6
|
+
status: ready
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Dev Story
|
|
10
10
|
|
|
11
|
-
**Goal.** Implement one story under TDD discipline.
|
|
11
|
+
**Goal.** Implement one story under TDD discipline. Tests first; minimum code to pass; refactor with green. Each commit cites an AC ID. The PR ends in a clean gate, not a "looks good to me."
|
|
12
|
+
|
|
13
|
+
Shuri drives. Hawkeye observes (test design is binding). Tony stays available for architectural questions.
|
|
12
14
|
|
|
13
15
|
## Inputs
|
|
14
|
-
|
|
16
|
+
|
|
17
|
+
- `.wize/solutioning/stories/{epic}/{story}.md`
|
|
15
18
|
- `.wize/solutioning/architecture.md`
|
|
16
|
-
- `.wize/
|
|
19
|
+
- `.wize/solutioning/design-system/` (use existing components)
|
|
20
|
+
- `.wize/implementation/tea/{epic}/{story}/design.md` (the test contract)
|
|
17
21
|
|
|
18
22
|
## Outputs
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
|
|
24
|
+
- Code + tests in the target repo.
|
|
25
|
+
- Commit messages reference AC IDs.
|
|
26
|
+
- Story file updated to `status: ready-for-review`.
|
|
27
|
+
|
|
28
|
+
## The loop (TDD, story-scoped)
|
|
29
|
+
|
|
30
|
+
### 1. Read
|
|
31
|
+
|
|
32
|
+
Story ACs, out-of-scope, notes, `tea-design.md`. Confirm the test split. If the design doesn't match the story (mismatch on test count, mock, environment), ping Hawkeye **before** writing code.
|
|
33
|
+
|
|
34
|
+
### 2. Slice the story into micro-cycles
|
|
35
|
+
|
|
36
|
+
Each cycle is one AC (or part of one) and produces a green test + small code change. Don't try to ship the whole story in one commit.
|
|
37
|
+
|
|
38
|
+
### 3. Red
|
|
39
|
+
|
|
40
|
+
Write the failing test first. Match the assertion shape in `design.md`. Don't write code yet.
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
// red — first run, fails
|
|
44
|
+
test('valid email returns ok', () => {
|
|
45
|
+
expect(validateInviteEmail('a@b.co')).toEqual({ ok: true });
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 4. Green
|
|
50
|
+
|
|
51
|
+
Write the **minimum** code that turns the test green. No anticipated branches; no "just-in-case" handling.
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
// green — minimum to pass
|
|
55
|
+
export const validateInviteEmail = (s: string) => ({ ok: /@/.test(s) });
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 5. Refactor
|
|
59
|
+
|
|
60
|
+
Now harden, with the test as safety net.
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
// refactor — same green tests, real logic
|
|
64
|
+
import { z } from 'zod';
|
|
65
|
+
const schema = z.string().email();
|
|
66
|
+
export const validateInviteEmail = (s: string) =>
|
|
67
|
+
schema.safeParse(s).success ? { ok: true } : { ok: false, code: 'invalid_format', field: 'email' };
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 6. Commit
|
|
71
|
+
|
|
72
|
+
Conventional commits, AC IDs referenced.
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
feat(invite): validate email per AC-02-1 / AC-02-2
|
|
76
|
+
- add validateInviteEmail with zod
|
|
77
|
+
- add 4 unit tests covering valid + invalid rules
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 7. Repeat
|
|
81
|
+
|
|
82
|
+
Until every AC has at least one test + minimum code that makes it pass.
|
|
83
|
+
|
|
84
|
+
### 8. Knowledge update (inline, ~60s)
|
|
85
|
+
|
|
86
|
+
Before opening the PR, ask: **did this story touch any of the 5 baseline axes** documented in `.wize/knowledge/document-project/`?
|
|
87
|
+
|
|
88
|
+
| Axis | Touched when… | File to update |
|
|
89
|
+
|---|---|---|
|
|
90
|
+
| **Architecture** | new component, new sequence, changed data flow | `architecture-snapshot.md` |
|
|
91
|
+
| **Conventions** | new naming/folder/test pattern published as public contract (incl. `testid`) | `conventions.md` |
|
|
92
|
+
| **Risk-spots** | introduced a complexity hot spot OR resolved one | `risk-spots.md` |
|
|
93
|
+
| **Dependencies** | added / removed / upgraded a runtime dep | `dependencies.md` |
|
|
94
|
+
| **Overview** | new user-visible feature a new dev should know about | `overview.md` |
|
|
95
|
+
|
|
96
|
+
If yes for any axis: open the file and add **1–3 lines** under a new dated bullet — in the same PR.
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
## 2026-06-12 — E01-S03
|
|
100
|
+
- Conventions: `data-testid="invite-*"` published as public contract; Hawkeye E2E depends on these.
|
|
101
|
+
- Risk: R-1 (mailer) mitigation now confirmed (integration test covers retry policy).
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
If no axis was touched, you skip this step entirely — quick-dev-style changes don't need it. Hawkeye will check whether the call was correct in `tea-review`. A story that touched an axis but skipped the update gets a `KN-NN` finding in the gate (recommendation `CONCERNS` advisory, or `FAIL` enforcing).
|
|
105
|
+
|
|
106
|
+
This is how the brownfield baseline stays alive instead of going stale 6 months in.
|
|
107
|
+
|
|
108
|
+
### 9. Pre-PR self-check
|
|
109
|
+
|
|
110
|
+
- All Hawkeye-declared tests exist + pass.
|
|
111
|
+
- No `test.skip` / `.only` left.
|
|
112
|
+
- Lint + format clean.
|
|
113
|
+
- Type-check clean.
|
|
114
|
+
- `data-testid` matches story's "notes for Hawkeye".
|
|
115
|
+
- Story file frontmatter → `status: ready-for-review`.
|
|
116
|
+
- Self-walk the screen (web) or smoke a tab on simulator (app).
|
|
117
|
+
|
|
118
|
+
### 10. Open PR
|
|
119
|
+
|
|
120
|
+
PR description includes:
|
|
121
|
+
- Story link.
|
|
122
|
+
- AC list with the test names that cover them.
|
|
123
|
+
- Screenshots / recordings of happy + failure paths.
|
|
124
|
+
- Knowledge update line (`Touched axis: <none|architecture|conventions|risk-spots|dependencies|overview>`).
|
|
125
|
+
- TEA expected next: design → trace → review → gate.
|
|
126
|
+
|
|
127
|
+
### 11. Address gate findings
|
|
128
|
+
|
|
129
|
+
If `tea-review` flags issues, fix them in the same PR or open a follow-up if the story has shipped a separate value-bearing slice.
|
|
130
|
+
|
|
131
|
+
## Security + perf during implementation
|
|
132
|
+
|
|
133
|
+
Shuri thinks both at write time, not at review time:
|
|
134
|
+
|
|
135
|
+
- Auth context on every server entry point — confirm via Tony's middleware pattern.
|
|
136
|
+
- Tokens never logged.
|
|
137
|
+
- Inputs validated at the boundary; trusted by the time they reach domain.
|
|
138
|
+
- Network calls in handlers wrapped with timeout + retry policy from architecture.
|
|
139
|
+
- Don't `await` in a loop without batching.
|
|
140
|
+
- Don't ship dead code (`isFooEnabled = true` always).
|
|
31
141
|
|
|
32
142
|
## Quick-dev exception
|
|
33
|
-
|
|
143
|
+
|
|
144
|
+
If the work is small / well-scoped and Wizer invoked `wize-quick-dev` instead of this workflow, the design step is replaced by smoke-test-only commitment and the gate is a single one-line entry in `quick-dev-log.md`.
|
|
145
|
+
|
|
146
|
+
## Anti-patterns Shuri rejects in her own work
|
|
147
|
+
|
|
148
|
+
- Writing code first and tests "after the bug fix" — that's not TDD; that's regression-tests.
|
|
149
|
+
- Commits that don't cite an AC.
|
|
150
|
+
- "Refactor while green" turning into "rewrite while green."
|
|
151
|
+
- Bundling cross-cutting refactors into the story PR. Split.
|
|
152
|
+
- Editing tests so they pass instead of editing code so tests pass.
|
|
153
|
+
|
|
154
|
+
## Hand-off
|
|
155
|
+
|
|
156
|
+
> Story E01-S03 implemented. All ACs covered by tests; CI green. PR opened (#412). Hawkeye, ready for trace + review. Notes section of the story has the testid map you'll use.
|
|
@@ -3,31 +3,134 @@ code: wize-quick-dev
|
|
|
3
3
|
name: Quick Dev (lifecycle shortcut)
|
|
4
4
|
phase: 4-implementation
|
|
5
5
|
owner: wize-agent-dev # Shuri
|
|
6
|
-
status:
|
|
6
|
+
status: ready
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Quick Dev
|
|
10
10
|
|
|
11
|
-
**Goal.** When the task is small and well-scoped (bug fix, copy edit, small refactor), skip the full lifecycle.
|
|
11
|
+
**Goal.** When the task is small and well-scoped (bug fix, copy edit, small refactor, dep bump, brownfield maintenance), skip Phase 1–3 and execute with light TEA. Save the full lifecycle for new value.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- Bug fix with clear root cause
|
|
15
|
-
- Copy or content edit
|
|
16
|
-
- Small refactor with no behavior change
|
|
17
|
-
- Dependency bump
|
|
18
|
-
- Brownfield maintenance
|
|
13
|
+
Wizer authorizes the shortcut (via routing). Shuri runs it. Hawkeye does smoke-only.
|
|
19
14
|
|
|
20
|
-
## When
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
15
|
+
## When to use (yes)
|
|
16
|
+
|
|
17
|
+
- Bug fix with a clear root cause.
|
|
18
|
+
- Copy or content edit.
|
|
19
|
+
- Small refactor with no behavior change.
|
|
20
|
+
- Dependency bump (security or minor).
|
|
21
|
+
- Brownfield maintenance: rename, structural cleanup, dead-code removal.
|
|
22
|
+
- Hotfix during incident response (post-mortem after).
|
|
23
|
+
|
|
24
|
+
## When NOT to use (no)
|
|
25
|
+
|
|
26
|
+
- New feature, even small.
|
|
27
|
+
- Cross-cutting change touching architecture.
|
|
28
|
+
- Changes where ACs need to be agreed.
|
|
29
|
+
- Anything that should be a story.
|
|
30
|
+
- Anything that touches security/auth/payments without senior review.
|
|
31
|
+
|
|
32
|
+
## Decision tree
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Question Yes No
|
|
36
|
+
Is there an AC to write? → full lifecycle → next
|
|
37
|
+
Does it touch architecture? → full lifecycle → next
|
|
38
|
+
Does it need UX input? → full lifecycle → next
|
|
39
|
+
Could it surprise a user? → full lifecycle → next
|
|
40
|
+
Is it ≤ 1 hour to a careful dev? → quick-dev → full lifecycle
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Inputs
|
|
44
|
+
|
|
45
|
+
- Issue / Slack message / PR comment describing the problem.
|
|
46
|
+
- Repo state.
|
|
47
|
+
- `.wize/config/tea.toml` (smoke-only policy when `policy = "advisory"`).
|
|
48
|
+
|
|
49
|
+
## Output
|
|
50
|
+
|
|
51
|
+
- Code change (single PR).
|
|
52
|
+
- Single-line entry appended to `.wize/implementation/quick-dev-log.md`.
|
|
53
|
+
- Conventional commit.
|
|
24
54
|
|
|
25
55
|
## Steps
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
56
|
+
|
|
57
|
+
### 1. Frame in one paragraph
|
|
58
|
+
|
|
59
|
+
What changes, why, and what could break. If the paragraph is hard to write, you're not in quick-dev territory.
|
|
60
|
+
|
|
61
|
+
### 2. Implement
|
|
62
|
+
|
|
63
|
+
- TDD when reasonable; smoke-test-and-fix when the cost of TDD is greater than the value.
|
|
64
|
+
- Reuse existing components. Don't introduce new abstractions.
|
|
65
|
+
|
|
66
|
+
### 3. Hawkeye lite
|
|
67
|
+
|
|
68
|
+
- Smoke test: imports load, the changed flow doesn't break.
|
|
69
|
+
- Lint + format + type-check clean.
|
|
70
|
+
- No `tea-design / trace / review / nfr` written.
|
|
71
|
+
- Single one-line gate entry instead of full `gate.md`.
|
|
72
|
+
|
|
73
|
+
### 4. Log
|
|
74
|
+
|
|
75
|
+
Append one line to `.wize/implementation/quick-dev-log.md`:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
2026-06-11 | shuri | dep-bump zod 3.22→3.23 | smoke PASS | PR #418
|
|
79
|
+
2026-06-11 | shuri | fix copy on /signin help link | smoke PASS | PR #419
|
|
80
|
+
2026-06-11 | shuri | rename UserService → AccountService | smoke PASS | PR #420
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 5. Knowledge update (only if applicable)
|
|
84
|
+
|
|
85
|
+
Most quick-dev changes don't touch the baseline axes (copy edit, small refactor, dep bump in a stable lib). When they do — typically a **dependency bump** or a **rename that breaks a public contract** — add **one line** to the matching `document-project/*.md` file:
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
## 2026-06-11
|
|
89
|
+
- Dependencies: bump zod 3.22 → 3.23. No API changes; validateInviteEmail unaffected.
|
|
90
|
+
- Conventions: `AccountService` replaces `UserService` (rename); imports updated repo-wide.
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Heuristic: *"would a new dev hitting `document-project/*.md` next week be misled if I don't add this?"* Yes → write. No → skip.
|
|
94
|
+
|
|
95
|
+
### 6. Commit + open PR
|
|
96
|
+
|
|
97
|
+
Conventional commit. PR description: the paragraph from step 1.
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
fix(auth): typo in error message for AC-04-2 follow-up
|
|
101
|
+
|
|
102
|
+
The error shown after rate-limit said "Sloow down" — corrected to "Slow down".
|
|
103
|
+
No behavior change; copy-only.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Quick-dev log template
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
# Quick-dev log
|
|
110
|
+
|
|
111
|
+
| Date | Owner | What | Smoke | PR |
|
|
112
|
+
|---|---|---|---|---|
|
|
113
|
+
| 2026-06-11 | shuri | … | PASS | #N |
|
|
114
|
+
```
|
|
31
115
|
|
|
32
116
|
## Disabling
|
|
33
|
-
|
|
117
|
+
|
|
118
|
+
To force every change through the full lifecycle (for very high-stakes products), set in `.wize/config/project.toml`:
|
|
119
|
+
|
|
120
|
+
```toml
|
|
121
|
+
[install]
|
|
122
|
+
quick_dev_enabled = false
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Wizer respects this; quick-dev becomes unavailable; every change must go through Pepper → … → Hawkeye gate.
|
|
126
|
+
|
|
127
|
+
## Anti-patterns Shuri rejects in herself
|
|
128
|
+
|
|
129
|
+
- Reaching for quick-dev to skip writing an AC because she doesn't want to argue with Hill.
|
|
130
|
+
- Quick-dev that touches security/auth/payments.
|
|
131
|
+
- A "small refactor" that ends up changing behavior.
|
|
132
|
+
- Skipping the log entry.
|
|
133
|
+
|
|
134
|
+
## Hand-off
|
|
135
|
+
|
|
136
|
+
> `dep-bump zod 3.23` is in. PR #418, smoke PASS. Logged. No further TEA artifacts; moving on.
|
|
@@ -3,34 +3,136 @@ code: wize-retrospective
|
|
|
3
3
|
name: Retrospective
|
|
4
4
|
phase: 4-implementation
|
|
5
5
|
owner: wize-orchestrator # Wizer facilitates; whole team contributes
|
|
6
|
-
status:
|
|
6
|
+
status: ready
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Retrospective
|
|
10
10
|
|
|
11
|
-
**Goal.** Capture what worked, what didn't, and
|
|
11
|
+
**Goal.** Capture what worked, what didn't, what surprised, and **one concrete change for next sprint**. A retro that ends in a vibe is a retro that didn't ship a change.
|
|
12
|
+
|
|
13
|
+
Wizer facilitates. Hill enforces output discipline. Everyone (including Pepper, Mantis, Fury) contributes.
|
|
14
|
+
|
|
15
|
+
## When to run
|
|
16
|
+
|
|
17
|
+
- End of every sprint (cadence).
|
|
18
|
+
- After any incident (separate; pulls from incident timeline).
|
|
19
|
+
- At major milestones (epic close, release, year-end).
|
|
12
20
|
|
|
13
21
|
## Inputs
|
|
22
|
+
|
|
14
23
|
- `.wize/implementation/sprint-status.md` (current sprint)
|
|
15
24
|
- All `gate.md` files from current sprint
|
|
25
|
+
- `tea/nfr/{epic}.md` if an epic closed this sprint
|
|
26
|
+
- Quick-dev log
|
|
27
|
+
|
|
28
|
+
## Output
|
|
16
29
|
|
|
17
|
-
## Outputs
|
|
18
30
|
- `.wize/implementation/retrospective/{YYYY-MM-DD}.md`
|
|
19
31
|
|
|
20
|
-
##
|
|
32
|
+
## Format (60 minutes, fixed)
|
|
33
|
+
|
|
34
|
+
| Minutes | Section |
|
|
35
|
+
|---|---|
|
|
36
|
+
| 0–5 | Frame: Wizer reads the sprint stats (capacity, shipped, slipped, gates). |
|
|
37
|
+
| 5–15 | **Worked** — what we want to repeat. |
|
|
38
|
+
| 15–25 | **Didn't work** — what we want to change. |
|
|
39
|
+
| 25–35 | **Surprised us** — externalities, signals, anything not on plan. |
|
|
40
|
+
| 35–45 | Pick **1–3 changes**. Vote with effort/impact dots. |
|
|
41
|
+
| 45–55 | Each change gets an owner + deadline. |
|
|
42
|
+
| 55–60 | Wizer reads back the doc; everyone confirms; close. |
|
|
43
|
+
|
|
44
|
+
Going over 60 minutes is a sign the retro became therapy. Time-box.
|
|
45
|
+
|
|
46
|
+
## Steps
|
|
47
|
+
|
|
48
|
+
### 1. Open with stats
|
|
49
|
+
|
|
50
|
+
Wizer reads the sprint dashboard from `sprint-status.md`:
|
|
51
|
+
- Velocity vs commitment.
|
|
52
|
+
- Number of gates: PASS / CONCERNS / FAIL / WAIVED.
|
|
53
|
+
- Blockers and their resolution times.
|
|
54
|
+
- Carry-over count.
|
|
55
|
+
|
|
56
|
+
Stats anchor the retro in observations, not feelings.
|
|
57
|
+
|
|
58
|
+
### 2. Worked / didn't / surprised
|
|
59
|
+
|
|
60
|
+
Each engineer brings 2–3 items per section, written in advance ideally. Time-box discussion: any item that takes > 3 min becomes a follow-up.
|
|
61
|
+
|
|
62
|
+
### 3. Changes (1–3 max)
|
|
63
|
+
|
|
64
|
+
A change is:
|
|
65
|
+
- **Specific:** "Pair-program for E04-S02 because R-3 is high" — not "communicate more."
|
|
66
|
+
- **Owned:** a person.
|
|
67
|
+
- **Bounded:** a deadline or a sprint to land it.
|
|
68
|
+
|
|
69
|
+
If you pick 4+ changes, you'll execute 0. Choose.
|
|
70
|
+
|
|
71
|
+
### 4. Write the doc
|
|
72
|
+
|
|
73
|
+
Use the template; close the retro with the doc in front of the team.
|
|
74
|
+
|
|
75
|
+
### 5. Trigger reads
|
|
76
|
+
|
|
77
|
+
Wizer notifies Hill (who plugs the changes into next sprint planning), Hawkeye (who may revise risk profile), Fury (when an NFR principle change emerges).
|
|
78
|
+
|
|
79
|
+
## Output template
|
|
21
80
|
|
|
22
81
|
```markdown
|
|
23
|
-
|
|
82
|
+
---
|
|
83
|
+
sprint: 7
|
|
84
|
+
date: 2026-06-25
|
|
85
|
+
facilitator: Wizer
|
|
86
|
+
attendees: [Hill, Tony, Mantis, Pepper, Fury, Hawkeye, Shuri]
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
# Retrospective — Sprint 7
|
|
90
|
+
|
|
91
|
+
## Sprint snapshot
|
|
92
|
+
- Committed: 4 stories + 1 stretch
|
|
93
|
+
- Shipped: 4 stories
|
|
94
|
+
- Stretch: not pulled
|
|
95
|
+
- Gates: 4 PASS, 1 CONCERNS, 0 FAIL
|
|
96
|
+
- Blockers: 1 (vendor sandbox, resolved Day 5)
|
|
97
|
+
- Carry-over to S8: 0
|
|
24
98
|
|
|
25
99
|
## Worked
|
|
26
|
-
-
|
|
100
|
+
- Pairing on E03-S02 (auth refresh) — issue caught at integration test instead of in prod.
|
|
101
|
+
- TEA design done at planning for R-3 stories paid off.
|
|
102
|
+
- Mantis' "before/after" recordings in PRs accelerated review.
|
|
27
103
|
|
|
28
104
|
## Didn't work
|
|
29
|
-
-
|
|
105
|
+
- Sprint-status entries went stale on Days 7–8 (Hill on vacation).
|
|
106
|
+
- E02-S02 estimated M, actually L; we over-committed.
|
|
107
|
+
- Vendor outage with no fallback caught us cold for 4h.
|
|
30
108
|
|
|
31
109
|
## Surprised us
|
|
32
|
-
-
|
|
110
|
+
- A11y audit caught 3 issues on a screen Mantis had already signed off on (axe found dynamic-content edge cases).
|
|
111
|
+
- Cost dashboard showed mailer spend doubled — outbox retry was too aggressive.
|
|
112
|
+
|
|
113
|
+
## Changes for Sprint 8
|
|
114
|
+
|
|
115
|
+
1. **Sprint-status delegation rotation** — when Hill is OOO, Wizer takes over. *Owner: Wizer. By: Sprint 8 Day 1.*
|
|
116
|
+
2. **L estimates require justification** — any L gets one paragraph "why L not M" in the story file. *Owner: Tony. By: Sprint 8 planning.*
|
|
117
|
+
3. **Vendor fallback drill** — quarterly, simulate top-3 vendor outages. *Owner: Hawkeye + Tony. By: end of Q3.*
|
|
118
|
+
|
|
119
|
+
## Decisions made
|
|
120
|
+
- Mailer retry policy updated (NFR-01-1).
|
|
121
|
+
- Risk profile revised: R-1 mitigation now confirmed.
|
|
33
122
|
|
|
34
|
-
##
|
|
35
|
-
-
|
|
123
|
+
## Notes for next sprint
|
|
124
|
+
- Carry zero stories; everyone starts S8 fresh.
|
|
125
|
+
- Stretch goal in S8: catch up on REV-01 (copy fix from S7).
|
|
36
126
|
```
|
|
127
|
+
|
|
128
|
+
## Anti-patterns Wizer rejects (politely)
|
|
129
|
+
|
|
130
|
+
- **A retro without a change.** Then it was venting.
|
|
131
|
+
- **"We need to communicate better."** Specific or it doesn't count.
|
|
132
|
+
- **Adopting > 3 changes.** None will land.
|
|
133
|
+
- **No owner / no deadline.** Hopes, not plans.
|
|
134
|
+
- **Skipping the retro to "save time."** The next sprint costs more.
|
|
135
|
+
|
|
136
|
+
## Hand-off
|
|
137
|
+
|
|
138
|
+
> Retro at `.wize/implementation/retrospective/2026-06-25.md`. 3 changes; owners assigned. Sprint 8 planning anchors on them. Hawkeye, please update `risk-profile.md` with the R-1 mitigation confirmed.
|