wize-dev-kit 0.10.1 → 0.11.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.
- package/CHANGELOG.md +19 -0
- package/README.es.md +1 -1
- package/README.md +1 -1
- package/README.pt-BR.md +1 -1
- package/package.json +1 -1
- package/src/method-skills/2-plan-workflows/wize-create-prd/workflow.md +1 -2
- package/src/method-skills/2-plan-workflows/wize-validate-prd/workflow.md +1 -1
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-02-context.md +1 -1
- package/src/method-skills/3-solutioning/wize-create-epics-and-stories/workflow.md +5 -6
- package/src/method-skills/4-implementation/wize-checkpoint-preview/workflow.md +6 -6
- package/src/method-skills/4-implementation/wize-correct-course/workflow.md +1 -1
- package/src/method-skills/4-implementation/wize-create-story/workflow.md +5 -13
- package/src/method-skills/4-implementation/wize-retrospective/workflow.md +5 -5
- package/src/method-skills/4-implementation/wize-sprint-planning/workflow.md +9 -6
- package/src/orchestrator-skills/wize-help/skill.md +1 -1
- package/src/security-overlay/_shared/backlog.js +3 -14
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,25 @@ Format inspired by [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.11.0] — 2026-08-06
|
|
13
|
+
|
|
14
|
+
**No-estimates policy.** The method now refuses to produce development estimates at any step — no hours, days, story points, or S/M/L/XL t-shirt sizes. Following the BMAD stance already stated in the architecture skill ("AI development speed has fundamentally changed"), estimates are treated as noise that only burns time and tokens. The only sizing signal that remains is binary: **does a story fit one PR? If not, slice it.** Suite green (417 tests, validate 74 files).
|
|
15
|
+
|
|
16
|
+
### Removed
|
|
17
|
+
|
|
18
|
+
- **`estimate` frontmatter field** from the story and epic templates (`wize-create-story`, `wize-create-epics-and-stories`).
|
|
19
|
+
- **`estimateFor()`** helper and the `- **Estimativa:**` / `est S|M|L` output from the security remediation backlog (`security-overlay/_shared/backlog.js`) — the red-teamer's remediation epics/stories no longer carry a size estimate.
|
|
20
|
+
- **"Estimation rough guide"** (S ≤ 4h, M 4h–1d, …) from `wize-create-story`.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **INVEST** — the "Estimable" letter is dropped on purpose across `wize-create-prd`, `wize-validate-prd`, `wize-create-story`, and `wize-create-epics-and-stories`. "Small (≤ 1 PR)" is now the only sizing test.
|
|
25
|
+
- **`wize-sprint-planning`** — planning is by story count and priority, not velocity or person-day math; "Optimistic velocity" anti-pattern replaced with "don't estimate."
|
|
26
|
+
- **`wize-retrospective`** — the dashboard reports stories committed vs shipped (a count) instead of velocity; the example retro no longer references M/L estimates.
|
|
27
|
+
- **`wize-checkpoint-preview`** — the snapshot records "Commits so far" instead of "Time spent"; triggers refer to "larger stories," not "M/L stories."
|
|
28
|
+
- **`wize-help`** — the Quick Dev classifier drops the "~≤1h" time threshold; it now reads "trivially scoped."
|
|
29
|
+
- Each affected skill carries an explicit **"No estimates"** note so the rule holds when the skill is loaded standalone.
|
|
30
|
+
|
|
12
31
|
## [0.10.1] — 2026-08-02
|
|
13
32
|
|
|
14
33
|
Documentation polish + tooling fixes. The security-overlay persona gets a Marvel name; the README (3 languages) is aligned to v0.10.1; a rendering bug and the test glob are fixed; CI is added. Suite green (418 tests — the security-overlay suite now runs under `npm test`).
|
package/README.es.md
CHANGED
|
@@ -250,7 +250,7 @@ npx wize-dev-kit version # imprime la versión instalada del kit
|
|
|
250
250
|
|
|
251
251
|
## Estado
|
|
252
252
|
|
|
253
|
-
**v0.
|
|
253
|
+
**v0.11.0 — beta.** El método nunca produce estimaciones de desarrollo — ni horas, ni puntos, ni tallas de camiseta; una story se dimensiona solo por si cabe en un único PR. El ciclo completo (análisis → plan → solución → implementación) está montado con 10 agentes y una biblioteca estructurada de skills. Los releases recientes suman **contratos de misión** (`/wize-help mission` emite un contrato lleno de objetivo / fuentes de verdad / alcance / ACs / contrato de validación para la persona ejecutora), **`wize-grill`** (una pasada de entrevista hasta entendimiento compartido antes de cualquier paso de autoría) y **loop verification** en `wize-dev-story` (un loop de implementación auto-verificable con guarda de max-cycles que escala a `wize-correct-course`). El `security-overlay` (Pentester de IA) entrega un pipeline de pentest completo, un informe ejecutivo (puntuación de riesgo + briefing + plan de acción por IA) y planificación de remediación post-scan — validado de principio a fin contra una aplicación Laravel/PHP real. Los adapters de IDE para Claude Code, Cursor, Windsurf, Codex, Continue, Kimi Code, OpenCode y Antigravity se regeneran automáticamente — [OpenCode](docs/harnesses/opencode.md) recibe wiring nativo de `mode`/`agent`/`subtask`, la integración más profunda de las 9.
|
|
254
254
|
|
|
255
255
|
---
|
|
256
256
|
|
package/README.md
CHANGED
|
@@ -245,7 +245,7 @@ npx wize-dev-kit version # print the installed kit version
|
|
|
245
245
|
|
|
246
246
|
## Status
|
|
247
247
|
|
|
248
|
-
**v0.
|
|
248
|
+
**v0.11.0 — beta.** The method never produces development estimates — no hours, points, or t-shirt sizes; a story is sized only by whether it fits a single PR. The full lifecycle (analysis → plan → solution → implementation) is wired with 10 agents and a structured skill library. Recent releases add **mission contracts** (`/wize-help mission` emits a filled objective / sources-of-truth / scope / ACs / validation contract for the executing persona), **`wize-grill`** (an interview-to-shared-understanding pass before any authoring step), and **loop verification** in `wize-dev-story` (a self-checking implementation loop with a max-cycles guard that escalates to `wize-correct-course`). The `security-overlay` (AI Pentester) ships a complete pentest pipeline, a stakeholder report (risk score + briefing + AI action plan), and post-scan remediation planning — validated end-to-end against a real Laravel/PHP app. IDE adapters for Claude Code, Cursor, Windsurf, Codex, Continue, Kimi Code, OpenCode, and Antigravity are regenerated automatically — [OpenCode](docs/harnesses/opencode.md) gets native `mode`/`agent`/`subtask` wiring, the deepest integration of the 9.
|
|
249
249
|
|
|
250
250
|
---
|
|
251
251
|
|
package/README.pt-BR.md
CHANGED
|
@@ -248,7 +248,7 @@ npx wize-dev-kit version # imprime a versão instalada do kit
|
|
|
248
248
|
|
|
249
249
|
## Status
|
|
250
250
|
|
|
251
|
-
**v0.
|
|
251
|
+
**v0.11.0 — beta.** O método nunca produz estimativas de desenvolvimento — nada de horas, pontos ou tamanhos de camiseta; uma story é dimensionada apenas por caber (ou não) em um único PR. O ciclo completo (análise → plano → solução → implementação) está montado com 10 agentes e uma biblioteca estruturada de skills. Releases recentes adicionam **contratos de missão** (`/wize-help mission` emite um contrato preenchido de objetivo / fontes de verdade / escopo / ACs / validação para a persona executora), **`wize-grill`** (uma passagem de entrevista até entendimento compartilhado antes de qualquer passo de autoria) e **loop verification** no `wize-dev-story` (loop de implementação auto-verificável com guarda de max-cycles que escala para `wize-correct-course`). O `security-overlay` (Pentester de IA) entrega um pipeline de pentest completo, um relatório executivo (score de risco + briefing + plano de ação por IA) e planejamento de correção pós-scan — validado de ponta a ponta contra uma aplicação Laravel/PHP real. Os adapters de IDE para Claude Code, Cursor, Windsurf, Codex, Continue, Kimi Code, OpenCode e Antigravity são regenerados automaticamente — o [OpenCode](docs/harnesses/opencode.pt-BR.md) tem a integração mais profunda das 9, com `mode`/`agent`/`subtask` nativos.
|
|
252
252
|
|
|
253
253
|
---
|
|
254
254
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "wize-dev-kit",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.11.0",
|
|
5
5
|
"description": "Full-lifecycle AI-assisted development kit with Test Architect and Whiteport Design Studio embedded. Inspired by BMAD Method and WDS.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"ai",
|
|
@@ -149,8 +149,7 @@ Maria Hill validates every story's ACs against INVEST:
|
|
|
149
149
|
- **I**ndependent: no implicit dependency on another story being built first.
|
|
150
150
|
- **N**egotiable: details can move; intent can't.
|
|
151
151
|
- **V**aluable: a real outcome to a real user.
|
|
152
|
-
- **
|
|
153
|
-
- **S**mall: ≤ 1 PR worth (sliced finer in Phase 3 if not).
|
|
152
|
+
- **S**mall: ≤ 1 PR worth (sliced finer in Phase 3 if not) — the only sizing test. INVEST's "Estimable" is dropped on purpose: we don't produce time or point estimates.
|
|
154
153
|
- **T**estable: every AC is observable.
|
|
155
154
|
|
|
156
155
|
If any letter fails, fix the story before it leaves Plan.
|
|
@@ -45,7 +45,7 @@ After `wize-create-prd` produces `status: ready-for-validation`. Run once per ma
|
|
|
45
45
|
### Quality
|
|
46
46
|
- [ ] Every AC is observable (testable by Hawkeye without ambiguity).
|
|
47
47
|
- [ ] No AC contains the word "easy", "intuitive", "responsive" without a numeric criterion.
|
|
48
|
-
- [ ] INVEST: every backbone story passes (independent, negotiable, valuable,
|
|
48
|
+
- [ ] INVEST: every backbone story passes (independent, negotiable, valuable, small, testable) — "Estimable" is dropped; we don't estimate, we only check it fits one PR.
|
|
49
49
|
- [ ] No goal repeats a brief constraint as if it were a goal.
|
|
50
50
|
|
|
51
51
|
### Cross-checks
|
|
@@ -108,7 +108,7 @@ Prepare the section to append:
|
|
|
108
108
|
**Scale & Complexity:**
|
|
109
109
|
- Primary domain: {{domain}}
|
|
110
110
|
- Complexity level: {{level}}
|
|
111
|
-
-
|
|
111
|
+
- Architectural components: {{count}}
|
|
112
112
|
|
|
113
113
|
### Technical Constraints & Dependencies
|
|
114
114
|
{{list}}
|
|
@@ -12,6 +12,8 @@ status: ready
|
|
|
12
12
|
|
|
13
13
|
Tony drives. Output lands in `.wize/solutioning/epics/` and `.wize/solutioning/stories/`.
|
|
14
14
|
|
|
15
|
+
> **No estimates.** Epics and stories never carry a time or effort estimate (hours, days, story points, S/M/L/XL) — at any step. AI development speed has made them noise that only burns time and tokens. The only sizing question is binary: **does a story fit one PR?** If not, slice it.
|
|
16
|
+
|
|
15
17
|
When slicing raises decisions the PRD doesn't answer — priority order, sequencing, protected behaviors, what's out of a story — offer a short `wize-grill` pass with the user instead of guessing. Decisions land in the epic/story fields; unresolved ones become open questions with owners.
|
|
16
18
|
|
|
17
19
|
## Inputs
|
|
@@ -47,7 +49,6 @@ owner: Tony Stark + Maria Hill
|
|
|
47
49
|
linked_prd: E01
|
|
48
50
|
trigger_map_row: 1
|
|
49
51
|
priority: 1
|
|
50
|
-
estimate: M
|
|
51
52
|
---
|
|
52
53
|
|
|
53
54
|
# Epic 01: Sign-up + first invite
|
|
@@ -76,8 +77,7 @@ Each story passes:
|
|
|
76
77
|
- **I**ndependent — can be implemented without waiting for another in-flight story.
|
|
77
78
|
- **N**egotiable — wording can move; intent stays.
|
|
78
79
|
- **V**aluable — a real outcome to a real user (or a clear test path that proves a slice).
|
|
79
|
-
- **
|
|
80
|
-
- **S**mall — fits in one PR (≤ 1 day for an experienced dev, including tests).
|
|
80
|
+
- **S**mall — fits in one PR, tests included. This is the *only* sizing test; no time or point estimate (see **No estimates** above).
|
|
81
81
|
- **T**estable — every AC is observable.
|
|
82
82
|
|
|
83
83
|
If a story is XL, slice it before merging it to `stories/`.
|
|
@@ -101,7 +101,6 @@ story_id: E01-S03
|
|
|
101
101
|
epic: 01-onboarding
|
|
102
102
|
status: ready-for-dev
|
|
103
103
|
priority: 2
|
|
104
|
-
estimate: M
|
|
105
104
|
linked_screens: [onboarding-step-1, invite-modal]
|
|
106
105
|
linked_acs: [AC-02-1, AC-02-2]
|
|
107
106
|
---
|
|
@@ -163,9 +162,9 @@ Every story declares the AC IDs it advances (from PRD). The union of stories per
|
|
|
163
162
|
|
|
164
163
|
Each story carries its own **sources of truth**, **restrictions** (out-of-scope + protected behaviors + compatibility + security), and a **validation contract** (AC → test map + required checks). These aren't optional prose — they are what makes AC → code → test → gate traceable. A story missing them is not ready for dev.
|
|
165
164
|
|
|
166
|
-
### 4.
|
|
165
|
+
### 4. Slice check (no estimates)
|
|
167
166
|
|
|
168
|
-
|
|
167
|
+
Don't estimate stories — size them by one question: does each fit a single PR? Anything that doesn't gets sliced before it lands in `stories/`. If most stories feel too big to slice cleanly, the slicing pattern is too coarse; revisit it.
|
|
169
168
|
|
|
170
169
|
### 5. Hand off
|
|
171
170
|
|
|
@@ -8,19 +8,19 @@ status: ready
|
|
|
8
8
|
|
|
9
9
|
# Checkpoint Preview
|
|
10
10
|
|
|
11
|
-
**Goal.** Pause mid-story to validate direction before continuing. For
|
|
11
|
+
**Goal.** Pause mid-story to validate direction before continuing. For larger stories where the cost of going off-rail is high, a quick checkpoint catches drift before it becomes rework.
|
|
12
12
|
|
|
13
13
|
Shuri drives. Tony on call for architectural drift. Hawkeye on call for test design drift.
|
|
14
14
|
|
|
15
15
|
## When to run
|
|
16
16
|
|
|
17
|
-
- Manually, when a story is
|
|
18
|
-
- After the first 2-3 commits of
|
|
17
|
+
- Manually, when a story is running long or feels off-track.
|
|
18
|
+
- After the first 2-3 commits of a larger story.
|
|
19
19
|
- When a new constraint is mentioned (security review, perf budget, vendor change).
|
|
20
20
|
|
|
21
21
|
## When NOT to run
|
|
22
22
|
|
|
23
|
-
- Quick-dev /
|
|
23
|
+
- Quick-dev / small stories (overhead exceeds the value).
|
|
24
24
|
- When the story is < 50% done and no surprise has come up yet.
|
|
25
25
|
|
|
26
26
|
## Inputs
|
|
@@ -49,7 +49,7 @@ Write 5 lines:
|
|
|
49
49
|
- ACs done vs. remaining: (X / Y)
|
|
50
50
|
- Tests added: (count, by split)
|
|
51
51
|
- New dependencies: (list)
|
|
52
|
-
-
|
|
52
|
+
- Commits so far: (count)
|
|
53
53
|
|
|
54
54
|
### 3. Sanity check (3 questions)
|
|
55
55
|
|
|
@@ -92,7 +92,7 @@ author: Shuri
|
|
|
92
92
|
- ACs done vs. remaining: 1 / 4
|
|
93
93
|
- Tests added: 2 unit, 1 integration
|
|
94
94
|
- New dependencies: none
|
|
95
|
-
-
|
|
95
|
+
- Commits so far: 3
|
|
96
96
|
|
|
97
97
|
## Sanity check
|
|
98
98
|
- Right problem? Yes.
|
|
@@ -43,7 +43,7 @@ Wizer pulls the latest status file. If `last_updated` is older than 2 days, the
|
|
|
43
43
|
|
|
44
44
|
Pick exactly one cause:
|
|
45
45
|
|
|
46
|
-
- **Cut scope.** Story
|
|
46
|
+
- **Cut scope.** Story turned out larger than one PR, or a non-essential AC can be deferred.
|
|
47
47
|
- **Re-route.** Story needs a different agent (e.g., Mantis for UX) or skill (e.g., `wize-investigate` for a regression).
|
|
48
48
|
- **Escalate.** Story needs more hands, or a decision outside the team.
|
|
49
49
|
|
|
@@ -12,6 +12,8 @@ status: ready
|
|
|
12
12
|
|
|
13
13
|
Tony drives. Shuri reads and proposes refinements before pulling the story.
|
|
14
14
|
|
|
15
|
+
> **No estimates.** Never attach a time or effort estimate (hours, days, story points, S/M/L/XL) to a story — at any step. AI development speed has made them noise that only burns time and tokens. The only sizing question is binary: **does it fit one PR?** If not, slice it. Nothing else.
|
|
16
|
+
|
|
15
17
|
## When to use
|
|
16
18
|
|
|
17
19
|
- New story splits from an epic (most common — done in `wize-create-epics-and-stories`).
|
|
@@ -47,7 +49,6 @@ story_id: E01-S03
|
|
|
47
49
|
epic: 01-onboarding
|
|
48
50
|
status: ready-for-dev
|
|
49
51
|
priority: 2 # 1=now, 2=next, 3=later
|
|
50
|
-
estimate: M # S | M | L (XL → slice further before merging here)
|
|
51
52
|
linked_screens: [onboarding-step-1, invite-modal]
|
|
52
53
|
linked_acs: [AC-02-1, AC-02-2]
|
|
53
54
|
---
|
|
@@ -95,20 +96,12 @@ Every story passes:
|
|
|
95
96
|
- **I**ndependent.
|
|
96
97
|
- **N**egotiable.
|
|
97
98
|
- **V**aluable.
|
|
98
|
-
- **
|
|
99
|
-
- **S**mall (≤ 1 PR).
|
|
99
|
+
- **S**mall (≤ 1 PR) — the *only* sizing test; if it doesn't fit one PR, slice.
|
|
100
100
|
- **T**estable.
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
## Estimation rough guide
|
|
102
|
+
(INVEST's "Estimable" is dropped on purpose — see **No estimates** above. We don't size in time or points.)
|
|
105
103
|
|
|
106
|
-
|
|
107
|
-
- **M** 4h–1d.
|
|
108
|
-
- **L** 1–2d.
|
|
109
|
-
- **XL** > 2d → split.
|
|
110
|
-
|
|
111
|
-
These are intervals, not commitments. Hill plans capacity against M-median.
|
|
104
|
+
If any letter fails, fix before queueing.
|
|
112
105
|
|
|
113
106
|
## Full story template
|
|
114
107
|
|
|
@@ -118,7 +111,6 @@ story_id: E01-S03
|
|
|
118
111
|
epic: 01-onboarding
|
|
119
112
|
status: ready-for-dev
|
|
120
113
|
priority: 2
|
|
121
|
-
estimate: M
|
|
122
114
|
linked_screens: [onboarding-step-1, invite-modal]
|
|
123
115
|
linked_acs: [AC-02-1, AC-02-2]
|
|
124
116
|
---
|
|
@@ -48,7 +48,7 @@ Going over 60 minutes is a sign the retro became therapy. Time-box.
|
|
|
48
48
|
### 1. Open with stats
|
|
49
49
|
|
|
50
50
|
Wizer reads the sprint dashboard from `sprint-status.md`:
|
|
51
|
-
-
|
|
51
|
+
- Stories committed vs shipped (a count, not a velocity metric — we don't estimate).
|
|
52
52
|
- Number of gates: PASS / CONCERNS / FAIL / WAIVED.
|
|
53
53
|
- Blockers and their resolution times.
|
|
54
54
|
- Carry-over count.
|
|
@@ -102,9 +102,9 @@ attendees: [Hill, Tony, Mantis, Pepper, Fury, Hawkeye, Shuri]
|
|
|
102
102
|
- Mantis' "before/after" recordings in PRs accelerated review.
|
|
103
103
|
|
|
104
104
|
## Didn't work
|
|
105
|
-
- Sprint-status entries went stale
|
|
106
|
-
- E02-S02
|
|
107
|
-
- Vendor outage with no fallback caught us cold
|
|
105
|
+
- Sprint-status entries went stale mid-sprint (Hill on vacation).
|
|
106
|
+
- E02-S02 was too big for one PR and should have been sliced; it stalled the sprint.
|
|
107
|
+
- Vendor outage with no fallback caught us cold.
|
|
108
108
|
|
|
109
109
|
## Surprised us
|
|
110
110
|
- A11y audit caught 3 issues on a screen Mantis had already signed off on (axe found dynamic-content edge cases).
|
|
@@ -113,7 +113,7 @@ attendees: [Hill, Tony, Mantis, Pepper, Fury, Hawkeye, Shuri]
|
|
|
113
113
|
## Changes for Sprint 8
|
|
114
114
|
|
|
115
115
|
1. **Sprint-status delegation rotation** — when Hill is OOO, Wizer takes over. *Owner: Wizer. By: Sprint 8 Day 1.*
|
|
116
|
-
2. **
|
|
116
|
+
2. **Slice-check every story at planning** — any story that can't be described as a single PR gets split before it's pulled. *Owner: Tony. By: Sprint 8 planning.*
|
|
117
117
|
3. **Vendor fallback drill** — quarterly, simulate top-3 vendor outages. *Owner: Hawkeye + Tony. By: end of Q3.*
|
|
118
118
|
|
|
119
119
|
## Decisions made
|
|
@@ -12,6 +12,8 @@ status: ready
|
|
|
12
12
|
|
|
13
13
|
Maria Hill chairs. Tony advises on slicing. Hawkeye flags risk. Shuri commits to the load.
|
|
14
14
|
|
|
15
|
+
> **No estimates.** Plan by story count and priority, never by velocity, points, or person-day math. Estimates only burn time and tokens. Pull what fits, keep a buffer, and let shipped-vs-committed counts (not a velocity number) tell you next time.
|
|
16
|
+
|
|
15
17
|
## Inputs
|
|
16
18
|
|
|
17
19
|
- Story backlog: `.wize/solutioning/stories/`
|
|
@@ -26,10 +28,10 @@ Maria Hill chairs. Tony advises on slicing. Hawkeye flags risk. Shuri commits to
|
|
|
26
28
|
|
|
27
29
|
## Steps
|
|
28
30
|
|
|
29
|
-
1. **Look back** — what shipped, what slipped, what surprised.
|
|
30
|
-
2. **
|
|
31
|
+
1. **Look back** — what shipped, what slipped, what surprised (counts, not velocity).
|
|
32
|
+
2. **Gauge availability** — who's around this interval and who's out. No person-day math.
|
|
31
33
|
3. **Pull stories** — continuation first, then priority, then risk.
|
|
32
|
-
4. **
|
|
34
|
+
4. **Leave slack** for unknowns — pull fewer stories than feel possible, not a padded number.
|
|
33
35
|
5. **Walk the gate plan** — design/trace/review/gate per story.
|
|
34
36
|
6. **Commit** — verbal + written into YAML.
|
|
35
37
|
|
|
@@ -65,11 +67,12 @@ development_status:
|
|
|
65
67
|
|
|
66
68
|
## Anti-patterns
|
|
67
69
|
|
|
68
|
-
-
|
|
70
|
+
- Estimating — velocity, points, or person-days. Just don't.
|
|
71
|
+
- Over-committing because "it looks like it fits."
|
|
69
72
|
- Stories without owners.
|
|
70
73
|
- Stretch goals that are really plan.
|
|
71
74
|
- Pulling blocked dependencies.
|
|
72
|
-
- Zero
|
|
75
|
+
- Zero slack.
|
|
73
76
|
|
|
74
77
|
## Hand-off
|
|
75
78
|
|
|
@@ -83,4 +86,4 @@ development_status:
|
|
|
83
86
|
>
|
|
84
87
|
> `/loop /wize-dev-story` drives one story at a time: TDD red-green-refactor, AC IDs in commits, `tea-design.md` contract, knowledge update on the 5 baseline axes, and a clean gate at the end. `/loop` keeps it going across the sprint's `ready-for-dev` queue until the user pauses.
|
|
85
88
|
>
|
|
86
|
-
> Next: `/wize-sprint-status` (Maria Hill) to
|
|
89
|
+
> Next: `/wize-sprint-status` (Maria Hill) to track progress.
|
|
@@ -45,7 +45,7 @@ Read these if they exist (absence is information too):
|
|
|
45
45
|
|
|
46
46
|
| Class | When | Route |
|
|
47
47
|
|---|---|---|
|
|
48
|
-
| **Quick Dev** | Small, predictable,
|
|
48
|
+
| **Quick Dev** | Small, predictable, trivially scoped, and touches **no** new feature, architecture, UX, or security surface — bug fix, copy edit, small refactor, dep bump, hotfix, brownfield maintenance. | **Shuri / `wize-quick-dev`** (light TEA) — skip the phase heuristic below. |
|
|
49
49
|
| **Full Lifecycle** | Anything else: new value, cross-cutting change, ACs to agree, security/auth/payments, or "could surprise a user." | Apply the phase heuristic below, top-down. |
|
|
50
50
|
|
|
51
51
|
Never pick Quick Dev to dodge writing artifacts. If the demand needs an AC, it is Full Lifecycle. When unsure, ask one question rather than guess the class.
|
|
@@ -27,13 +27,6 @@ function priorityFor(severity) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
// Group size -> rough estimate.
|
|
31
|
-
function estimateFor(count) {
|
|
32
|
-
if (count <= 2) return 'S';
|
|
33
|
-
if (count <= 10) return 'M';
|
|
34
|
-
return 'L';
|
|
35
|
-
}
|
|
36
|
-
|
|
37
30
|
// Human label + remediation intent per section.
|
|
38
31
|
const SECTION_THEME = {
|
|
39
32
|
secrets: { theme: 'Rotacionar e remover segredos expostos', owasp: 'A07:2021' },
|
|
@@ -121,8 +114,6 @@ function buildBacklog({ findings = [], actionPlan = [], scopeSha = '', generated
|
|
|
121
114
|
const planByTheme = {};
|
|
122
115
|
for (const a of (actionPlan || [])) planByTheme[(a.title || '').toLowerCase()] = a;
|
|
123
116
|
|
|
124
|
-
const actionable = groups.filter(g => g.worstSeverity !== 'Info-surface' || g.priority !== 'P2' ? true : true);
|
|
125
|
-
|
|
126
117
|
if (groups.length === 0) {
|
|
127
118
|
lines.push('## (sem itens)');
|
|
128
119
|
lines.push('');
|
|
@@ -134,7 +125,6 @@ function buildBacklog({ findings = [], actionPlan = [], scopeSha = '', generated
|
|
|
134
125
|
let epicN = 0;
|
|
135
126
|
for (const g of groups) {
|
|
136
127
|
epicN++;
|
|
137
|
-
const est = estimateFor(g.count);
|
|
138
128
|
// Find a matching action-plan detail by theme keyword overlap.
|
|
139
129
|
let planDetail = '';
|
|
140
130
|
for (const [title, a] of Object.entries(planByTheme)) {
|
|
@@ -150,14 +140,13 @@ function buildBacklog({ findings = [], actionPlan = [], scopeSha = '', generated
|
|
|
150
140
|
lines.push(`- **Prioridade:** ${g.priority} (pior severidade: ${g.worstSeverity})`);
|
|
151
141
|
lines.push(`- **Findings cobertos:** ${g.count}`);
|
|
152
142
|
if (g.owasp) lines.push(`- **OWASP:** ${g.owasp}`);
|
|
153
|
-
lines.push(`- **Estimativa:** ${est}`);
|
|
154
143
|
if (planDetail) lines.push(`- **Como corrigir:** ${planDetail}`);
|
|
155
144
|
lines.push('');
|
|
156
145
|
lines.push('### Stories');
|
|
157
146
|
lines.push('');
|
|
158
147
|
// For large groups, a single remediation story + a verification story.
|
|
159
|
-
lines.push(`- **${g.theme}** (${g.priority}
|
|
160
|
-
lines.push(`- **Verificar correção de ${g.section}** (${g.priority}
|
|
148
|
+
lines.push(`- **${g.theme}** (${g.priority}) — corrigir os ${g.count} finding(s) de \`${g.section}\`. _Origem: ${g.section} (${g.count} findings, ${g.worstSeverity})._`);
|
|
149
|
+
lines.push(`- **Verificar correção de ${g.section}** (${g.priority}) — re-rodar \`/wize-sec-pentest\` e confirmar que os findings de \`${g.section}\` sumiram (DoD).`);
|
|
161
150
|
lines.push('');
|
|
162
151
|
// Sample of source findings for traceability (cap at 5).
|
|
163
152
|
const sample = g.findings.slice(0, 5);
|
|
@@ -177,4 +166,4 @@ function buildBacklog({ findings = [], actionPlan = [], scopeSha = '', generated
|
|
|
177
166
|
return lines.join('\n');
|
|
178
167
|
}
|
|
179
168
|
|
|
180
|
-
module.exports = { buildBacklog, priorityFor,
|
|
169
|
+
module.exports = { buildBacklog, priorityFor, groupFindings, CTA_COMMAND };
|