lesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the roomlesson 1 of 4 · the spec is the build — tickets an ai can execute without you in the roomthe spec is the build — tickets an ai can execute without you in the room
Checkpoint
One last thing before we move on. pass this to mark the lesson done, or skip and keep moving. hop to the next when you're ready.
Checkpoint: the triage router — every ticket lands in one of three lanes before a builder touches it.
Write route_ticket(spec) returning (lane, reasons):
- Lint first. Run the lesson's lint rules (owner → acceptance →
vague words → scope fence, same reason strings as the last step).
Any reasons → lane
"spec-first", with those reasons. - Then the frontier. If the spec's
ground_truthfield is missing or falsy — no checkable way to verify the output — lane is"pair-review", reasons[]. - Otherwise lane is
"delegate", reasons[].
Four tickets run. Expected output:
DS-501: delegate
DS-502: spec-first — A1 vague: robust
DS-503: pair-review
DS-504: spec-first — no owner