Quality loops

EDD and wk wrap the work. Feature PDLC and Learn sit inside that loop. TDD is the inner bar of a planned change. After ship, Learn takes what the world found and feeds the next session:

  • Evals prove tool routing in CI (EDD guide, alpha).
  • Quality loops turn CI, RUM, Lighthouse and Sonar into typed Linear tickets, then draft PRs. No extra specialist.

The playbook agents follow is quality loops through Linear. This page is the map: the bar versus the loops, what counts as an outside source, and what does not.

The bar versus the loops

LayerInside a planned changeAfter ship, from outside
JobKeep the barMake the next session smarter
What you runOne failing test, then the smallest change. XFN on UI, auth and SLOs. Hexagonal boundaries. wk check before COMPLETE.A miss becomes a failing eval. Red checks, RUM, Lighthouse and Sonar file Linear. The work picker plays allowlisted tickets as draft PRs.
Who owns itFeature lifecycleThis page, then the SOP

EDD is alpha: routing contracts, not a full eval product. The suite and wk wrap the PDLC and Learn. When the change is a prompt or a tool schema, the inner bar is an eval case.

Nested loops

Learn starts outside a planned feature: a red required check, a RUM break, a Lighthouse drop versus last main, a Sonar finding, or an eval miss. Those sessions still run inside the EDD / wk loop.

Outside sources

These are inbound. They are not another phase chip on the PDLC.

SourceFiles asWhat it is not
Failed required checkBugA PR in the filing session
Cloudflare RUM / beacon breakBug on the owning repoSite tokens. Hostnames only.
Lighthouse drop vs last mainPerformanceA ticket to chase 100
Sonar BUG / vuln / smellBug / Security / ImprovementNOSONAR to silence a kit skip
PostHog errorBug after restore defaultFunnel or bet rows. Those stay on product signal intake.
Dependabot / CodeQLStay on the vendor PRA lockfile rewrite "to be helpful"
Scheduled scoutOne typed ticket, evidence, no PREvery source collaged into one session

gpio-build-monitor may ingest alerts. It does not write product code.

Fingerprint tickets (source:repo:stable-id; RUM source:<owning-repo>:rum:<hostname>). Comment on an open match. Do not clone.

Three sessions, one loop

  1. File. One Automation per source. Cloud sessions only see MCP servers on the Cursor dashboard; wk mcp --install rewrites local host files only. Missing dashboard tools → stop BLOCKED. Restore wk mcp default before Linear create. Do not invent site tags, tokens or Linear URLs. Operator CLI: wk loops status / wk loops setup --write (catalog in lists/quality-loop-automations.yaml; Cursor has no Automations create API).
  2. Hygiene. Same fingerprint or near-duplicate title+body: one stays playable. Rewrite Backlog/Todo that is missing Story, Work type or an observable Then. Leave Done/Canceled. Skip gated PostHog bets. Unsure: comment and leave. No PRs in hygiene.
  3. Play. The work picker reads the allowlist. Claim one Backlog or Todo in auto_play (or with auto-work, without hold). Bug → agent-debug. Security → agent-security. Performance → agent-perf-opt. Improvement → a write role. Draft PR only. Never merge, force-push, skip hooks or hide a CI failure. Before COMPLETE run the repo pre-commit hook, not a path-filtered test.

Evals versus quality loops

LoopJobGate
EDD (alpha)Prompt, tool schema or routing changewk eval ci --threshold-routing 95. A miss becomes a failing case.
Quality loopsCI, RUM, Lighthouse, Sonar and scoutTyped Linear ticket, then an allowlisted draft PR

A green eval CI run is routing, not proof that the live agent is correct. Details: EDD guide.

What this is not

  • A new agent-quality-loops skill. Orchestrator routes to the SOP.
  • Auto-merge, or one Automation that watches every source.
  • Auto-filing PostHog funnel or bet rows.
  • Hiding a red required check behind a ticket.

Kill the loop if it hides a CI failure or duplicates outpace hygiene.

Operator CLI

wk loops status .
wk loops setup --write
wk help loops

status prints the catalog (one Automation per source), the dashboard MCP checklist, and recorded UUIDs from .cursor/waykit-loops/overlay.yaml. setup --write fills .cursor/waykit-loops/ (never overwrites): per-loop prompts, AUTOMATE.md for Cursor /automate, and the overlay. Cursor has no Automations create or list API; the pack is the kit on disk. Connect GitHub, Linear, PostHog, Cloudflare Observability, and SonarQube on cursor.com/agents.

Markdown source