@iamu-dev/iamu 0.4.0-beta.0 → 0.4.0-beta.1
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/dist/bin.js +1688 -1238
- package/dist/commands/summary.d.ts +4 -0
- package/dist/index.js +1688 -1238
- package/dist/templates/prompts/walk.md +5 -4
- package/dist/templates/skills/iamu-findings.md +10 -10
- package/dist/templates/skills/iamu-new.md +5 -4
- package/dist/templates/skills/iamu-propose.md +5 -4
- package/dist/templates/skills/iamu-run.md +14 -7
- package/dist/templates/skills/iamu-status.md +7 -7
- package/dist/ui/html-report.d.ts +35 -3
- package/dist/ui/report-view.d.ts +21 -0
- package/package.json +1 -1
|
@@ -56,7 +56,7 @@ Not every lens produces a finding at every screen. But you must consciously chec
|
|
|
56
56
|
- **observation** — An enhancement opportunity. Not friction, but a missed chance to help.
|
|
57
57
|
|
|
58
58
|
Finding type pairing:
|
|
59
|
-
- `helps` → always observation severity. Record
|
|
59
|
+
- `helps` → always observation severity. Record each one you meet: something the product does that actively supports the persona and would be missed if removed. Not baseline competence ("the button is easy to find"). These tell whoever fixes the problems what to protect.
|
|
60
60
|
- `hinders` → critical, major, or minor.
|
|
61
61
|
- `missing` → critical, major, or minor.
|
|
62
62
|
- `incorrect` → critical or major only.
|
|
@@ -197,10 +197,11 @@ Leave `triage_status` alone; triage is not the walker's job.
|
|
|
197
197
|
After walking, record your synthesis using the CLI:
|
|
198
198
|
|
|
199
199
|
```bash
|
|
200
|
-
iamu summary <run-id> --worked "What worked
|
|
200
|
+
iamu summary <run-id> --worked "What worked 1" --worked "What worked 2" --question "Question for the team" --setup-note "Doubt about the test setup"
|
|
201
201
|
```
|
|
202
202
|
|
|
203
|
-
- `--worked` —
|
|
204
|
-
- `--question` — Questions that
|
|
203
|
+
- `--worked` — What worked for this persona, one point each: the screen or moment and what it did for them ("The confirmation names who is notified, so I knew I was done"). Include the strengths you recorded and anything else that made the task easier. Usually three to six points.
|
|
204
|
+
- `--question` — Questions for the product team: decisions the walk raised that the product does not settle and that you could not settle as the persona ("Should a reporter see the investigator's checklist at all?", "Is the 14-day notice rule enforced or only advised?"). Not doubts about the test itself.
|
|
205
|
+
- `--setup-note` — Doubts about the test setup, not the product: data that seemed missing or unrealistic, an account that could not see what the situation needs, a date the scenario assumes ("No absences are recorded for summer 2027, so 'nobody is away' may only mean no data"). These go to whoever stages the scenario.
|
|
205
206
|
|
|
206
207
|
Then return your final summary to the orchestrating agent so it can run `iamu complete` and the evaluation stage.
|
|
@@ -125,7 +125,7 @@ Format the visible finding in chat:
|
|
|
125
125
|
```markdown
|
|
126
126
|
### Finding #<N>/<total> [<SEVERITY>] — <title>
|
|
127
127
|
> **Where:** `<Screen title or URL>` (Step <N>) · **Persona:** <Persona Name> (<Role>)
|
|
128
|
-
> **Evidence:**
|
|
128
|
+
> **Evidence:** <project root>/iamu/.runs/<run>/screenshots/step-<N>.png · Cloud: <full https URL from iamu open <run-id> --print>
|
|
129
129
|
|
|
130
130
|
**❌ Problem:**
|
|
131
131
|
<What went wrong on screen and why it hinders the persona (synthesizing ui_fact and consequence in 1–2 clear, direct sentences)>
|
|
@@ -223,15 +223,14 @@ dismissed (not_relevant): <finding-slug>
|
|
|
223
223
|
|
|
224
224
|
If the user is in list-mode iteration (picked "walk through them", "all critical", or a scenario group), loop to step 3 for the next finding in the queue.
|
|
225
225
|
|
|
226
|
-
When all findings in the queue are triaged, present the
|
|
226
|
+
When all findings in the queue are triaged, present what was decided, one row per finding, as a Markdown table (not in a code fence). Every finding in the queue gets a row, so none silently disappears:
|
|
227
227
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
```
|
|
228
|
+
| # | Finding | Decision | Action |
|
|
229
|
+
|---|---|---|---|
|
|
230
|
+
| 1 | <title> | Fix now | <what will change, or "Done" once applied> |
|
|
231
|
+
| 2 | <title> | Direction | `<direction slug>` |
|
|
232
|
+
| 3 | <title> | Defer | Revisit after the next run |
|
|
233
|
+
| 4 | <title> | Dismissed | <reason>; guidance `<slug>` taught to future walks |
|
|
235
234
|
|
|
236
235
|
If `<N> > 0` findings were queued for fix:
|
|
237
236
|
- Prompt the user:
|
|
@@ -273,12 +272,13 @@ Report it in one line: `Synced <N> findings to Iamu Cloud.` If the result has `c
|
|
|
273
272
|
|
|
274
273
|
Then end with the dashboard link from `iamu open --print` (step replay, screenshots side by side, the team's view of the same findings):
|
|
275
274
|
|
|
276
|
-
> ☁️ **Cloud
|
|
275
|
+
> ☁️ **Cloud:** <full https URL from iamu open --print>
|
|
277
276
|
|
|
278
277
|
In linked-no-credentials mode, end with `Decisions are local only — iamu auth login, then iamu sync, to share them.` Skip this section entirely in local-only mode. The terminal surface is complete.
|
|
279
278
|
|
|
280
279
|
## Guidelines
|
|
281
280
|
|
|
281
|
+
- **Links a terminal can open.** Terminals open only what they can see. Write web addresses in full (`https://…`), never hidden behind link text, and files as absolute paths (the project root plus the path), never relative. Name scenarios, personas and findings by slug in backticks; they need no link.
|
|
282
282
|
- **Terminal-complete.** Everything the user needs to triage fits in chat. Citations, recommendations, linked steps, screenshots (as paths the agent can read if it has image support). Dashboard is nice-to-have, not required.
|
|
283
283
|
- **Group by scenario, not by type.** Findings aggregate around scenarios. When reviewing, the context of "what happened in Maria's shift handoff?" matters before deciding on each finding — not seeing all severity:critical across projects.
|
|
284
284
|
- **Severity-sorted within each group.** Within a scenario group, sort CRITICAL → MAJOR → MINOR → OBS. Within the same severity, show hinders/missing/incorrect before helps.
|
|
@@ -253,12 +253,12 @@ For drafts (no persona): omit `--persona`, omit `--body`.
|
|
|
253
253
|
|
|
254
254
|
### 7. Summarize
|
|
255
255
|
|
|
256
|
-
Present the created entities with
|
|
256
|
+
Present the created entities by slug, with the scenario file as an absolute path, and exact run commands:
|
|
257
257
|
|
|
258
258
|
```
|
|
259
|
-
Created Scenario:
|
|
260
|
-
• Situation:
|
|
261
|
-
• Persona:
|
|
259
|
+
Created Scenario: `<scenario-slug>` (<project root>/iamu/scenarios/<scenario-slug>.md)
|
|
260
|
+
• Situation: `<outline-slug>`
|
|
261
|
+
• Persona: `<persona-slug>` (or "draft — no persona bound yet")
|
|
262
262
|
• Capability: <primary_capability>
|
|
263
263
|
|
|
264
264
|
Next step:
|
|
@@ -271,6 +271,7 @@ Run `iamu validate --all` to verify all entities before reporting done.
|
|
|
271
271
|
|
|
272
272
|
## Guidelines
|
|
273
273
|
|
|
274
|
+
- **Links a terminal can open.** Terminals open only what they can see. Write web addresses in full (`https://…`), never hidden behind link text, and files as absolute paths (the project root plus the path), never relative. Name scenarios, personas and findings by slug in backticks; they need no link.
|
|
274
275
|
- **Brainstorm, don't fill forms.** Propose varied seeds. Challenge assumptions. The best scenarios are ones the user hadn't considered.
|
|
275
276
|
- **Problem-space only.** Scenarios describe human situations — never UI, screens, buttons, or features. The walkthrough discovers whether the product supports the situation.
|
|
276
277
|
- **Ground in the domain, not the codebase.** Start from what the persona's week demands. A situation the product cannot support yet is a good scenario: the walk shows the gap with evidence.
|
|
@@ -69,10 +69,10 @@ Present candidates as scannable numbered cards. Do NOT use multi-column markdown
|
|
|
69
69
|
|
|
70
70
|
#### A. When proposing Scenarios:
|
|
71
71
|
|
|
72
|
-
Lead with existing coverage
|
|
72
|
+
Lead with existing coverage by slug, then render the candidates:
|
|
73
73
|
|
|
74
74
|
```
|
|
75
|
-
Existing coverage: <N> scenarios (
|
|
75
|
+
Existing coverage: <N> scenarios (`<slug1>`, ...). Uncovered areas: <gaps>.
|
|
76
76
|
|
|
77
77
|
1. <Short situation name> (<Actor from context>)
|
|
78
78
|
• Capability: <Capability slug, e.g. billing-invoicing>
|
|
@@ -116,10 +116,10 @@ You MUST output the proposed candidates to the chat stream FIRST. In the SAME tu
|
|
|
116
116
|
|
|
117
117
|
#### B. When proposing Personas:
|
|
118
118
|
|
|
119
|
-
Lead with existing persona coverage
|
|
119
|
+
Lead with existing persona coverage by slug and uncovered roles from `context.yml`:
|
|
120
120
|
|
|
121
121
|
```
|
|
122
|
-
Existing personas:
|
|
122
|
+
Existing personas: `<slug1>`, ... Uncovered roles from context.yml: <roles>.
|
|
123
123
|
|
|
124
124
|
1. <Name> (<Actor role>)
|
|
125
125
|
• Friction & Biases: <Specific friction triggers, skepticism, and bounce risks>
|
|
@@ -179,6 +179,7 @@ Ground rules for generation:
|
|
|
179
179
|
|
|
180
180
|
## Guidelines
|
|
181
181
|
|
|
182
|
+
- **Links a terminal can open.** Terminals open only what they can see. Write web addresses in full (`https://…`), never hidden behind link text, and files as absolute paths (the project root plus the path), never relative. Name scenarios, personas and findings by slug in backticks; they need no link.
|
|
182
183
|
- **This skill produces seeds, not finished files.** `iamu-new` handles the full scaffolding. This skill handles the harder upstream question: what and who is worth testing?
|
|
183
184
|
- **Context is load-bearing.** Without project context, you produce the same feature-validation scenarios and generic marketing bios that freeform chat produces. The `context.yml` grounding makes the difference.
|
|
184
185
|
- **Don't pad to 5.** If only 2–3 strong candidates exist, propose 2–3. Padding with weak candidates undermines trust.
|
|
@@ -349,7 +349,7 @@ Findings never name a human test: the walker does not see them. The judge links
|
|
|
349
349
|
**Closing Synthesis:**
|
|
350
350
|
Before finishing the walk, record persona synthesis using `iamu summary`:
|
|
351
351
|
```bash
|
|
352
|
-
iamu summary <run-id> --worked "What worked
|
|
352
|
+
iamu summary <run-id> --worked "What worked 1" --worked "What worked 2" --question "Question for the team" --setup-note "Doubt about the test setup"
|
|
353
353
|
```
|
|
354
354
|
|
|
355
355
|
**Post-walk pipeline (MANDATORY — do NOT skip any step):**
|
|
@@ -443,10 +443,12 @@ The `walker_prompt` from `iamu instructions walk` is the source of truth and con
|
|
|
443
443
|
|
|
444
444
|
### 5. Present assessment — stay in the conversation
|
|
445
445
|
|
|
446
|
-
You MUST output the complete Executive Scorecard to the chat stream FIRST. Build it from `iamu report <scenario-slug> --json`: the first row is this run, and its `summary` holds everything below already assembled (verdict, per-test labels, the since-last-run outcome of each earlier finding, findings with titles, where and recommendations, directions, observations). Do not re-read `canonical.json` or `verdicts.json` yourself. Output rich Markdown, not inside a code fence, so tables render and
|
|
446
|
+
You MUST output the complete Executive Scorecard to the chat stream FIRST. Build it from `iamu report <scenario-slug> --json`: the first row is this run, and its `summary` holds everything below already assembled (verdict, per-test labels, the since-last-run outcome of each earlier finding, findings with titles, where and recommendations, directions, observations). Do not re-read `canonical.json` or `verdicts.json` yourself. Output rich Markdown, not inside a code fence, so tables render. Write addresses and file paths out in full so a terminal can open them:
|
|
447
447
|
|
|
448
448
|
### <summary.persona> · <summary.situation>
|
|
449
|
-
<summary.steps> steps ·
|
|
449
|
+
<summary.steps> steps · Cloud: <cloud_url, the full https address> *(not on the cloud: the row's `report_path`, the absolute path to report.md)*
|
|
450
|
+
|
|
451
|
+
If `summary.checks` is set, say first what this run was checking, in one line: `Re-checked <fixes> fixes waiting for a re-check: <fixed> confirmed fixed, <cameBack> came back, the rest not confirmed`, plus the directions that landed. Name the ones that came back.
|
|
450
452
|
|
|
451
453
|
> **<summary.verdict.question>** **<summary.verdict.label>**
|
|
452
454
|
> <summary.verdict.answer>
|
|
@@ -457,9 +459,11 @@ If `summary.since` is set, show what happened to every earlier finding this run
|
|
|
457
459
|
|
|
458
460
|
**Since the last run** (<date of summary.since.baselineAt>)
|
|
459
461
|
|
|
460
|
-
| Earlier finding | Now |
|
|
461
|
-
|
|
462
|
-
| <title> |
|
|
462
|
+
| Earlier finding | Now | Notes |
|
|
463
|
+
|---|---|---|
|
|
464
|
+
| <title> | **Resolved** / **Persists** / Not seen / Unclear | <item.note, or — > |
|
|
465
|
+
|
|
466
|
+
For a persisting finding, put its qualifiers in brackets: the `shift` ("less severe, major → minor") and "the fix did not hold" when `fixedBefore` is true (it was marked fixed before this run).
|
|
463
467
|
|
|
464
468
|
`+ <summary.since.added> new problems this run.` "Not seen" means the walk did not pass that way: never call it fixed.
|
|
465
469
|
|
|
@@ -483,6 +487,8 @@ Reach is a prediction until those scenarios run again.
|
|
|
483
487
|
|
|
484
488
|
If `summary.observations` is non-empty, end with **Also worth knowing**: one bullet each, `Not walked: <title>` (coverage_gap) or `Risk: <title>` (feature_risk).
|
|
485
489
|
|
|
490
|
+
If `summary.setupNotes` is non-empty, add **Test setup** with one bullet each. These are doubts about the test, not the product (missing data, an account that cannot see enough, a date the scenario assumes). Offer the `iamu-stage` skill to fix the setup before the next run; a finding that rests on a setup doubt may not be real.
|
|
491
|
+
|
|
486
492
|
Do NOT output `### What Worked` paragraphs or lengthy bullet essays. Keep the scorecard scannable: the tables are the summary.
|
|
487
493
|
|
|
488
494
|
**Zero-Friction Triage Transition (Eliminate Meta-Prompt Gate):**
|
|
@@ -514,7 +520,7 @@ When the user asks to review findings one by one:
|
|
|
514
520
|
```markdown
|
|
515
521
|
### Finding #<N>/<total> [<SEVERITY>] — <title>
|
|
516
522
|
> **Where:** `<Screen title or URL>` (Step <N>) · **Persona:** <Persona Name> (<Role>)
|
|
517
|
-
> **Evidence:**
|
|
523
|
+
> **Evidence:** <run_dir>/screenshots/step-<N>.png · Cloud: <full https URL from iamu open <run-id> --print>
|
|
518
524
|
|
|
519
525
|
**❌ Problem:**
|
|
520
526
|
<What went wrong on screen and why it hinders the persona (synthesizing ui_fact and consequence in 1–2 clear, direct sentences)>
|
|
@@ -641,6 +647,7 @@ Run `iamu validate --all` to verify all entities before reporting done. If older
|
|
|
641
647
|
|
|
642
648
|
## Guidelines
|
|
643
649
|
|
|
650
|
+
- **Links a terminal can open.** Terminals open only what they can see. Write web addresses in full (`https://…`), never hidden behind link text, and files as absolute paths (the project root plus the path), never relative. Name scenarios, personas and findings by slug in backticks; they need no link.
|
|
644
651
|
- **Drafts bind in-line, not as a detour.** If the user picks a draft, the persona-bind step should feel like part of running — not a separate invocation.
|
|
645
652
|
- **All generation is local.** All generation — persona suggestions, brief — uses the local LLM directly. No server-side LLM calls.
|
|
646
653
|
- **Scenario vocabulary.** Say "scenario" — never "outline" — when addressing the user.
|
|
@@ -21,9 +21,9 @@ $ARGUMENTS
|
|
|
21
21
|
|
|
22
22
|
Do NOT use `find`, `grep`, or `cat` to dump raw `.md` files in `iamu/`. The CLI outputs clean, validated data.
|
|
23
23
|
|
|
24
|
-
### 2. Format entity responses with an executive tally
|
|
24
|
+
### 2. Format entity responses with an executive tally
|
|
25
25
|
|
|
26
|
-
When the user asks for project status, lead with an executive tally banner, followed by compact 1-line bullet points
|
|
26
|
+
When the user asks for project status, lead with an executive tally banner, followed by compact 1-line bullet points that name entities by slug in backticks. Do not link entity files: a relative path opens nowhere in a terminal. Web addresses are written out in full.
|
|
27
27
|
|
|
28
28
|
**ANTI-BLOAT DIRECTIVE:** Do NOT output multi-column markdown tables (they wrap awkwardly and break borders in terminal viewports). Keep each entity to a single scannable line:
|
|
29
29
|
|
|
@@ -33,17 +33,17 @@ Product Map: <T> Surfaces (<R> Reached · <U> Unreached) [if explore map exis
|
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
**Personas:**
|
|
36
|
-
•
|
|
36
|
+
• `elin-dahl` — Elin Dahl · Architect & first-time house owner in Falun · active
|
|
37
37
|
|
|
38
38
|
**Scenarios:**
|
|
39
|
-
•
|
|
39
|
+
• `replacing-windows` — `elin-dahl` · outline: `measure-and-order` · ready
|
|
40
40
|
|
|
41
41
|
**Findings:**
|
|
42
|
-
• `1` [CRITICAL · hinders] Submit fails opaquely on empty field —
|
|
42
|
+
• `1` [CRITICAL · hinders] Submit fails opaquely on empty field — `<slug>`
|
|
43
43
|
|
|
44
44
|
**Awaiting Verification (Needs a Re-run):**
|
|
45
45
|
If `iamu status` reports fixes awaiting a re-run:
|
|
46
|
-
•
|
|
46
|
+
• `<scenario-slug>` — <N> fixes awaiting verification from a re-run (`iamu-run <scenario-slug>`)
|
|
47
47
|
|
|
48
48
|
**Product Map & Unreached Surfaces:**
|
|
49
49
|
If `iamu status --json` has `explore` data:
|
|
@@ -57,7 +57,7 @@ The directory `iamu/.prompts/` contains internal prompt templates (`persona.md`,
|
|
|
57
57
|
|
|
58
58
|
For a project-status question, add one line on the cloud from `iamu status --json` (`mode`, `sync`, `requests`) and `iamu auth status --json` (`authenticated`):
|
|
59
59
|
|
|
60
|
-
- **Linked** → `Cloud: linked —
|
|
60
|
+
- **Linked** → `Cloud: linked — <full https URL from iamu open --print>`, then only what needs action: unpushed changes (`sync.pending_new` + `sync.pending_updates` + `walkthroughs.pending`, and `sync.local_deletions.count`) → `iamu sync`; `requests.open` above zero → `<N> team requests — iamu-findings`.
|
|
61
61
|
- **Linked, no credentials** → `Cloud: linked, but this machine has no credentials — iamu auth login.`
|
|
62
62
|
- **Local-only** → `Cloud: local-only.` Nothing more; no upgrade pitch.
|
|
63
63
|
|
package/dist/ui/html-report.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CheckOutcome, type RunChecks } from "@iamu-dev/local-store";
|
|
1
2
|
export interface HtmlReportHighlight {
|
|
2
3
|
targetBox: {
|
|
3
4
|
x: number;
|
|
@@ -40,16 +41,31 @@ export interface HtmlReportFinding {
|
|
|
40
41
|
uiFact?: string | null;
|
|
41
42
|
consequence?: string | null;
|
|
42
43
|
recommendation?: string | null;
|
|
44
|
+
/** "/request · step 8" */
|
|
45
|
+
where?: string | null;
|
|
46
|
+
isNew?: boolean;
|
|
47
|
+
persists?: boolean;
|
|
43
48
|
}
|
|
44
49
|
export interface HtmlReportVerdict {
|
|
45
50
|
question: string;
|
|
46
51
|
rating: string;
|
|
47
52
|
reasoning?: string;
|
|
48
53
|
}
|
|
54
|
+
export interface HtmlReportSinceItem {
|
|
55
|
+
title: string;
|
|
56
|
+
note?: string;
|
|
57
|
+
step_ids?: string[];
|
|
58
|
+
fixed_before?: boolean;
|
|
59
|
+
severity_before?: string;
|
|
60
|
+
severity_now?: string;
|
|
61
|
+
}
|
|
49
62
|
export interface HtmlReportVerification {
|
|
50
|
-
resolved:
|
|
51
|
-
persists:
|
|
52
|
-
|
|
63
|
+
resolved: HtmlReportSinceItem[];
|
|
64
|
+
persists: HtmlReportSinceItem[];
|
|
65
|
+
notObserved?: HtmlReportSinceItem[];
|
|
66
|
+
newFindings: Array<{
|
|
67
|
+
type?: string;
|
|
68
|
+
}>;
|
|
53
69
|
}
|
|
54
70
|
export interface HtmlReportData {
|
|
55
71
|
scenarioName: string;
|
|
@@ -67,9 +83,25 @@ export interface HtmlReportData {
|
|
|
67
83
|
steps: HtmlReportStep[];
|
|
68
84
|
findings: HtmlReportFinding[];
|
|
69
85
|
verdicts?: HtmlReportVerdict[];
|
|
86
|
+
/** The run's answer to "would they come back", with one label for all tests. */
|
|
87
|
+
overall?: {
|
|
88
|
+
question: string;
|
|
89
|
+
label: string;
|
|
90
|
+
answer: string | null;
|
|
91
|
+
reasoning: string | null;
|
|
92
|
+
} | null;
|
|
70
93
|
verification?: HtmlReportVerification | null;
|
|
71
94
|
whatWorked?: string[];
|
|
72
95
|
openQuestions?: string[];
|
|
96
|
+
/** The walker's doubts about the test setup. */
|
|
97
|
+
setupNotes?: string[];
|
|
98
|
+
/** What a re-run was sent to check, with this run's outcome for each fix. */
|
|
99
|
+
checks?: {
|
|
100
|
+
fixes: Array<RunChecks["fixes"][number] & {
|
|
101
|
+
outcome: CheckOutcome;
|
|
102
|
+
}>;
|
|
103
|
+
directions: string[];
|
|
104
|
+
} | null;
|
|
73
105
|
}
|
|
74
106
|
export declare function generateHtmlReport(data: HtmlReportData): string;
|
|
75
107
|
/**
|
package/dist/ui/report-view.d.ts
CHANGED
|
@@ -40,6 +40,12 @@ export interface RunView {
|
|
|
40
40
|
items: Array<{
|
|
41
41
|
title: string;
|
|
42
42
|
outcome: SinceOutcome;
|
|
43
|
+
/** Why the matcher judged it so. */
|
|
44
|
+
note: string | null;
|
|
45
|
+
/** Marked addressed before this run: persisting means the fix did not hold. */
|
|
46
|
+
fixedBefore: boolean;
|
|
47
|
+
/** Persists only: "less severe, major → minor" or "worse, …", else "". */
|
|
48
|
+
shift: string;
|
|
43
49
|
}>;
|
|
44
50
|
} | null;
|
|
45
51
|
findings: RunFindingRow[];
|
|
@@ -54,11 +60,26 @@ export interface RunView {
|
|
|
54
60
|
kind: string;
|
|
55
61
|
title: string;
|
|
56
62
|
}>;
|
|
63
|
+
/** The fixes this run re-checked: how many, confirmed fixed, and came back. */
|
|
64
|
+
checks: {
|
|
65
|
+
fixes: number;
|
|
66
|
+
fixed: number;
|
|
67
|
+
cameBack: number;
|
|
68
|
+
directions: string[];
|
|
69
|
+
} | null;
|
|
70
|
+
/** The walker's doubts about the test setup. */
|
|
71
|
+
setupNotes: string[];
|
|
57
72
|
}
|
|
58
73
|
export interface OverviewRun {
|
|
59
74
|
completedAt: string | null;
|
|
60
75
|
label: VerdictLabel;
|
|
61
76
|
problems: number;
|
|
77
|
+
/** Problems by severity: critical, major, minor (minor includes observations). */
|
|
78
|
+
bySeverity: {
|
|
79
|
+
critical: number;
|
|
80
|
+
major: number;
|
|
81
|
+
minor: number;
|
|
82
|
+
};
|
|
62
83
|
resolved: number;
|
|
63
84
|
persists: number;
|
|
64
85
|
added: number;
|