Skip to content

Manager card: no briefing limit tied to the merge queue (owner ruling 2026-10-26) - #2534

Merged
wshallwshall merged 6 commits into
mainfrom
manager-card-no-wip-limit
Oct 26, 2026
Merged

wshallwshall merged 6 commits into
mainfrom
manager-card-no-wip-limit

Conversation

@wshallwshall

Copy link
Copy Markdown
Collaborator

Records the owner ruling of 2026-10-26: flow management never includes a work-in-progress limit on briefing. In the owner's words: "This is NEVER a thing in our processes. Builders and managers work at full speed. Managers batch work into combined PRs as much as possible. A merge queue develops. The lander works it down."

Changes:

  • docs/roles/manager.card.md: removes the "Brief more than the Lander can land" must-not; adds a "No work-in-progress limit on briefing" paragraph under What this seat owns; On-arrival step 4 no longer sizes a wave on the open PR count. Card is 6134 of 6144 bytes in a CRLF checkout.
  • CLAUDE.md section 5, Manager row: carries the same ruling, since the card says it is derived from that table.

Merge note: korus roles/MANAGER.md still carries the "when to brief NOTHING" throttle. Its companion correction is korus branch manager-no-wip-limit (PR to follow). Until both land, the card and the playbook disagree.

Follow-ups, not filed here:

  • No regression test stops a card edit from copying the throttle back in.
  • Open-PR growth could exceed page caps in scripts/coord/pr_state.py (PR_PAGE=100) and scripts/ci/check_stalled_prs.py (LIST_LIMIT=300).

Checks: pytest test_role_cards, test_coord_seat_roster_verdict, test_precompact_reprime_hook, test_enter_worktree_check, test_afk_kill_switch (294 passed); then test_role_cards, test_claude_md_wiki_state_root, test_claude_section_citations, test_review_standards, test_sds_rule_ids_are_stable, test_coord_seat_roster_verdict, test_ci_tooling_gate (194 passed). Pre-commit passed on all three commits. No Python changed, so no ruff or mypy.

QA: code-review at level xhigh, two rounds. round-af70715a tag: xhigh effort -> 10 inline angles -> dedup (no verify) -> sweep -> <=15 findings; round-166a7e2a tag: xhigh effort -> 10 inline angles -> dedup (no verify) -> sweep -> <=15 findings. Both read with korus scripts/quality/review_tag.py (exit 0, printed with --ascii). Findings fixed in 4edf5b6 and f69d66b; the unfixed ones are the follow-ups above.

Owner ruling 2026-10-26: a work-in-progress limit on briefing is never part
of the process. Builders and Managers work at full speed, Managers batch
into combined PRs, a merge queue forms, and the Lander works it down.

- docs/roles/manager.card.md, "What this seat owns": add "Brief at full
  speed" with the ruling.
- "What it must not do": remove "Brief more than the Lander can land".
- "On arrival" step 4: keep finding the Lander, drop sizing a wave on
  the open PR count.

No other text in docs/roles, docs/METHOD.md, CLAUDE.md or .claude limits
briefing by queue depth or merge rate; no test or script pins the
removed phrases. The card stays under tests/test_role_cards.py's 6 KiB
cap (6142 bytes with CRLF).

Proposed PR title: Manager card: no briefing limit tied to the merge queue (owner ruling 2026-10-26)
Review round 1 (round-af70715a): "the queue" alone was narrower than the
ruling and could read as the merge queue only, leaving the open PR count,
the metric the removed On-arrival step used, still usable as a throttle.
Name all three inputs. Drop the restated batching sentence: the wave
paragraph above already says it, with its own-PR exceptions, so stating
it again unconditionally contradicted them. Card is 6134 bytes (CRLF),
under the 6144 cap.

The korus roles/MANAGER.md throttle text is outside this repository and
is being corrected by a separate Builder.
Review round 2 (round-166a7e2a):
- The card is a summary of CLAUDE.md section 5, and the ruling lived only
  in the card. Add it to the Manager row of the seat table so the source
  the card derives from carries it.
