wize-dev-kit 0.14.0 → 0.16.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/ARCH.md +24 -77
- package/CHANGELOG.md +24 -0
- package/DECISIONS.md +1 -27
- package/README.md +7 -2
- package/ROSTER.md +3 -11
- package/adapters/README.md +7 -7
- package/adapters/antigravity/README.md +5 -5
- package/adapters/claude-code/README.md +1 -1
- package/adapters/codex/README.md +5 -5
- package/adapters/codex/adapter.yaml +1 -1
- package/adapters/codex/render.js +1 -1
- package/adapters/continue/README.md +5 -5
- package/adapters/cursor/README.md +2 -2
- package/adapters/generic/README.md +1 -1
- package/adapters/kimi-code/README.md +5 -5
- package/adapters/kimi-code/render.js +2 -2
- package/adapters/opencode/README.md +3 -3
- package/adapters/opencode/render.js +1 -27
- package/adapters/windsurf/README.md +3 -3
- package/package.json +1 -1
- package/schemas/agent.schema.json +2 -2
- package/schemas/workflow.schema.json +1 -1
- package/src/app-overlay/wize-app-release-channels/workflow.md +0 -2
- package/src/app-overlay/wize-app-scaffold/workflow.md +0 -2
- package/src/app-overlay/wize-app-store-listing/workflow.md +0 -2
- package/src/builder-skills/wize-create-agent/workflow.md +0 -2
- package/src/builder-skills/wize-create-skill/workflow.md +0 -2
- package/src/builder-skills/wize-create-workflow/workflow.md +0 -2
- package/src/core-skills/module.yaml +3 -0
- package/src/core-skills/wize-advanced-elicitation/skill.md +0 -2
- package/src/core-skills/wize-brainstorming/skill.md +0 -2
- package/src/core-skills/wize-eli5/skill.md +72 -0
- package/src/core-skills/wize-review-adversarial/skill.md +0 -3
- package/src/core-skills/wize-shard-doc/skill.md +0 -2
- package/src/method-skills/1-analysis/wize-agent-analyst/agent.yaml +0 -3
- package/src/method-skills/1-analysis/wize-document-project/workflow.md +20 -213
- package/src/method-skills/1-analysis/wize-prfaq/workflow.md +11 -152
- package/src/method-skills/1-analysis/wize-product-brief/workflow.md +19 -92
- package/src/method-skills/1-analysis/wize-research/workflow.md +12 -39
- package/src/method-skills/1-analysis/wize-trigger-map/workflow.md +16 -82
- package/src/method-skills/2-plan-workflows/wize-create-prd/workflow.md +23 -135
- package/src/method-skills/2-plan-workflows/wize-ux-design/workflow.md +28 -134
- package/src/method-skills/2-plan-workflows/wize-ux-scenarios/workflow.md +15 -93
- package/src/method-skills/2-plan-workflows/wize-validate-prd/workflow.md +12 -108
- package/src/method-skills/3-solutioning/wize-check-implementation-readiness/workflow.md +11 -103
- package/src/method-skills/3-solutioning/wize-create-architecture/workflow.md +48 -55
- package/src/method-skills/3-solutioning/wize-create-epics-and-stories/workflow.md +15 -154
- package/src/method-skills/3-solutioning/wize-design-system/workflow.md +22 -184
- package/src/method-skills/3-solutioning/wize-nfr-principles/workflow.md +17 -145
- package/src/method-skills/3-solutioning/wize-tech-vision/workflow.md +22 -130
- package/src/method-skills/4-implementation/wize-agent-dev/persona.md +0 -12
- package/src/method-skills/4-implementation/wize-code-review/workflow.md +12 -54
- package/src/method-skills/4-implementation/wize-create-story/workflow.md +10 -154
- package/src/method-skills/4-implementation/wize-dev-story/workflow.md +17 -185
- package/src/method-skills/4-implementation/wize-quick-dev/workflow.md +18 -136
- package/src/method-skills/4-implementation/wize-retrospective/workflow.md +10 -114
- package/src/method-skills/4-implementation/wize-sprint-planning/workflow.md +11 -78
- package/src/method-skills/4-implementation/wize-sprint-status/workflow.md +11 -45
- package/src/method-skills/module.yaml +0 -28
- package/src/orchestrator-skills/module.yaml +1 -7
- package/src/orchestrator-skills/wize-help/skill.md +67 -227
- package/src/orchestrator-skills/wize-onboarding/workflow.md +14 -78
- package/src/orchestrator-skills/wize-orchestrator/agent.yaml +0 -2
- package/src/orchestrator-skills/wize-orchestrator/persona.md +3 -44
- package/src/orchestrator-skills/wize-party-mode/workflow.md +0 -2
- package/src/tea-skills/wize-tea-design/workflow.md +13 -107
- package/src/tea-skills/wize-tea-gate/workflow.md +25 -118
- package/src/tea-skills/wize-tea-nfr/workflow.md +14 -107
- package/src/tea-skills/wize-tea-review/workflow.md +13 -123
- package/src/tea-skills/wize-tea-risk/workflow.md +10 -113
- package/src/tea-skills/wize-tea-trace/workflow.md +12 -86
- package/src/web-overlay/wize-web-deploy/workflow.md +0 -2
- package/src/web-overlay/wize-web-scaffold/workflow.md +0 -2
- package/src/web-overlay/wize-web-seo-audit/workflow.md +0 -2
- package/tools/check-eli5-all-adapters.js +50 -0
- package/tools/installer/onboarding.js +20 -14
- package/tools/installer/render-shared.js +14 -158
- package/tools/installer/validators/run-all.js +2 -3
- package/tools/installer/wize-cli.js +70 -499
- package/AGENTS.md +0 -37
- package/README.es.md +0 -294
- package/README.pt-BR.md +0 -292
- package/docs/harnesses/antigravity.md +0 -20
- package/docs/harnesses/antigravity.pt-BR.md +0 -20
- package/docs/harnesses/claude-code.md +0 -23
- package/docs/harnesses/claude-code.pt-BR.md +0 -23
- package/docs/harnesses/codex.md +0 -21
- package/docs/harnesses/codex.pt-BR.md +0 -21
- package/docs/harnesses/continue.md +0 -21
- package/docs/harnesses/continue.pt-BR.md +0 -21
- package/docs/harnesses/cursor.md +0 -22
- package/docs/harnesses/cursor.pt-BR.md +0 -22
- package/docs/harnesses/generic.md +0 -20
- package/docs/harnesses/generic.pt-BR.md +0 -20
- package/docs/harnesses/kimi-code.md +0 -19
- package/docs/harnesses/kimi-code.pt-BR.md +0 -19
- package/docs/harnesses/opencode.md +0 -31
- package/docs/harnesses/opencode.pt-BR.md +0 -31
- package/docs/harnesses/windsurf.md +0 -22
- package/docs/harnesses/windsurf.pt-BR.md +0 -22
- package/src/core-skills/wize-customize/skill.md +0 -116
- package/src/core-skills/wize-editorial-review-prose/skill.md +0 -94
- package/src/core-skills/wize-editorial-review-structure/skill.md +0 -99
- package/src/core-skills/wize-grill/skill.md +0 -77
- package/src/core-skills/wize-index-docs/skill.md +0 -119
- package/src/core-skills/wize-pre-pr-check/skill.md +0 -134
- package/src/core-skills/wize-review-edge-case-hunter/skill.md +0 -115
- package/src/core-skills/wize-spec/assets/headless-schemas.md +0 -39
- package/src/core-skills/wize-spec/assets/spec-template.md +0 -40
- package/src/core-skills/wize-spec/customize.toml +0 -20
- package/src/core-skills/wize-spec/skill.md +0 -112
- package/src/method-skills/1-analysis/wize-document-project/documentation-requirements.csv +0 -12
- package/src/method-skills/1-analysis/wize-document-project/templates/api-contracts-template.md +0 -38
- package/src/method-skills/1-analysis/wize-document-project/templates/architecture-template.md +0 -54
- package/src/method-skills/1-analysis/wize-document-project/templates/component-inventory-template.md +0 -40
- package/src/method-skills/1-analysis/wize-document-project/templates/contribution-guide-template.md +0 -34
- package/src/method-skills/1-analysis/wize-document-project/templates/data-models-template.md +0 -36
- package/src/method-skills/1-analysis/wize-document-project/templates/deep-dive-template.md +0 -312
- package/src/method-skills/1-analysis/wize-document-project/templates/deployment-guide-template.md +0 -42
- package/src/method-skills/1-analysis/wize-document-project/templates/development-guide-template.md +0 -61
- package/src/method-skills/1-analysis/wize-document-project/templates/index-template.md +0 -185
- package/src/method-skills/1-analysis/wize-document-project/templates/project-overview-template.md +0 -110
- package/src/method-skills/1-analysis/wize-document-project/templates/project-scan-report-schema.json +0 -159
- package/src/method-skills/1-analysis/wize-document-project/templates/source-tree-template.md +0 -142
- package/src/method-skills/1-analysis/wize-domain-research/customize.toml +0 -14
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-01-init.md +0 -49
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-02-domain-analysis.md +0 -39
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-03-competitive-landscape.md +0 -39
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-04-regulatory-focus.md +0 -39
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-05-technical-trends.md +0 -39
- package/src/method-skills/1-analysis/wize-domain-research/domain-steps/step-06-research-synthesis.md +0 -43
- package/src/method-skills/1-analysis/wize-domain-research/research.template.md +0 -31
- package/src/method-skills/1-analysis/wize-domain-research/workflow.md +0 -58
- package/src/method-skills/1-analysis/wize-market-research/customize.toml +0 -14
- package/src/method-skills/1-analysis/wize-market-research/research.template.md +0 -31
- package/src/method-skills/1-analysis/wize-market-research/steps/step-01-init.md +0 -57
- package/src/method-skills/1-analysis/wize-market-research/steps/step-02-customer-behavior.md +0 -39
- package/src/method-skills/1-analysis/wize-market-research/steps/step-03-customer-pain-points.md +0 -37
- package/src/method-skills/1-analysis/wize-market-research/steps/step-04-customer-decisions.md +0 -39
- package/src/method-skills/1-analysis/wize-market-research/steps/step-05-competitive-analysis.md +0 -37
- package/src/method-skills/1-analysis/wize-market-research/steps/step-06-research-completion.md +0 -47
- package/src/method-skills/1-analysis/wize-market-research/workflow.md +0 -66
- package/src/method-skills/1-analysis/wize-refresh-knowledge/workflow.md +0 -129
- package/src/method-skills/1-analysis/wize-technical-research/customize.toml +0 -14
- package/src/method-skills/1-analysis/wize-technical-research/research.template.md +0 -31
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-01-init.md +0 -49
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-02-technical-overview.md +0 -45
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-03-integration-patterns.md +0 -39
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-04-architectural-patterns.md +0 -39
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-05-implementation-research.md +0 -42
- package/src/method-skills/1-analysis/wize-technical-research/technical-steps/step-06-research-synthesis.md +0 -46
- package/src/method-skills/1-analysis/wize-technical-research/workflow.md +0 -60
- package/src/method-skills/2-plan-workflows/wize-edit-prd/workflow.md +0 -110
- package/src/method-skills/3-solutioning/wize-create-architecture/architecture-decision-template.md +0 -41
- package/src/method-skills/3-solutioning/wize-create-architecture/customize.toml +0 -20
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-01-init.md +0 -95
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-01b-continue.md +0 -32
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-02-context.md +0 -126
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-03-starter.md +0 -110
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-04-decisions.md +0 -129
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-05-patterns.md +0 -109
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-06-structure.md +0 -97
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-07-validation.md +0 -124
- package/src/method-skills/3-solutioning/wize-create-architecture/steps/step-08-complete.md +0 -59
- package/src/method-skills/3-solutioning/wize-project-context/workflow.md +0 -120
- package/src/method-skills/4-implementation/wize-changelog/workflow.md +0 -184
- package/src/method-skills/4-implementation/wize-checkpoint-preview/workflow.md +0 -117
- package/src/method-skills/4-implementation/wize-code-review/customize.toml +0 -21
- package/src/method-skills/4-implementation/wize-code-review/steps/step-01-gather-context.md +0 -64
- package/src/method-skills/4-implementation/wize-code-review/steps/step-02-review.md +0 -40
- package/src/method-skills/4-implementation/wize-code-review/steps/step-03-triage.md +0 -43
- package/src/method-skills/4-implementation/wize-code-review/steps/step-04-present.md +0 -100
- package/src/method-skills/4-implementation/wize-correct-course/workflow.md +0 -93
- package/src/method-skills/4-implementation/wize-investigate/workflow.md +0 -123
- package/src/method-skills/4-implementation/wize-release/workflow.md +0 -162
- package/src/orchestrator-skills/wize/skill.md +0 -164
- package/src/orchestrator-skills/wize-check/skill.md +0 -98
- package/src/security-overlay/_shared/allowlist.js +0 -154
- package/src/security-overlay/_shared/backlog.js +0 -169
- package/src/security-overlay/_shared/cli-runner.js +0 -87
- package/src/security-overlay/_shared/cvss.js +0 -108
- package/src/security-overlay/_shared/detect.js +0 -125
- package/src/security-overlay/_shared/install-script.js +0 -205
- package/src/security-overlay/_shared/invoke-phase.js +0 -86
- package/src/security-overlay/_shared/owasp.js +0 -56
- package/src/security-overlay/_shared/partial.js +0 -225
- package/src/security-overlay/_shared/preflight.js +0 -175
- package/src/security-overlay/_shared/scope-gate.js +0 -172
- package/src/security-overlay/_shared/scope-parser.js +0 -147
- package/src/security-overlay/agents/red-teamer/agent.yaml +0 -54
- package/src/security-overlay/agents/red-teamer/persona.md +0 -49
- package/src/security-overlay/data/common.txt +0 -115
- package/src/security-overlay/data/owasp-top10.json +0 -15
- package/src/security-overlay/data/tool-allowlist.json +0 -31
- package/src/security-overlay/skills/wize-sec-enumerate/scripts/run-enumerate.js +0 -180
- package/src/security-overlay/skills/wize-sec-enumerate/skill.md +0 -34
- package/src/security-overlay/skills/wize-sec-exploit/data/common.txt +0 -117
- package/src/security-overlay/skills/wize-sec-exploit/scripts/run-ffuf.js +0 -147
- package/src/security-overlay/skills/wize-sec-exploit/scripts/run-nikto.js +0 -145
- package/src/security-overlay/skills/wize-sec-exploit/scripts/run-nuclei.js +0 -176
- package/src/security-overlay/skills/wize-sec-exploit/scripts/run-sqlmap.js +0 -139
- package/src/security-overlay/skills/wize-sec-pentest/scripts/run-pipeline.js +0 -184
- package/src/security-overlay/skills/wize-sec-pentest/skill.md +0 -54
- package/src/security-overlay/skills/wize-sec-recon/scripts/run-gitleaks.js +0 -139
- package/src/security-overlay/skills/wize-sec-recon/scripts/run-osv.js +0 -227
- package/src/security-overlay/skills/wize-sec-recon/scripts/run-recon.js +0 -162
- package/src/security-overlay/skills/wize-sec-recon/skill.md +0 -37
- package/src/security-overlay/skills/wize-sec-report/scripts/render-report.js +0 -1033
- package/src/security-overlay/skills/wize-sec-scope/scripts/generate-scope.js +0 -106
- package/src/security-overlay/skills/wize-sec-scope/skill.md +0 -52
- package/src/tea-skills/wize-qa-generate-e2e-tests/workflow.md +0 -121
- package/tools/installer/baseline.js +0 -128
- package/tools/installer/commands/agent.js +0 -197
- package/tools/installer/commands/doctor.js +0 -319
- package/tools/installer/commands/document-project.js +0 -93
- package/tools/installer/commands/sync.js +0 -45
- package/tools/installer/commands/update.js +0 -172
- package/tools/installer/document-project/batch-scanner.js +0 -93
- package/tools/installer/document-project/classify.js +0 -170
- package/tools/installer/document-project/modes/deep-dive.js +0 -196
- package/tools/installer/document-project/modes/full-rescan.js +0 -15
- package/tools/installer/document-project/modes/initial-scan.js +0 -100
- package/tools/installer/document-project/modes/quick.js +0 -211
- package/tools/installer/document-project/render-index.js +0 -101
- package/tools/installer/document-project/state.js +0 -110
- package/tools/installer/version-check.js +0 -117
|
@@ -7,27 +7,9 @@ I am **Wizer**. I am the host of this development kit. I know who you are, what
|
|
|
7
7
|
## Operating principles
|
|
8
8
|
|
|
9
9
|
1. **Listen first.** Before routing, I make sure I understand the demand. One clarifying question is cheaper than three wrong hand-offs.
|
|
10
|
-
2. **Route
|
|
11
|
-
3. **
|
|
12
|
-
4. **
|
|
13
|
-
5. **Pair when needed.** When a decision crosses concerns (UX touching architecture, PM touching TEA), I open a **party-mode** with the relevant agents.
|
|
14
|
-
6. **Treat the kit as the contract.** `.wize/`, `AGENTS.md`, and the installed `wize-*` skills are the operating instructions and persistent memory of whoever executes — not background reading. I make sure a demand is classified (Quick Dev vs Full Lifecycle, via `/wize` or `/wize-help`) and framed as a mission — objective, sources of truth, scope, acceptance criteria, validation — before any code is touched.
|
|
15
|
-
7. **Harness-aware interaction.** In text-only harnesses, I ask one clarifying question when intent is ambiguous. In rich-UI harnesses, I offer a menu of matching options.
|
|
16
|
-
|
|
17
|
-
## Fan-out to subagents
|
|
18
|
-
|
|
19
|
-
Party-mode is personas taking turns in this same thread — for live back-and-forth. When a step instead needs several **independent** reads on the same input (adversarial review, edge-case sweep, N-way research) that shouldn't see each other's output, I don't fake it by looping through personas myself. Any skill that needs this follows the same pattern:
|
|
20
|
-
|
|
21
|
-
1. **Name each subagent's role and prompt.** E.g. "Blind Hunter — reviews the diff cynically."
|
|
22
|
-
2. **Scope its context explicitly.** State exactly what it can see (diff only? diff + repo read access? diff + spec?). The isolation is the point — a subagent that sees everything can't give an independent read.
|
|
23
|
-
3. **Dispatch on whatever the current harness natively supports:**
|
|
24
|
-
- Claude Code — the Task/Agent tool, one call per subagent, run concurrently.
|
|
25
|
-
- OpenCode — the persona files this kit renders under `.opencode/agents/*.md` with `mode: subagent`; invoke by name.
|
|
26
|
-
- Any harness without a subagent primitive (Codex included) — there is no isolated dispatch available. Generate one prompt file per subagent under the skill's artifact folder and halt, asking the user to run each in a separate session.
|
|
27
|
-
4. **Match the model tier to the task.** Independent reads aren't all equal weight. Dispatch mechanical layers (file sweeps, grep passes, short summaries) on a **lightweight tier**; implementation, refactor, and standard review on the **standard tier**; reserve a **high-capability tier** for architecture calls, critical decisions, and final adversarial review — or when a standard-tier layer already failed. Pass the tier explicitly whenever the harness lets you set it; don't just inherit the session default. Tiers only — never name a vendor's models.
|
|
28
|
-
5. **Tolerate partial failure.** If one subagent fails, times out, or returns empty, note it and proceed with whatever the others returned. Don't block on one flaky layer.
|
|
29
|
-
|
|
30
|
-
`wize-code-review` is the reference implementation (see its step-02).
|
|
10
|
+
2. **Route, don't perform.** I rarely do the specialist's job. When the question is a brief, I call Pepper. When it is a PRD, Maria Hill. When it is architecture, Tony.
|
|
11
|
+
3. **Keep the thread.** I keep the knowledge of the project consistent across conversations. If something changed, I update `.wize/config/project.toml` before moving on.
|
|
12
|
+
4. **Pair when needed.** When a decision crosses concerns (UX touching architecture, PM touching TEA), I open a **party-mode** with the relevant agents.
|
|
31
13
|
|
|
32
14
|
## Voice
|
|
33
15
|
|
|
@@ -41,29 +23,6 @@ Before greeting, read `.wize/config/user.toml` if it exists. If it has `[user] n
|
|
|
41
23
|
|
|
42
24
|
If `user.toml` is missing or has no `name`, fall back to a neutral greeting.
|
|
43
25
|
|
|
44
|
-
## First-run detection
|
|
45
|
-
|
|
46
|
-
Before greeting, check whether this is a first run:
|
|
47
|
-
|
|
48
|
-
1. Read `.wize/planning/brief.md` — if it exists, this is NOT a first run.
|
|
49
|
-
2. Read `.wize/knowledge/document-project/` — if it has content (any `.md` files), this is NOT a first run.
|
|
50
|
-
3. If neither exists: **first run**.
|
|
51
|
-
|
|
52
|
-
## First-run flow
|
|
53
|
-
|
|
54
|
-
When first run is detected, do NOT show a menu. Ask one question:
|
|
55
|
-
|
|
56
|
-
> "O que você está construindo?"
|
|
57
|
-
|
|
58
|
-
Wait for the answer. Then classify:
|
|
59
|
-
|
|
60
|
-
- **Greenfield** (new project, idea, feature, product): route to **Pepper / `wize-product-brief`**.
|
|
61
|
-
- **Brownfield** (existing codebase, legacy system, "we already have X"): route to **Pepper / `wize-document-project`**.
|
|
62
|
-
|
|
63
|
-
If the answer is ambiguous, ask one clarifying question: "Is this a new project or an existing codebase?" Then route.
|
|
64
|
-
|
|
65
|
-
Never show a menu on first run. One question → classify → route.
|
|
66
|
-
|
|
67
26
|
## Greet
|
|
68
27
|
|
|
69
28
|
> "Welcome back{{`, ` + user.name when present, else ''}}. What are we working on?"
|
|
@@ -1,132 +1,38 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
2
|
code: wize-tea-design
|
|
4
|
-
description: "Use quando uma story entrar em desenvolvimento e precisar do contrato de testes (split, fixtures, mocks, assertions) que a Shuri implementará."
|
|
5
3
|
name: TEA Test Design
|
|
6
|
-
phase: 4-implementation
|
|
7
4
|
gate: design
|
|
8
5
|
owner: wize-agent-test-architect # Hawkeye
|
|
9
6
|
when: per-story-start
|
|
10
|
-
status:
|
|
7
|
+
status: stub
|
|
11
8
|
---
|
|
12
9
|
|
|
13
10
|
# TEA — Test Design
|
|
14
11
|
|
|
15
|
-
**Goal.** For
|
|
16
|
-
|
|
17
|
-
Hawkeye drives. Runs at the start of every story (advisory; can be relaxed only when `tea.toml` says so).
|
|
12
|
+
**Goal.** For one story: declare the test split (unit / integration / e2e), required fixtures, mocks, environments.
|
|
18
13
|
|
|
19
14
|
## Inputs
|
|
20
|
-
|
|
21
15
|
- `.wize/solutioning/stories/{epic}/{story}.md`
|
|
22
16
|
- `.wize/solutioning/architecture.md`
|
|
23
|
-
- `.wize/implementation/tea/risk-profile.md`
|
|
24
|
-
- Overlay test playbooks if active:
|
|
25
|
-
- `web-overlay/playbooks/playwright-vitest.md`
|
|
26
|
-
- `app-overlay/playbooks/detox-maestro.md`
|
|
27
17
|
|
|
28
18
|
## Output
|
|
29
|
-
|
|
30
19
|
- `.wize/implementation/tea/{epic}/{story}/design.md`
|
|
31
20
|
|
|
32
|
-
##
|
|
33
|
-
|
|
34
|
-
### 1. Read the story; map every AC
|
|
35
|
-
|
|
36
|
-
For each AC, write **one assertion-shape sentence**: *"There will be a {kind} test that does {what} and expects {observable}."*
|
|
37
|
-
|
|
38
|
-
### 2. Pick the test split
|
|
39
|
-
|
|
40
|
-
Defaults (from `playwright-vitest.md` / `detox-maestro.md`):
|
|
41
|
-
- **Low-risk story:** 70% unit / 20% integration / 10% E2E.
|
|
42
|
-
- **Risk-profile flagged story (R-1..R-3):** add 1–2 dedicated E2E + integration for the risk area.
|
|
43
|
-
- **UI-only story:** 60% unit / 30% component (Testing Library) / 10% E2E.
|
|
44
|
-
- **Server-only story:** 80% unit / 20% integration; no E2E unless an upstream consumer story bundles it.
|
|
45
|
-
|
|
46
|
-
### 3. Declare fixtures + mocks
|
|
47
|
-
|
|
48
|
-
- Fixtures: known users, known DB rows, known files.
|
|
49
|
-
- Mocks: external services at the network boundary (MSW). Don't mock the unit under test.
|
|
50
|
-
|
|
51
|
-
### 4. Environment
|
|
52
|
-
|
|
53
|
-
- Where it runs (local sim, headless emulator, real device farm).
|
|
54
|
-
- Network conditions (offline / 3G slow / lossy WiFi).
|
|
55
|
-
- OS / browser matrix (from `device-matrix.md` or playwright projects).
|
|
56
|
-
|
|
57
|
-
### 5. Edge cases (cheap; pay back × 10)
|
|
58
|
-
|
|
59
|
-
List 3–7 edge cases the ACs don't name but the user might hit:
|
|
60
|
-
- Empty / max-length inputs.
|
|
61
|
-
- IME / paste / autofill.
|
|
62
|
-
- Offline mid-action.
|
|
63
|
-
- Concurrent users on the same resource.
|
|
64
|
-
- Time-zone / DST.
|
|
65
|
-
- Localized number/currency.
|
|
66
|
-
|
|
67
|
-
Each gets a test of its own (usually unit).
|
|
68
|
-
|
|
69
|
-
### 6. Hand off
|
|
70
|
-
|
|
71
|
-
Mark `status: ready-for-dev` in the design.md frontmatter. Shuri reads before starting.
|
|
72
|
-
|
|
73
|
-
## YAML frontmatter (canonical)
|
|
74
|
-
|
|
21
|
+
## YAML frontmatter
|
|
75
22
|
```yaml
|
|
76
23
|
---
|
|
77
24
|
gate: design
|
|
78
|
-
story_id:
|
|
79
|
-
ac_ids: [AC-
|
|
80
|
-
status: PASS
|
|
81
|
-
created_at: 2026-06-11T12:00:00Z
|
|
25
|
+
story_id: …
|
|
26
|
+
ac_ids: [AC-1, AC-2, …]
|
|
82
27
|
test_split:
|
|
83
|
-
unit:
|
|
84
|
-
integration:
|
|
85
|
-
e2e:
|
|
86
|
-
fixtures:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
mocks:
|
|
90
|
-
- "Resend via MSW"
|
|
91
|
-
- "Auth session via fixture cookie"
|
|
92
|
-
environment: "local + Playwright project chromium + ios"
|
|
93
|
-
risk_links: [R-1]
|
|
94
|
-
edges:
|
|
95
|
-
- "invalid email rules: blank, missing @, weird IME chars"
|
|
96
|
-
- "duplicate teammate email"
|
|
97
|
-
- "offline at submit time"
|
|
28
|
+
unit: count + brief description
|
|
29
|
+
integration: count + brief description
|
|
30
|
+
e2e: count + brief description
|
|
31
|
+
fixtures: [...]
|
|
32
|
+
mocks: [...]
|
|
33
|
+
environment: dev|staging|isolated
|
|
98
34
|
---
|
|
99
35
|
```
|
|
100
36
|
|
|
101
|
-
## Body
|
|
102
|
-
|
|
103
|
-
```markdown
|
|
104
|
-
## Per-AC assertion shapes
|
|
105
|
-
|
|
106
|
-
- **AC-02-1**: Vitest unit on `validateInviteEmail()` → returns `{ ok: true }` for `name+tag@example.com`. Vitest integration on `inviteTeammate()` server action → asserts `mailer.send` called once with `{ to: 'name@example.com', template: 'team-invite' }`. Playwright E2E → clicks "Send invite", asserts `[data-testid="invite-sent-banner"]` appears within 1s.
|
|
107
|
-
|
|
108
|
-
- **AC-02-2**: Vitest unit on `validateInviteEmail()` → returns `{ ok: false, code: 'invalid_format', field: 'email' }` for empty/no-@. Component test (Testing Library) on `<InviteForm>` → asserts the input's `aria-describedby` error region announces "Enter a valid email."
|
|
109
|
-
|
|
110
|
-
## Edge cases (additional tests)
|
|
111
|
-
|
|
112
|
-
- E1: Empty email — `validateInviteEmail('')` → `invalid_format`.
|
|
113
|
-
- E2: 254-char local part — boundary check; expect graceful clipping.
|
|
114
|
-
- E3: Same email submitted twice — second call hits `inviteTeammate()`, asserts second insert is a no-op (idempotency key based on `(team_id, email)`).
|
|
115
|
-
- E4: Offline at submit — Playwright `context.setOffline(true)` after click; banner shows "We'll retry when you're back online."
|
|
116
|
-
|
|
117
|
-
## Run plan
|
|
118
|
-
- On every PR: full unit + integration; E2E `@smoke` tag only (≤ 30s).
|
|
119
|
-
- Nightly: full E2E suite + Lighthouse baseline.
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Anti-patterns Hawkeye rejects
|
|
123
|
-
|
|
124
|
-
- **`design.md` written after dev started.** Then the story slipped through; flag.
|
|
125
|
-
- **One test per AC, no edges.** Edges are where users live.
|
|
126
|
-
- **Mocking the unit under test.** You'd be testing the mock.
|
|
127
|
-
- **E2E that test the happy path only.** Cover failure too.
|
|
128
|
-
- **Selectors by visible text in a multilingual app.** Use `data-testid` or `role` with locale-aware patterns.
|
|
129
|
-
|
|
130
|
-
## Hand-off
|
|
131
|
-
|
|
132
|
-
> Test design for E01-S03 at `.wize/implementation/tea/E01-S03/design.md`. 4 unit, 1 integration, 1 E2E, plus 4 edges. Shuri can start; I'll check `tea-trace.md` against this when the PR opens.
|
|
37
|
+
## Body
|
|
38
|
+
Plain-English rationale + edge-case list.
|
|
@@ -1,144 +1,51 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
2
|
code: wize-tea-gate
|
|
4
|
-
description: "Use quando uma story chegar ao final e precisar da decisão de gate (PASS/CONCERNS/FAIL/WAIVED) com rationale documentado."
|
|
5
3
|
name: TEA Gate Decision
|
|
6
|
-
phase: 4-implementation
|
|
7
4
|
gate: gate
|
|
8
5
|
owner: wize-agent-test-architect # Hawkeye
|
|
9
6
|
when: story-final
|
|
10
|
-
status:
|
|
7
|
+
status: stub
|
|
11
8
|
---
|
|
12
9
|
|
|
13
10
|
# TEA — Gate Decision
|
|
14
11
|
|
|
15
|
-
**Goal.** Final per-story
|
|
16
|
-
|
|
17
|
-
Hawkeye drives. The four inputs (`design`, `trace`, `review`, plus `nfr` at epic boundary) feed in. Policy is read from `.wize/config/tea.toml`.
|
|
12
|
+
**Goal.** Final per-story gate. PASS / CONCERNS / FAIL / WAIVED with documented rationale.
|
|
18
13
|
|
|
19
14
|
## Inputs
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
- `.wize/implementation/tea/{epic}/{story}/review.md`
|
|
24
|
-
- `.wize/implementation/tea/nfr/{epic}.md` (when the story is the last of its epic)
|
|
25
|
-
- `.wize/config/tea.toml`
|
|
15
|
+
- `design.md`, `trace.md`, `review.md` for the story
|
|
16
|
+
- `nfr/{epic}.md` if applicable
|
|
17
|
+
- Story file
|
|
26
18
|
|
|
27
19
|
## Output
|
|
28
|
-
|
|
29
20
|
- `.wize/implementation/tea/{epic}/{story}/gate.md`
|
|
30
21
|
|
|
31
|
-
## Decision rules
|
|
32
|
-
|
|
33
|
-
| Inputs | Recommendation |
|
|
34
|
-
|---|---|
|
|
35
|
-
| All ACs `met`, no findings | **PASS** |
|
|
36
|
-
| All ACs `met`, only low/medium non-blocking findings | **PASS** with notes (or **CONCERNS** depending on count) |
|
|
37
|
-
| Any AC `partial` | **CONCERNS** |
|
|
38
|
-
| Any AC `not-met` | **FAIL** |
|
|
39
|
-
| NFR `FAIL` on the epic (last story) | **FAIL** |
|
|
40
|
-
| `tea-review` flagged `knowledge_axes_touched` ≠ `knowledge_axes_updated` (any axis touched without update) | **CONCERNS** (advisory mode) / **FAIL** (enforcing mode) — adds finding `KN-NN` |
|
|
41
|
-
| Failing AC OR non-neg NFR with documented business rationale + senior signoff | **WAIVED** |
|
|
42
|
-
|
|
43
|
-
Score (0–100): heuristic. `100 - (10 × high) - (5 × medium) - (2 × low)`. Floor 0.
|
|
44
|
-
|
|
45
|
-
## Policy
|
|
46
|
-
|
|
47
|
-
`.wize/config/tea.toml` sets `policy = "advisory"` (default) or `"enforcing"`.
|
|
48
|
-
|
|
49
|
-
- **Advisory:** `FAIL` is a visible warning in PR; merge isn't auto-blocked. The team decides.
|
|
50
|
-
- **Enforcing:** `FAIL` blocks merge via CI status check (`tea-gate`). PASS / CONCERNS allowed through.
|
|
51
|
-
|
|
52
|
-
## Steps
|
|
53
|
-
|
|
54
|
-
### 1. Read the three inputs
|
|
55
|
-
|
|
56
|
-
If trace shows `partial`, you know the recommendation. If review recommends FAIL, you've got your decision. The gate doc just records it.
|
|
57
|
-
|
|
58
|
-
### 2. Compute score
|
|
59
|
-
|
|
60
|
-
Don't game it. The score communicates magnitude to humans skimming a backlog.
|
|
61
|
-
|
|
62
|
-
### 3. Write the doc
|
|
63
|
-
|
|
64
|
-
Frontmatter is the structured truth. The body is the narrative for humans.
|
|
65
|
-
|
|
66
|
-
### 4. Notify
|
|
67
|
-
|
|
68
|
-
Update the PR description with the gate verdict + link to the doc. Maria Hill watches the gate status in `sprint-status.md`.
|
|
69
|
-
|
|
70
22
|
## YAML frontmatter (canonical)
|
|
71
|
-
|
|
72
23
|
```yaml
|
|
73
24
|
---
|
|
74
25
|
gate: gate
|
|
75
|
-
story_id:
|
|
76
|
-
status: PASS
|
|
77
|
-
score:
|
|
78
|
-
policy: advisory
|
|
26
|
+
story_id: …
|
|
27
|
+
status: PASS | CONCERNS | FAIL | WAIVED
|
|
28
|
+
score: 0-100
|
|
29
|
+
policy: advisory | enforcing
|
|
79
30
|
inputs:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
nfr:
|
|
31
|
+
- design.md: …
|
|
32
|
+
- trace.md: …
|
|
33
|
+
- review.md: …
|
|
34
|
+
- nfr/{epic}.md: …
|
|
84
35
|
findings:
|
|
85
|
-
- id:
|
|
86
|
-
severity: low
|
|
87
|
-
summary:
|
|
88
|
-
recommendation:
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
recommendation: "Add 2 lines to `.wize/knowledge/document-project/architecture-snapshot.md` under a dated bullet referencing the new component + its public testid contract."
|
|
93
|
-
owner: shuri
|
|
94
|
-
blocking: false # advisory mode; would be true under enforcing
|
|
95
|
-
waived_by: null
|
|
96
|
-
waived_reason: null
|
|
97
|
-
created_at: 2026-06-11T20:30:00Z
|
|
36
|
+
- id: G-1
|
|
37
|
+
severity: low | medium | high
|
|
38
|
+
summary: …
|
|
39
|
+
recommendation: …
|
|
40
|
+
waived_by: null | "wizer"
|
|
41
|
+
waived_reason: null | "…"
|
|
42
|
+
created_at: ISO-8601
|
|
98
43
|
---
|
|
99
44
|
```
|
|
100
45
|
|
|
101
|
-
## Body
|
|
102
|
-
|
|
103
|
-
```markdown
|
|
104
|
-
## Verdict
|
|
105
|
-
**PASS** (score 95)
|
|
106
|
-
|
|
107
|
-
## Why
|
|
108
|
-
- All ACs met with observed evidence.
|
|
109
|
-
- Trace clean; coverage 100% on ACs, partial on edges (E3, E4) — tracked for follow-up.
|
|
110
|
-
- Review found one low-severity copy finding (REV-01).
|
|
111
|
-
- Story is not the last in epic 01; NFR gate runs separately at epic boundary.
|
|
112
|
-
|
|
113
|
-
## Notes for follow-up
|
|
114
|
-
- Open a tiny story (or include in next sprint planning) to fix REV-01 and close edges E3, E4.
|
|
115
|
-
|
|
116
|
-
## Trail
|
|
117
|
-
- design.md → 4/1/1 split (unit/integration/e2e) + 4 edges declared.
|
|
118
|
-
- trace.md → all ACs `covered`; E3 `partial`, E4 `missing` (follow-up).
|
|
119
|
-
- review.md → ACs `met`, scope mostly disciplined, copy nit.
|
|
120
|
-
- nfr.md → N/A (mid-epic).
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## When to WAIVE
|
|
124
|
-
|
|
125
|
-
Rare. Examples:
|
|
126
|
-
- A failing E2E that depends on a flaky external sandbox; the production code is unaffected; sign-off by Tony + Hill.
|
|
127
|
-
- A non-negotiable temporarily slipped because of an external integration blocker; we ship with mitigation in place; sign-off by Fury.
|
|
128
|
-
|
|
129
|
-
A WAIVE always lists:
|
|
130
|
-
- Who waived (`waived_by`).
|
|
131
|
-
- Why (`waived_reason`).
|
|
132
|
-
- The compensating control (a follow-up story, an SLA monitor, a feature flag).
|
|
46
|
+
## Body
|
|
47
|
+
Narrative explanation; structured data is the YAML.
|
|
133
48
|
|
|
134
|
-
##
|
|
135
|
-
|
|
136
|
-
- **
|
|
137
|
-
- **PASS with a `not-met` AC.** Auto-fail.
|
|
138
|
-
- **WAIVED with no `waived_by` field.** Reject.
|
|
139
|
-
- **Scoring jiggered to clear a threshold.** Trust trumps point-scoring; if the count says 70, don't write 91.
|
|
140
|
-
- **Enforcing mode gates without CI check wiring.** Ghost gate; remove or wire it.
|
|
141
|
-
|
|
142
|
-
## Hand-off
|
|
143
|
-
|
|
144
|
-
> Gate for E01-S03: **PASS** (score 95). One low-severity finding logged for follow-up. Maria Hill, sprint-status updated; Shuri, ready to start the next story.
|
|
49
|
+
## Policy
|
|
50
|
+
- **advisory** (default): FAIL is a warning. Merge proceeds.
|
|
51
|
+
- **enforcing**: FAIL blocks merge via CI. Configured in `.wize/config/tea.toml`.
|
|
@@ -1,130 +1,37 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
2
|
code: wize-tea-nfr
|
|
4
|
-
description: "Use quando um epic estiver próximo do merge e precisar verificar se atende aos princípios de NFR definidos pelo Fury."
|
|
5
3
|
name: TEA NFR Assessment
|
|
6
|
-
phase: 4-implementation
|
|
7
4
|
gate: nfr
|
|
8
5
|
owner: wize-agent-test-architect # Hawkeye
|
|
9
6
|
when: pre-merge-per-epic
|
|
10
|
-
status:
|
|
7
|
+
status: stub
|
|
11
8
|
---
|
|
12
9
|
|
|
13
10
|
# TEA — NFR Assessment
|
|
14
11
|
|
|
15
|
-
**Goal.** Verify
|
|
16
|
-
|
|
17
|
-
Hawkeye drives. Tony reviews perf + security findings. Fury escalates if a non-negotiable is at risk. Runs **per epic**, just before any of its stories merges.
|
|
12
|
+
**Goal.** Verify the epic meets Fury's NFR principles: performance, security, reliability, maintainability, accessibility, cost.
|
|
18
13
|
|
|
19
14
|
## Inputs
|
|
20
|
-
|
|
21
|
-
- `.wize/planning/nfr-principles.md` (Fury's targets)
|
|
15
|
+
- `.wize/planning/nfr-principles.md`
|
|
22
16
|
- Code from all stories in the epic
|
|
23
|
-
- Telemetry
|
|
24
|
-
- Overlay perf playbooks: `web-perf-budgets.md`, `mobile-perf-budgets.md`
|
|
17
|
+
- Telemetry/benchmark output
|
|
25
18
|
|
|
26
19
|
## Output
|
|
27
|
-
|
|
28
20
|
- `.wize/implementation/tea/nfr/{epic}.md`
|
|
29
21
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
### 1. For each category, run the verifier
|
|
33
|
-
|
|
34
|
-
| Category | Verifier (typical) |
|
|
35
|
-
|---|---|
|
|
36
|
-
| Performance | lighthouse-ci against epic-scope routes; web-vitals beacon delta |
|
|
37
|
-
| Security | `npm audit --omit=dev`; manual OWASP Top 10 walk; secret scan |
|
|
38
|
-
| Reliability | injected-failure tests (`@chaos` tag); retry policy review; idempotency check |
|
|
39
|
-
| Maintainability | coverage delta; cyclomatic complexity delta; lint baseline |
|
|
40
|
-
| Accessibility | axe on every epic-scope route; keyboard walk on critical flows |
|
|
41
|
-
| Cost | cost dashboard delta in the epic window |
|
|
42
|
-
|
|
43
|
-
### 2. Score each
|
|
44
|
-
|
|
45
|
-
For each category: `PASS` (meets non-negotiable) / `CONCERNS` (within stretch range; below non-negotiable on a measurable item with mitigation plan) / `FAIL` (non-negotiable missed; no plan) / `WAIVED` (with documented reason + sign-off).
|
|
46
|
-
|
|
47
|
-
### 3. Findings (one per slip)
|
|
48
|
-
|
|
49
|
-
If anything failed or concerned, write the finding: what we measured, what was expected, why the slip, what the next step is.
|
|
50
|
-
|
|
51
|
-
### 4. Hand off
|
|
52
|
-
|
|
53
|
-
`PASS` → epic can merge. `CONCERNS` (advisory) → flag in PR description. `FAIL` (enforcing) → blocks merge.
|
|
54
|
-
|
|
55
|
-
## YAML frontmatter (canonical)
|
|
56
|
-
|
|
22
|
+
## YAML frontmatter
|
|
57
23
|
```yaml
|
|
58
24
|
---
|
|
59
25
|
gate: nfr
|
|
60
|
-
epic:
|
|
61
|
-
status: CONCERNS
|
|
26
|
+
epic: …
|
|
27
|
+
status: PASS | CONCERNS | FAIL | WAIVED
|
|
62
28
|
scores:
|
|
63
|
-
performance:
|
|
64
|
-
security:
|
|
65
|
-
reliability:
|
|
66
|
-
maintainability:
|
|
67
|
-
accessibility:
|
|
68
|
-
cost:
|
|
69
|
-
findings:
|
|
70
|
-
- id: NFR-01-1
|
|
71
|
-
category: reliability
|
|
72
|
-
severity: medium
|
|
73
|
-
summary: "Outbox retry interval too aggressive for Resend's documented backoff."
|
|
74
|
-
expected: "Exponential 30s/2m/10m; we set 5s/15s/45s."
|
|
75
|
-
actual: "Spike in Resend 429s during integration test."
|
|
76
|
-
recommendation: "Update retry policy in `lib/email/outbox.ts`; capture with `outbox-retry.spec.ts`."
|
|
77
|
-
owner: shuri
|
|
78
|
-
blocking: false
|
|
79
|
-
created_at: 2026-06-11T18:00:00Z
|
|
29
|
+
performance: …
|
|
30
|
+
security: …
|
|
31
|
+
reliability: …
|
|
32
|
+
maintainability: …
|
|
33
|
+
accessibility: …
|
|
34
|
+
cost: …
|
|
35
|
+
findings: [...]
|
|
80
36
|
---
|
|
81
37
|
```
|
|
82
|
-
|
|
83
|
-
## Body of `nfr/{epic}.md`
|
|
84
|
-
|
|
85
|
-
```markdown
|
|
86
|
-
## Summary
|
|
87
|
-
Epic 01 (onboarding) at gate. Performance and a11y pass non-negotiables; reliability has one mid-severity concern around outbox backoff.
|
|
88
|
-
|
|
89
|
-
## Per category
|
|
90
|
-
|
|
91
|
-
### Performance — PASS
|
|
92
|
-
- LCP (signup): 1.45s p75 (target ≤ 2.5s).
|
|
93
|
-
- INP (signup): 90ms p75 (target ≤ 200ms).
|
|
94
|
-
- CLS (signup): 0.03 (target ≤ 0.1).
|
|
95
|
-
- LCP (onboarding): 1.7s p75.
|
|
96
|
-
|
|
97
|
-
### Security — PASS
|
|
98
|
-
- `npm audit` clean (dev advisories noted in `.audit-ignore.md`).
|
|
99
|
-
- OWASP Top 10 walk: no findings.
|
|
100
|
-
- RLS verified on `users`, `teams`, `memberships`.
|
|
101
|
-
|
|
102
|
-
### Reliability — CONCERNS
|
|
103
|
-
- See NFR-01-1.
|
|
104
|
-
|
|
105
|
-
### Maintainability — PASS
|
|
106
|
-
- Coverage 84% on logic modules in this epic.
|
|
107
|
-
- No file > 300 LOC introduced.
|
|
108
|
-
|
|
109
|
-
### Accessibility — PASS
|
|
110
|
-
- axe clean on `/signup`, `/signup/error`, `/onboarding`, `/onboarding/invite-sent`.
|
|
111
|
-
- Keyboard walk: focus order matches visual; modal traps + restores.
|
|
112
|
-
|
|
113
|
-
### Cost — PASS
|
|
114
|
-
- No cost dashboard change beyond expected (account creation; mailer spend within budget).
|
|
115
|
-
|
|
116
|
-
## Action items
|
|
117
|
-
- Shuri: PR-XXX fixes NFR-01-1. Re-run NFR after merge.
|
|
118
|
-
- Hawkeye: re-baseline web-vitals after epic ships to prod.
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Anti-patterns Hawkeye rejects
|
|
122
|
-
|
|
123
|
-
- **Self-reported "looks fine" with no verifier output.** Attach the artifact.
|
|
124
|
-
- **Concerns left for "later."** Either an action item with owner+deadline or it's not a concern.
|
|
125
|
-
- **Waived without sign-off.** WAIVED needs `waived_by: NAME` + reason.
|
|
126
|
-
- **NFR run on stage with synthetic data.** Use realistic distributions whenever possible.
|
|
127
|
-
|
|
128
|
-
## Hand-off
|
|
129
|
-
|
|
130
|
-
> NFR gate for Epic 01: **CONCERNS**. PR can proceed if the reliability finding (NFR-01-1) is committed to be addressed in the next sprint. Otherwise hold the merge.
|