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-4145Blocked

(motir-core) Verify on a REAL merge burst that no `Acceptance video` main baseline is evicted — the post-merge half of MOTIR-4095

Repo · motir-core. NO pull request — this card's deliverable is a MEASUREMENT recorded as a comment.

This is acceptance criterion 3 of MOTIR-4095, cut from that card and re-homed because it cannot be discharged there. MOTIR-4095 groups the Acceptance video lane's push: main runs per COMMIT so a merge burst stops evicting the queued baseline. A workflow's concurrency.group expression is read from the workflow file at the pushed commit, so the fix is only exercised by merges that land after MOTIR-4095's own pull request. MOTIR-4095 goes done on that merge; this card outlives it.

⚠️ Do not start this the moment it turns ready

blocked_by MOTIR-4095 discharges at MOTIR-4095's merge, which is the earliest moment this measurement is least possible — the burst has not happened yet. The earliest legal start is the first time main has taken ≥3 merges after MOTIR-4095's own merge commit. Check that first (step 1); if it has not happened, say so and leave the card open. A run that reports "no evictions" over a window containing no burst has measured nothing.

What to do

  1. Find MOTIR-4095's merge commit and confirm the burst exists — main has taken at least three merges after it, with at least two of them less than the lane's run duration apart (~13 min), which is what puts a run in the pending state at all:
    gh api "repos/moooon-B-V/motir-core/commits?sha=main&per_page=40" \
      --jq '.[] | [.sha[0:8], .commit.committer.date, (.commit.message | split("\n")[0])] | @tsv'
    
  2. Read every push: main run of the lane in that window, from the platform — not from a green check, not from the branch:
    gh api "repos/moooon-B-V/motir-core/actions/workflows/acceptance-video.yml/runs?branch=main&event=push&per_page=100" \
      --jq '.workflow_runs[] | [.id, .head_sha[0:8], (.conclusion // .status), .created_at, .updated_at] | @tsv'
    
  3. Per merge sha in the burst, assert two things: a run EXISTS for it, and that run has at least the Does the lane hold a spec? job —
    gh api "repos/moooon-B-V/motir-core/actions/runs/<id>/jobs" --jq '[.total_count, ([.jobs[].name] | join(","))] | @tsv'
    
    total_count: 0 is the eviction signature: a run cancelled while still pending never started a job.
  4. Record the result as an add_comment on THIS card AND on MOTIR-4095 — the run ids, the shas, the job counts, and the burst window. MOTIR-4095 is where the defect is described and where a reader will look for the proof.

Acceptance criteria

  1. A burst of ≥3 back-to-back merges to main, all after MOTIR-4095's merge commit, is identified by sha and timestamp — or, if none has occurred yet, the card is left OPEN with that stated, and nothing is reported as verified.
  2. For every merge sha in that burst, an Acceptance video push run exists, read back from /actions/workflows/acceptance-video.yml/runs.
  3. No run in the window is cancelled with total_count: 0 jobs — the eviction signature. Any that is, is reported as the fix NOT holding, with its id.
  4. Every run in the window carries at least the Does the lane hold a spec? job.
  5. The run ids, shas, job counts and burst window are recorded in an add_comment on this card and on MOTIR-4095, with the commands that produced them.

Context refs

  • .github/workflows/acceptance-video.yml — the concurrency: block MOTIR-4095 changed, and its header, which carries the pre-fix measurement.
  • MOTIR-4095 — the defect, the mechanism, and the pre-fix numbers this is measured against.
  • ⚠️ MOTIR-4096 renames this lane and moves the workflow file. If it has landed first, the workflow path and the run's name will have changed — read the current file rather than assuming acceptance-video.yml.