KeiSeiKit-1.0/skills/test-matrix/phase-2-matrix.md
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

80 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase 2 — Select the test-type × language matrix
Goal: turn `CRITICAL` + `LANGS` into the minimum set of `(test-type, language)`
cells to scaffold. Fewer cells, done well, beats many cells half-wired.
## 2a — Preview auto-recommendation
Apply these rules and emit a preview table in chat (markdown):
| Critical path | Recommended test types |
|---|---|
| Auth / crypto | fuzz + property |
| Payment | property + e2e + mutation |
| Data integrity | property + e2e |
| Performance SLO | load |
| Untrusted parsing | fuzz + property |
| User-facing UI | e2e |
Cross-product with `LANGS` → tentative `MATRIX_RECO`. Example output in chat:
```
Recommended cells (from CRITICAL × LANGS):
[1] fuzz × Rust — rationale: untrusted-parsing + Rust → cargo-fuzz
[2] property × Rust — rationale: data-integrity + Rust → proptest
[3] e2e × TS — rationale: user-facing UI → Playwright
[4] load × Rust — rationale: <100ms SLO → oha + k6
[5] mutation × Rust — rationale: payment → cargo-mutants for suite quality
```
Number each cell for the multi-select.
## 2b — Confirm / edit matrix (AskUserQuestion multi-select)
```json
{
"questions": [
{
"question": "Which cells to scaffold this session?",
"header": "Matrix",
"multiSelect": true,
"options": [
{"label": "[1] fuzz × <lang>", "description": "Generate fuzz target + seed corpus + CI nightly job"},
{"label": "[2] property × <lang>", "description": "Add property-test dependency + sample invariant test + regression cache"},
{"label": "[3] e2e × <lang>", "description": "Scaffold Playwright project + 1 page-object example + trace viewer"},
{"label": "[4] load × <lang>", "description": "k6/oha script + SLO thresholds + profile-loop runbook"},
{"label": "[5] mutation × <lang>", "description": "mutmut/cargo-mutants/StrykerJS config + baseline mutation score"},
{"label": "Add a custom cell", "description": "Free-text — e.g. contract tests, chaos tests, visual regression"},
{"label": "Skip a reco", "description": "Drop one of the recommended cells — free-text reason"}
]
}
]
}
```
Options are GENERATED dynamically — one per `MATRIX_RECO` cell PLUS the two
catch-alls (`Add custom`, `Skip`). Substitute `<lang>` literally.
On `Add a custom cell` → single free-text line → regenerate preview →
re-ask. On `Skip a reco` → free-text reason (logged in final report) →
regenerate → re-ask.
## 2c — Budget check (soft cap)
If the final `MATRIX` has > 6 cells, emit a WARNING message (NOT
AskUserQuestion):
> WARNING: <N> cells selected. Scaffolding + CI wiring for each is ~30 min
> of human review per cell. Consider splitting into two sessions (critical
> cells now, rest next week). Continue? Reply "yes" or re-run Phase 2.
Store the final `MATRIX` as a list of `{type, lang, rationale}` objects.
## Verify-criterion
- `MATRIX` has ≥ 1 cell. Zero cells means nothing to do → stop with a
message pointing at `/test-gen`.
- Every cell's `type` ∈ {fuzz, property, e2e, load, mutation, custom}.
- Every cell's `lang``LANGS` (no phantom language).
- User explicitly confirmed the final matrix (not just auto-reco) — the
multi-select click counts as the confirmation.