Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Work items

MOTIR-3128Done

CI infra flake, 7 legs in one day across 3 PRs: MOTIR-2970 bounded `install-deps` but left the apt dependency — the durable fix is to stop using apt

Repo · motir-core (the pin is still refused on this tenant — see MOTIR-3078 / MOTIR-3086).

This is the re-shape card for MOTIR-2970's family, not a new defect. That card is done and its fix works exactly as designed. The class recurred anyway, seven times in one day.

What happens

##[warning]playwright install-deps attempt 1 TIMED OUT after 300s; clearing the apt it orphaned, retrying in 15s
##[warning]playwright install-deps attempt 2 TIMED OUT after 300s…
##[warning]playwright install-deps attempt 3 TIMED OUT after 300s…
##[error]playwright install-deps failed after 3 attempts

Step list, every time:

failure  Run ./.github/actions/e2e-setup
skipped  Run E2E (<leg>)

Zero tests execute. The leg burns ~17m40s (3 × 300 s + setup) and reports red on a diff it never touched.

Today's count — 2026-08-19

PRlegs
#2151bulk-2, bulk-5, collab-at-scale
#2155board-at-scale
#2156a11y-2, bulk-4, collab-at-scale

Seven, across three unrelated PRs, in one afternoon. Earlier occurrences on #2154, #2148, and on main itself, where it blocked the Fly deploy.

Why the two shipped mitigations cannot close it

Both are already in the repo and must not be proposed again:

  • MOTIR-1679 removed the packages.microsoft.com apt source.
  • MOTIR-2970 wrapped each attempt in timeout 300s --kill-after=30s, turning a 6-hour job-budget wedge into a 15-minute failure.

Together they bounded the blast radius; neither removed the dependency on apt. What wedges now is the Ubuntu archive inside the apt-get update that playwright install-deps shells out to, and no retry count fixes an unavailable mirror. A third retry, a longer timeout or a different mirror list are all the same move again.

The options — this needs a decision, not a patch

Both change how every PR's E2E legs run, which is why this is a card and not a drive-by.

  • (a) Run the legs in mcr.microsoft.com/playwright:v<ver>-noble. The browser dependencies ship in the image, so install-deps is not called at all and there is no apt step to wedge. Costs: the container image must track the Playwright version pinned in package.json (a drift guard is cheap and this repo likes them), and anything the legs currently get from the runner image has to be checked against the container.
  • (b) Skip install-deps on a browser-cache hit. Smaller change, keeps the runner image, and removes the apt call on the common path only — a cache miss still wedges. Cheaper to land, does not close the class.

(a) closes it; (b) narrows it. Recommend (a), with the version pin asserted rather than commented.

Acceptance criteria

  • No E2E leg invokes playwright install-deps on the common path — asserted by a guard over .github/, not by reading the workflow once.
  • The Playwright version the legs run under is pinned to package.json's and a mismatch fails the build.
  • One full CI run green with the new lane, and the per-leg wall-clock recorded on this card before/after (the current legs are 5–18 min; a container start should not make that worse).
  • docs/ (or the workflow's own header) states which mitigation is in force, so the next person does not re-propose MOTIR-1679's or MOTIR-2970's.

Context refs

  • .github/actions/e2e-setup/action.yml — the retry loop MOTIR-2970 added.
  • .github/workflows/ci.yml — the E2E matrix and its runs-on.
  • MOTIR-2970 (the timeout), MOTIR-1679 (the apt source) — the two fixes this supersedes rather than repeats.