Problem
The fleet's e2e verification is local-only (playwright skill drives a live browser from a
session); no CI lane runs end-to-end verification, so the self-verification loop the 1→2
transition depends on stops at tests + build + lint in CI.
Boris's step-2 guardrail names this verbatim: "Claude powered end-to-end verification (eg.
using the Claude Chrome extension or iOS/Android simulator MCP)".
Fix shape
Wire an e2e lane into ci-workflows (reusable workflow), consumed by repos that declare an e2e
surface; keep the local playwright path as the interactive instance of the same discipline.
Scope, runner class, and cost posture per the existing runner-policy component.
Source
1→2 residue item from the AI-adoption-ladder gap map; #239 directed "file via /work-items" —
this files it.
Reference: Boris Cherny, "Steps of AI Adoption" (Google Doc)
Problem
The fleet's e2e verification is local-only (playwright skill drives a live browser from a
session); no CI lane runs end-to-end verification, so the self-verification loop the 1→2
transition depends on stops at tests + build + lint in CI.
Boris's step-2 guardrail names this verbatim: "Claude powered end-to-end verification (eg.
using the Claude Chrome extension or iOS/Android simulator MCP)".
Fix shape
Wire an e2e lane into ci-workflows (reusable workflow), consumed by repos that declare an e2e
surface; keep the local playwright path as the interactive instance of the same discipline.
Scope, runner class, and cost posture per the existing runner-policy component.
Source
1→2 residue item from the AI-adoption-ladder gap map; #239 directed "file via /work-items" —
this files it.
Reference: Boris Cherny, "Steps of AI Adoption" (Google Doc)