Dogfood iterations
Tracker: docs/evidence/dogfood/dogfood_web_eval.yaml
Rubric: docs/superpowers/evals/tool_quality_rubric.yaml
Overview: docs/superpowers/evals/README.md
Pass threshold
≥80/100 weighted; ship at ≥90 or accepted pass_with_warnings.
| Dimension | Weight |
|---|---|
| connectivity | 20 |
| schema_validity | 10 |
| handler_correctness | 20 |
| capture_quality | 10 |
| visual_fidelity | 10 |
| webmcp_parity | 10 |
| intentcall_authoring | 10 |
| docs_truth | 10 |
Iteration workflow
Task Progress:
- [ ] Start app (web-showcase or make showcase)
- [ ] Fresh WS_URI from log (not stale after hot reload)
- [ ] Run battery
- [ ] Record score + warnings in tracker
- [ ] Promote recurring patterns if repeated ≥2 times
Web iteration
make web-showcase
export WS_URI="$(grep -Eo 'ws://127\.0\.0\.1:[0-9]+/[A-Za-z0-9_=-]+/ws' .showcase/web_app.log | tail -1)"
bash tool/evals/run_dogfood_eval.sh --ws-uri "$WS_URI" --merge --skip-visual # yq or dart fallback
# or without merge:
bash tool/evals/run_dogfood_eval.sh --ws-uri "$WS_URI"
Auto-runs: static gates + validate-runtime + webmcp verify.
Static only (CI / PR)
make dogfood-eval-static
Makefile
make dogfood-eval # needs WS_URI in env
make dogfood-eval-static
Artifacts
- Per run:
.showcase/eval_runs/<timestamp>/eval_run.yaml - Snapshot:
.showcase/eval_run_<timestamp>.yaml - With
--merge: updatesdocs/evidence/dogfood/dogfood_web_eval.yaml(yqordart run mcp_server_dart/tool/merge_dogfood_tracker.dart)
Verdicts
| Verdict | Meaning |
|---|---|
pass |
score ≥80, no blocking warnings |
pass_with_warnings |
score ≥80, e.g. visual_capture_truth_mode |
fail |
score <80 |
blocked_no_runtime |
--skip-runtime only |
Exec vs MCP names
Document in iteration notes when testing invoke:
- exec: bare names (
get_recent_logs,dogfood_ping) — also acceptsfmt_*aliases - MCP:
fmt_prefix (fmt_get_recent_logs,fmt_client_tool+ listingname) - Connection: global
--vm-service-uri(notexec --target)
dart run mcp_server_dart/bin/flutter_mcp_toolkit.dart \
--vm-service-uri "$WS_URI" exec --name get_recent_logs --args '{}'
Chrome battery notes
- Skip heavy visual harness unless
HARNESS_ROOTpoints atflutter_harness: add--skip-visual validate-runtime --save-imagescan hang >5m on Chrome; battery omits it unlessDOGFOOD_SAVE_IMAGES=1
CI (branch)
.github/workflows/intentcall_eval.yml — PR: dogfood-eval-static; weekly/main: intentcall package tests + static.
Full Chrome runtime dogfood stays local until headless WebMCP is cost-effective.
After each iteration
- Diff
dimension_scoresvs previous iteration in tracker. - Add to
recurring_warnings/recurring_errorswhen repeated. - Update
fix_recommendationswith actionable doc/code deltas. - Do not treat tracker YAML as gate without a fresh battery run.
Related skills
flutter-mcp-toolkit-maintain-web— WebMCP launch + verifyflutter-mcp-toolkit-maintain-macos— macOS showcaseflutter-mcp-toolkit-repo-maintainer—make sync-skillsafter editing this skill