- The three-input list read as complete. Head the rule "No
  work-in-progress limit on briefing" and say "at least" the open PR
  count, the merge queue and the merge rate never limit it.
- Drop "the Lander works the queue down", which the Lander row states.

Card is 6134 bytes with CRLF, under the 6144 cap.
@wshallwshall

Copy link
Copy Markdown
Collaborator Author

Companion korus PR: MEFORORG/korus#246. Land both so the card and the playbook agree.

Owner ruling 2026-10-26, in session: the five-item cut on combined PRs
is removed. A wave PR is cut when every Builder in it has reported, or
before the Manager closes its instance. The own-PR exceptions stay: an
item that fixes a red main, changes a security control, supersedes an
ADR, or must land in order against another open PR gets its own PR, and
a red or conflicting item goes back to a Builder.

The card states it in the no-work-in-progress paragraph, which already
carries the 2026-10-26 ruling, and the CLAUDE.md Manager row gains the
same few words. A grep of docs/roles, CLAUDE.md, docs/METHOD.md,
.claude/ and tests/ found no engine text carrying a four-item Builder
lane ceiling or a seat-owned burn start-throttle, so nothing else moved.

PR title: Manager card: brief at full speed, no work-in-progress limit
Code review round 1 on the five-item cut. The no-work-in-progress text
read as lifting every limit on briefing, and CLAUDE.md wins over korus,
so a Manager could brief through a Steward hold. The owner ruling of
2026-10-26 keeps usage limits with the Steward's holds and the 90
percent Workflow gate, and both the card and the CLAUDE.md Manager row
now say so. "No item count caps a PR" read against the own-PR
exceptions, so it now names the wave PR.

The card is held under the 6144-byte cap by tightening two sentences
whose content stays: the wave-branch merge step and the commit-without-
asking line.

Left for the Manager: scripts/coord/lane.ps1 still defaults -Capacity
to 4, outside this brief's grep scope; korus MANAGER.md still carries
the five-item cut until the korus companion change merges.
Code review round 2. The previous commit said the 90 percent Workflow
gate stops a new brief, which overstates a gate that covers starting a
Workflow, and it copied a live threshold into two always-loaded files.
Both now say usage limits still bind and point at korus STEWARD.md
(and COMMON.md in CLAUDE.md), naming no number. "Never limit it" now
says "briefing". The shared commit-authority sentence the previous
commit shortened is restored to match the other cards, and On-arrival
step 4 is dropped: it checked nothing, and the must-not list already
hands each PR to the Lander. The card is 6126 bytes on a CRLF checkout.
@wshallwshall

Copy link
Copy Markdown
Collaborator Author

Follow-up pushed: f69d66b..908ac2b (three commits).

Owner ruling 2026-10-26 ("Remove the cap"): the five-item trigger is gone from the Manager card's wave paragraph. A wave PR is cut when every Builder has reported, or before the instance closes. The own-PR exceptions stay unchanged. The card's no-work-in-progress paragraph and the CLAUDE.md Manager row now say no item count caps a wave PR, and that usage limits still bind (a Steward hold, the Workflow gate), pointing at korus rather than restating a threshold.

A grep of docs/roles, CLAUDE.md, docs/METHOD.md, .claude/ and tests/ found no other engine text carrying a five-item cut, a four-item Builder lane ceiling, or a seat-owned burn start-throttle.

Open for the Manager:

  • scripts/coord/lane.ps1 still defaults -Capacity to 4, and lane-level reports AT CAPACITY against it. That is code outside this brief, so it was not changed.
  • The card points to korus MANAGER.md, When to cut a pull request, which still carries the five-item cut until the korus companion change merges. Consider landing that change first.
  • korus's straggler rule (cut about 30 minutes after the rest reported) is not on the card.

