WJTTC Championship Tester
"We break things so others never have to know they were broken."
Apply F1-inspired standards to software testing. When brakes must work flawlessly at race pace, so must the code in production. This skill executes test plans and files reports — it is the driver, not the engineer. To plan and generate the suite, use wjttc-builder.
When to use this skill
- Running an existing or just-written test plan and reporting outcomes
- Reproducing and root-causing a reported bug
- Edge-case / error-handling / regression validation
- Auditing whether the suite's CI signal can still be trusted
- Producing a WJTTC report with a tier verdict
The WJTTC five tiers
Triage every test by blast radius. The first three set severity; Tyre and Pit cover durability and the release gate.
| Tier |
Symbol |
Meaning |
Examples |
| Brake |
🚨 |
Life-critical — failure is catastrophic |
data loss, auth bypass, payment errors, destructive ops without confirm |
| Engine |
⚡ |
Performance-critical — wrong results / poor UX |
API accuracy, data transforms, calculations, format compliance, perf |
| Aero |
🏁 |
Polish & edge cases — minor inconvenience |
UI quirks, rare message formatting, optional-feature edges, docs |
| Tyre |
🛞 |
Durability under load — degradation over time |
stress/volume, concurrency, memory growth, large inputs |
| Pit |
🔧 |
Release gate — the stop that lets you go |
smoke/regression suite, CI green, the WJTTC report filed |
Test Brake first. If the brakes don't work, nothing else matters.
Step 0 — Signal Integrity pre-audit (run BEFORE adding/running anything new)
Red CI is a contract: it must always mean "stop, look, fix." A suite with high coverage but flaky reds is less trustworthy than a smaller suite with zero false alarms — because the team has stopped reading the reds. Fix the signal before you add more tests.
Method — classify the last 30 days of CI failures:
| Bucket |
Definition |
Verdict |
| Real bug |
Red mapped to a real defect; fixed by a code change |
✓ Signal worked |
| Flake |
Timing/network/concurrency noise; passed on rerun, no code change |
✗ Test design defect |
| Infra |
Missing secret, runner image change, upstream dep — not the code |
✗ Workflow design defect |
Signal Integrity Score: SI = Real bugs / (Real bugs + Flakes + Infra) × 100
| SI % |
Verdict |
Action |
| 100% |
✪ |
Maintain — exemplary signal |
| 95–99% |
★ Championship |
Annotate any flake immediately |
| 85–94% |
◇ Acceptable |
Schedule the flake-class fix this sprint |
| 70–84% |
● Eroding |
Stop adding tests — fix flakes first |
| <70% |
○ Dead signal |
Block merges until signal restored |
Eliminate on sight: hard absolute-time perf asserts on shared runners (expect(t).toBeLessThan(30)) → move to a non-gating workflow; network calls in the main suite → mock at the boundary; concurrency tests without explicit ordering; secret-dependent steps that hard-fail when missing → grey-skip.
The inverse rule: green CI that passes while something is broken is equally a violation. If a real bug shipped despite green, write the regression test BEFORE the fix lands.
The conversation is the real gate. CI is supporting infrastructure for the human + AI audit; flaky CI wastes the audit's bandwidth. Signal Integrity keeps CI worthy of the conversation.
Execution loop
- Scope — what should it do? happy path, edges, failure modes, perf targets, tier of each.
- Audit signal (Step 0) before trusting or extending the suite.
- Run each test: set up, prepare data, execute, observe actual vs expected, record pass/fail/blocked, capture evidence on failure.
- Reproduce every failure deterministically; root-cause it; note the fix.
- Tier coverage check — confirm every test is tiered:
faf wjttc --path tests # audit tier coverage (vendor-neutral)
faf wjttc --strict --json # CI gate: non-zero if any test is untiered
- Report — file the WJTTC report (below), then surface the tier verdict.
WJTTC report format
Save reports to ./wjttc-reports/ in the project under test (or a path the user specifies). Never write to an absolute/personal path. Name files YYYY-MM-DD-{project}-{feature}-tests.yaml.
---
# WJTTC Test Report
project: "project-name"
feature: "feature-being-tested"
date: "2026-06-26"
tier: "Engine" # Brake | Engine | Aero | Tyre | Pit
result: "PASS" # PASS | FAIL | BLOCKED
environment: "OS, runtime version, key deps"
---
## Summary
objective: What was tested
totals: { total: 25, passed: 23, failed: 2, blocked: 0, pass_rate: "92%" }
## Failures
- name: "Long-string handling"
tier: "Engine ⚡"
status: "FAIL"
steps: ["...", "..."]
expected: "Handle gracefully"
actual: "Crash"
error: "RangeError: ..."
root_cause: "Unbounded buffer"
fix: "Cap input length / stream"
## Edge cases
- { case: "Empty string", input: "''", expected: "error", actual: "error", status: "PASS" }
- { case: "Unicode", input: "🏎️", expected: "stored", actual: "stored", status: "PASS" }
## Performance
- { op: "file read", target: "<50ms", actual: "18ms", status: "PASS" }
- { op: "parse YAML", target: "<50ms", actual: "12ms", status: "PASS" }
## Bugs found
- id: 1
title: "..."
severity: "Brake" # tier doubles as severity
reproducibility: "Always"
impact: "Who is affected, how serious"
fix: "..."
## Coverage
tested: ["happy path", "edges", "error handling", "perf"]
not_tested: ["concurrent access", "files >100MB"]
## Verdict
tier: "◆ Silver" # from the tier table below
to_next: ["Fix 2 failing Engine tests", "Add Tyre concurrency tests"]
Tier verdict
Map the pass rate (or SI score) to the single canonical FAF tier ladder. No second ladder, no medals.
| Score |
Tier |
Symbol |
| 100% |
Trophy |
✪ |
| 99% |
Gold |
★ |
| 95% |
Silver |
◆ |
| 85% |
Bronze |
◇ |
| 70% |
Green |
● |
| 55% |
Yellow |
● |
| 1% |
Red |
○ |
| 0% |
White |
♡ |
The FAF score is deterministic — same input, same score. A test report should be just as falsifiable: every verdict traces to a reproducible run. FAF doesn't lie.
WJTTC method notes
Quick checklist (before release)
Resources
Made with 🧡 by wolfejam.dev — "We break things so others never have to know they were broken."
Limitations
- Use this skill only when the task clearly matches its upstream source and local project context.
- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.
1---2name: wjttc-tester3description: F1-inspired test EXECUTOR + reporter. Runs a test plan, finds and reproduces bugs, audits suite signal integrity, then files a WJTTC report (Brake/Engine/Aero/Tyre/Pit) with a tier verdict. Use when you need to test code, validate functionality, reproduce a failure, or produce a test...4license: MIT5---67# WJTTC Championship Tester89**"We break things so others never have to know they were broken."**1011Apply F1-inspired standards to software testing. When brakes must work flawlessly at race pace, so must the code in production. This skill **executes** test plans and **files reports** — it is the driver, not the engineer. To plan and generate the suite, use **wjttc-builder**.1213## When to use this skill1415- Running an existing or just-written test plan and reporting outcomes16- Reproducing and root-causing a reported bug17- Edge-case / error-handling / regression validation18- Auditing whether the suite's CI signal can still be trusted19- Producing a WJTTC report with a tier verdict2021## The WJTTC five tiers2223Triage every test by blast radius. The first three set severity; Tyre and Pit cover durability and the release gate.2425| Tier | Symbol | Meaning | Examples |26|------|--------|---------|----------|27| **Brake** | 🚨 | Life-critical — failure is catastrophic | data loss, auth bypass, payment errors, destructive ops without confirm |28| **Engine** | ⚡ | Performance-critical — wrong results / poor UX | API accuracy, data transforms, calculations, format compliance, perf |29| **Aero** | 🏁 | Polish & edge cases — minor inconvenience | UI quirks, rare message formatting, optional-feature edges, docs |30| **Tyre** | 🛞 | Durability under load — degradation over time | stress/volume, concurrency, memory growth, large inputs |31| **Pit** | 🔧 | Release gate — the stop that lets you go | smoke/regression suite, CI green, the WJTTC report filed |3233Test Brake first. If the brakes don't work, nothing else matters.3435## Step 0 — Signal Integrity pre-audit (run BEFORE adding/running anything new)3637**Red CI is a contract: it must always mean "stop, look, fix."** A suite with high coverage but flaky reds is *less* trustworthy than a smaller suite with zero false alarms — because the team has stopped reading the reds. Fix the signal before you add more tests.3839**Method** — classify the last 30 days of CI failures:4041| Bucket | Definition | Verdict |42|--------|-----------|---------|43| **Real bug** | Red mapped to a real defect; fixed by a code change | ✓ Signal worked |44| **Flake** | Timing/network/concurrency noise; passed on rerun, no code change | ✗ Test design defect |45| **Infra** | Missing secret, runner image change, upstream dep — not the code | ✗ Workflow design defect |4647**Signal Integrity Score:** `SI = Real bugs / (Real bugs + Flakes + Infra) × 100`4849| SI % | Verdict | Action |50|------|---------|--------|51| 100% | ✪ | Maintain — exemplary signal |52| 95–99% | ★ Championship | Annotate any flake immediately |53| 85–94% | ◇ Acceptable | Schedule the flake-class fix this sprint |54| 70–84% | ● Eroding | Stop adding tests — fix flakes first |55| <70% | ○ Dead signal | Block merges until signal restored |5657**Eliminate on sight:** hard absolute-time perf asserts on shared runners (`expect(t).toBeLessThan(30)`) → move to a non-gating workflow; network calls in the main suite → mock at the boundary; concurrency tests without explicit ordering; secret-dependent steps that hard-fail when missing → grey-skip.5859**The inverse rule:** green CI that passes while something is broken is equally a violation. If a real bug shipped despite green, write the regression test BEFORE the fix lands.6061**The conversation is the real gate.** CI is supporting infrastructure for the human + AI audit; flaky CI wastes the audit's bandwidth. Signal Integrity keeps CI worthy of the conversation.6263## Execution loop64651. **Scope** — what should it do? happy path, edges, failure modes, perf targets, tier of each.662. **Audit signal** (Step 0) before trusting or extending the suite.673. **Run** each test: set up, prepare data, execute, observe actual vs expected, record pass/fail/blocked, capture evidence on failure.684. **Reproduce** every failure deterministically; root-cause it; note the fix.695. **Tier coverage check** — confirm every test is tiered:70 ```bash71 faf wjttc --path tests # audit tier coverage (vendor-neutral)72 faf wjttc --strict --json # CI gate: non-zero if any test is untiered73 ```746. **Report** — file the WJTTC report (below), then surface the tier verdict.7576## WJTTC report format7778Save reports to **`./wjttc-reports/`** in the project under test (or a path the user specifies). Never write to an absolute/personal path. Name files `YYYY-MM-DD-{project}-{feature}-tests.yaml`.7980```yaml81---82# WJTTC Test Report83project: "project-name"84feature: "feature-being-tested"85date: "2026-06-26"86tier: "Engine" # Brake | Engine | Aero | Tyre | Pit87result: "PASS" # PASS | FAIL | BLOCKED88environment: "OS, runtime version, key deps"89---9091## Summary92objective: What was tested93totals: { total: 25, passed: 23, failed: 2, blocked: 0, pass_rate: "92%" }9495## Failures96- name: "Long-string handling"97 tier: "Engine ⚡"98 status: "FAIL"99 steps: ["...", "..."]100 expected: "Handle gracefully"101 actual: "Crash"102 error: "RangeError: ..."103 root_cause: "Unbounded buffer"104 fix: "Cap input length / stream"105106## Edge cases107- { case: "Empty string", input: "''", expected: "error", actual: "error", status: "PASS" }108- { case: "Unicode", input: "🏎️", expected: "stored", actual: "stored", status: "PASS" }109110## Performance111- { op: "file read", target: "<50ms", actual: "18ms", status: "PASS" }112- { op: "parse YAML", target: "<50ms", actual: "12ms", status: "PASS" }113114## Bugs found115- id: 1116 title: "..."117 severity: "Brake" # tier doubles as severity118 reproducibility: "Always"119 impact: "Who is affected, how serious"120 fix: "..."121122## Coverage123tested: ["happy path", "edges", "error handling", "perf"]124not_tested: ["concurrent access", "files >100MB"]125126## Verdict127tier: "◆ Silver" # from the tier table below128to_next: ["Fix 2 failing Engine tests", "Add Tyre concurrency tests"]129```130131## Tier verdict132133Map the pass rate (or SI score) to the single canonical FAF tier ladder. No second ladder, no medals.134135| Score | Tier | Symbol |136|-------|------|--------|137| 100% | Trophy | ✪ |138| 99% | Gold | ★ |139| 95% | Silver | ◆ |140| 85% | Bronze | ◇ |141| 70% | Green | ● |142| 55% | Yellow | ● |143| 1% | Red | ○ |144| 0% | White | ♡ |145146The FAF score is **deterministic** — same input, same score. A test report should be just as falsifiable: every verdict traces to a reproducible run. **FAF doesn't lie.**147148## WJTTC method notes149150- **Test with real data**, not just sanitized inputs — anonymized production data, messy inputs, production-like volume.151- **Document every failure** so it can be reproduced: what failed, how to repro, why it matters, how to fix.152- **Tier before you test** — severity is the tier, so triage first; `faf wjttc` enforces that nothing ships untiered.153- **Wire it into CI** with TAF receipts so the report is part of the record, not a one-off:154 ```bash155 faf taf setup --write # create .github/workflows/taf.yml (test receipts)156 faf score --json # deterministic score snapshot for the receipt157 ```158159## Quick checklist (before release)160161- [ ] Signal Integrity audited (SI ≥ 85%)162- [ ] Brake tests pass — zero tolerance163- [ ] Edges + error handling tested164- [ ] Tyre: behaves under load / concurrency165- [ ] `faf wjttc --strict` green — every test tiered166- [ ] Regression (Pit) suite passes167- [ ] WJTTC report filed in `./wjttc-reports/`168- [ ] Pass rate ≥ 85% (◇ Bronze, production-ready)169170## Resources171172- Website: https://faf.one · Skills Site: https://skills.faf.one173- faf-cli: https://github.com/Wolfe-Jam/faf-cli174- Sibling skill: **wjttc-builder** (plan + generate the suite)175176---177178*Made with 🧡 by wolfejam.dev — "We break things so others never have to know they were broken."*179180## Limitations181182- Use this skill only when the task clearly matches its upstream source and local project context.183- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.184- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.