You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CI: run the required checks on merge_group, so the merge queue on main can land PRs #171
The workflows that produce the checks never run in the queue:
lint-typecheck.yml (job name Lint & Type Check) triggers on pull_request, push and workflow_dispatch, and not on merge_group.
ci.yml (job name Code Quality) triggers on pull_request and push, and not on merge_group.
So a queued PR waits for a required check that never reports. After 60 minutes the queue removes it, and nothing can merge.
Ask
Add merge_group: to the on: block of lint-typecheck.yml and ci.yml.
Keep every existing trigger and every job name unchanged. The required-check context must stay Lint & Type Check.
⛔ Do not touch eas-build.yml, eas-update.yml or eas-submit.yml. Their push: main trigger is how a merge publishes, and it is out of scope.
Acceptance
Both workflows list merge_group among their triggers.
After this PR merges (through the queue), the next queued PR shows Lint & Type Check and Code Quality check-runs on its gh-readonly-queue/main/… merge-group ref and lands.
Who acts
The repo:mobile seat dispatches it. The diff touches the governed surface (.github/workflows/**), so the maintainer approves and merges this one PR.
Claim: PM loop round 1
Session: session_01QSeKYnW1Xf6HDSWz1eGAqv
Account: os-justin
Branch: claude/issue-171-merge-group-trigger
Worktree: mobile-issue-171
Domain: n/a — single-lane repo (repo:mobile)
Seat: repo:mobile#1
File surface: .github/workflows/ci.yml, .github/workflows/lint-typecheck.yml (stop on breach; explain in the report)
Container & model: S mechanical, mode:subagent, model: default tier (opus) — governed surface, so the seat does not use the floor tier, effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: none
Premise: holds. On main at 92a0a26, neither workflow lists merge_group. The ruleset has merge_queue and requires Lint & Type Check.
Serial constraints cleared: none. No in-flight PR touches .github/workflows/**.
{
"issue": 171,
"status": "done",
"branch": "claude/issue-171-merge-group-trigger",
"pr": "https://github.com/objectstack-ai/mobile/pull/172",
"session": "session_01QSeKYnW1Xf6HDSWz1eGAqv",
"premise_still_valid": true,
"summary": "Added a bare `merge_group:` trigger to the `on:` block of .github/workflows/lint-typecheck.yml and .github/workflows/ci.yml (one line each, commit 1808854 on origin/main 92a0a26); every other trigger and both job names (`Lint & Type Check`, `Code Quality`) are unchanged and the three EAS workflows were not touched. Expression audit: the only expression in either file is `if: always()` on ci.yml's `Upload coverage` (true under merge_group); the only `pull_request` hits are trigger keys, not expressions; there is no job-level if, no github.head_ref and no github.event.pull_request read, so no fix was needed. Coverage upload works under merge_group: artifacts are per-run, so the fixed name cannot collide, and it needs only contents: read; it also cannot gate the queue, since the required check is in the other workflow. No changeset: the package is private, the previous CI-only change (3fa8b72) shipped without one, and the repo has no changeset check. Deviation: the commit carries `Co-Authored-By: Claude Opus 5.5`, written from the harness attribution reminder; the fleet rule is a model-free pair. Not rewritten, because a force-push is out of bounds; the PR body notes it and the seat decides. PR #172 is a draft opened as objectstack-fleet[bot] with no assignees and no labels.",
"tests": "head 1808854, under os-verify-lock (slot mobile-issue-171): `npx tsc --noEmit` VERDICT command-exit 0; `npx eslint . --ext .ts,.tsx` VERDICT command-exit 0; `npx jest --ci --coverage --maxWorkers=2` VERDICT command-exit 0, `Test Suites: 33 passed, 33 total`, `Tests: 519 passed, 519 total`. No ablation: the diff is workflow config only.",
"gates": "YAML parse with the node `yaml` package (`node -e \"require('yaml')\"` exit 0, yaml@2.9.0): lint-typecheck.yml on = merge_group,pull_request,push,workflow_dispatch, job `Lint & Type Check`; ci.yml on = merge_group,pull_request,push, job `Code Quality`; exit 0. Cross-checked with python3 yaml.safe_load, exit 0 on both. Control-byte grep: no hits. Exit codes are recorded in the scratchpad issue-171/exit-codes.txt. objectstack dispatch-gates was not applied, because mobile has no such script and its gates were hand-derived from the dispatch order. PR check-runs at 1808854: `Lint & Type Check` in_progress, `Code Quality` in_progress. NOT MEASURED: the merge_group run itself, because it only exists once the PR is queued (the card's acceptance step).",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "2 relay writes: pr_create via fleet-write dispatch (POST /repos/objectstack-ai/objectstack/dispatches, run 41462453006, which created objectstack-ai/mobile#172 with byte-identical read-back), and this os-dev-report comment via post-stamped (POST /repos/objectstack-ai/mobile/issues/171/comments). Not REST: two git pushes (the empty-branch probe and the commit).",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": []
}
ACCEPT → PR #172 (head 1808854). Ready for review; the maintainer is requested. This is a workflow change, so the maintainer merges it through the queue. After it lands, the seat lands #166 through the queue.
Landed and accepted.#172 merged as 0cdce1b (maintainer, through the queue). Acceptance met. The next queued PR (#166) produced Lint & Type Check success and CI success check-runs on gh-readonly-queue/main/pr-166-…, and it landed. pm:dispatched removed.
Activity
objectstack-fleet commentedon Nov 2, 2026
repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv
Claim: PM loop round 1
Session:
session_01QSeKYnW1Xf6HDSWz1eGAqvAccount:
os-justinBranch:
claude/issue-171-merge-group-triggerWorktree:
mobile-issue-171Domain:
n/a — single-lane repo (repo:mobile)Seat:
repo:mobile#1File surface:
.github/workflows/ci.yml,.github/workflows/lint-typecheck.yml(stop on breach; explain in the report)Container & model:
S mechanical,mode:subagent,model: default tier (opus) — governed surface, so the seat does not use the floor tier,effort: mediumClause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect cardThread-read: none
Premise: holds. On
mainat92a0a26, neither workflow listsmerge_group. The ruleset hasmerge_queueand requiresLint & Type Check.Serial constraints cleared: none. No in-flight PR touches
.github/workflows/**.objectstack-fleet commentedon Nov 2, 2026
repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv
os-dev-report
{ "issue": 171, "status": "done", "branch": "claude/issue-171-merge-group-trigger", "pr": "https://github.com/objectstack-ai/mobile/pull/172", "session": "session_01QSeKYnW1Xf6HDSWz1eGAqv", "premise_still_valid": true, "summary": "Added a bare `merge_group:` trigger to the `on:` block of .github/workflows/lint-typecheck.yml and .github/workflows/ci.yml (one line each, commit 1808854 on origin/main 92a0a26); every other trigger and both job names (`Lint & Type Check`, `Code Quality`) are unchanged and the three EAS workflows were not touched. Expression audit: the only expression in either file is `if: always()` on ci.yml's `Upload coverage` (true under merge_group); the only `pull_request` hits are trigger keys, not expressions; there is no job-level if, no github.head_ref and no github.event.pull_request read, so no fix was needed. Coverage upload works under merge_group: artifacts are per-run, so the fixed name cannot collide, and it needs only contents: read; it also cannot gate the queue, since the required check is in the other workflow. No changeset: the package is private, the previous CI-only change (3fa8b72) shipped without one, and the repo has no changeset check. Deviation: the commit carries `Co-Authored-By: Claude Opus 5.5`, written from the harness attribution reminder; the fleet rule is a model-free pair. Not rewritten, because a force-push is out of bounds; the PR body notes it and the seat decides. PR #172 is a draft opened as objectstack-fleet[bot] with no assignees and no labels.", "tests": "head 1808854, under os-verify-lock (slot mobile-issue-171): `npx tsc --noEmit` VERDICT command-exit 0; `npx eslint . --ext .ts,.tsx` VERDICT command-exit 0; `npx jest --ci --coverage --maxWorkers=2` VERDICT command-exit 0, `Test Suites: 33 passed, 33 total`, `Tests: 519 passed, 519 total`. No ablation: the diff is workflow config only.", "gates": "YAML parse with the node `yaml` package (`node -e \"require('yaml')\"` exit 0, yaml@2.9.0): lint-typecheck.yml on = merge_group,pull_request,push,workflow_dispatch, job `Lint & Type Check`; ci.yml on = merge_group,pull_request,push, job `Code Quality`; exit 0. Cross-checked with python3 yaml.safe_load, exit 0 on both. Control-byte grep: no hits. Exit codes are recorded in the scratchpad issue-171/exit-codes.txt. objectstack dispatch-gates was not applied, because mobile has no such script and its gates were hand-derived from the dispatch order. PR check-runs at 1808854: `Lint & Type Check` in_progress, `Code Quality` in_progress. NOT MEASURED: the merge_group run itself, because it only exists once the PR is queued (the card's acceptance step).", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "2 relay writes: pr_create via fleet-write dispatch (POST /repos/objectstack-ai/objectstack/dispatches, run 41462453006, which created objectstack-ai/mobile#172 with byte-identical read-back), and this os-dev-report comment via post-stamped (POST /repos/objectstack-ai/mobile/issues/171/comments). Not REST: two git pushes (the empty-branch probe and the commit).", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [] }objectstack-fleet commentedon Nov 2, 2026
repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv
ACCEPT → PR #172 (head
1808854). Ready for review; the maintainer is requested. This is a workflow change, so the maintainer merges it through the queue. After it lands, the seat lands #166 through the queue.objectstack-fleet commentedon Nov 2, 2026
repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv
Landed and accepted. #172 merged as
0cdce1b(maintainer, through the queue). Acceptance met. The next queued PR (#166) producedLint & Type Checksuccess andCIsuccess check-runs ongh-readonly-queue/main/pr-166-…, and it landed.pm:dispatchedremoved.