Card size: 6126 bytes on a CRLF checkout (cap 6144).

QA: pytest tests/test_role_cards.py, test_coord_seat_roster_verdict.py, test_claude_section_citations.py, test_claude_md_wiki_state_root.py, test_coord_seat_prompt.py: 148 passed. code-review at xhigh, two rounds (round-5e682854, round-d16c1e07). Tag (korus review_tag.py, exit 0 for both rounds, same line each): xhigh effort -> 10 inline angles -> dedup (no verify) -> sweep -> <=15 findings. Round 2 reviewed the diff before its own fixes, which were not reviewed again (two-round cap). Round 1 led to the usage carve-out and the wave-PR wording. Round 2 led to the korus pointer in place of the 90 percent figure, "briefing" in place of "it", the restored shared commit sentence, and dropping On-arrival step 4. The remaining findings are listed above as open. ruff and mypy do not apply (docs only).

@wshallwshall

Copy link
Copy Markdown
Collaborator Author

Lander: review proof now covers korus 246 at 7655805cdf1f6b50b6f450e2d38d525fba3d77cf and engine 2534 at 908ac2b7c3bffaa87ba8dfdaa259c672e3621886.

A Lander-dispatched code-review run (level xhigh, nonce round-2141fc41a2, korus review_tag.py exit 0, one fork, tag xhigh effort -> 10 inline angles -> dedup (no verify) -> sweep -> <=15 findings) covered korus cbf36b3f40..7655805cdf and engine commit 908ac2b7c (the round-two fixes). tests/test_role_cards.py passes at 7655805 (55 passed); a planted typo in the five items pattern makes it fail, so the new control can fire.

  • The four items from the earlier hold are resolved: the five-item cut quotes "Remove the cap", the Steward hold points at STEWARD 3a and 3d, the section 3 ledger-row rule quotes "Confirm retired", and the "cannot land today" retirement record is restored.
  • The two PRs agree on the cut, on "Lander can land", on usage holds and on the ledger-row rule.
  • 12 findings: none changes behaviour or weakens a control; two declined with reasons (the deleted On-arrival step 4, recorded in its commit; "Steward" read as the usage seat by the CLAUDE.md table). The other ten (korus A1-A6, engine B1-B4) are being filed as ledger rows on vault PR 2699's branch. A1 (MANAGER.md:165, "a high weekly rung ... does not stop briefing") should be scoped to the Steward stop; the Workflow gate still binds where a Workflow is launched, so it weakens nothing.

These two land together once their rows are on vault main and the engine checks are green.

@wshallwshall

Copy link
Copy Markdown
Collaborator Author

Lander: enqueuing at pinned head 908ac2b7c3bffaa87ba8dfdaa259c672e3621886. Every required context in branch protection's live list is completed/success on this head (read 2026-10-26 ~22:00Z). Review proof covers this head (see the QA and Lander comments above). Findings left open are filed as ledger rows: #4337 and #4338 (vault PR 2705, merged c44175e0da). Merged together with its pair, korus PR 246.

@wshallwshall
wshallwshall added this pull request to the merge queue Oct 26, 2026
@github-actions github-actions Bot added the ci-red A required check went red. Attribute it before retrying. label Oct 26, 2026
@github-actions

Copy link
Copy Markdown

CI failed in test (windows-2022, py3.14) / Tests (pytest) (and 1 more failing job) while this pull request was in the merge queue, so the queue ejected it.

Its own head can still be green: the queue revalidates the merge, and the path gates that skip on a pull request run there. Read the run before retrying.

https://github.com/MEFORORG/MessageFoundry/actions/runs/40408417109

Merged via the queue into main with commit a63e960 Oct 26, 2026
54 checks passed
@wshallwshall
wshallwshall deleted the manager-card-no-wip-limit branch October 26, 2026 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-red A required check went red. Attribute it before retrying. qa Builder QA record posted; not a merge gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant