maw team Concurrency · selective wake และ slot management
ทีม ting-codex โชว์กลไกที่ ch04 ยังไม่ครอบ: ปลุกทีละตัว, กำแพง concurrency, และ codex tile ที่ปิดงาน worktree เองได้ · The ting-codex fleet shows mechanics ch04 does not cover: selective wake, the concurrency wall, and a codex tile that finished its own worktree.
ทีม ting-codex · The team shape
ภาพที่ P'Nut โพสต์คือ team ting-codex บน Arrkra-Co/ting-oracle (host m5): lead หนึ่งตัวเป็น Claude บวก codex worker tiles หลายตัว. นี่คือ pattern เดียวกับ fleet doctrine — Claude นำ, codex/omx เป็นมือ code.
P'Nut posted the ting-codex team on Arrkra-Co/ting-oracle (host m5): one Claude lead plus several codex worker tiles. This is the same pattern as fleet doctrine — Claude leads, codex/omx are the coding hands.
| Role | Member | Engine |
|---|---|---|
| Lead | ting-oracle | Claude (Sonnet 4.6) |
| Workers | codex-1..4 | codex / omx |
ตารางใน screenshot มีคอลัมน์ role / identity / engine / state / action — อ่าน state ก่อนสั่ง · The screenshot table has role / identity / engine / state / action columns — read state before acting.
--only: ปลุกเฉพาะตัวที่ต้องการ · selective wake
maw team up <team> --only <member> ปลุกเฉพาะ tile ที่ระบุ ไม่กวน tile อื่น. tiles ที่เหลือจะขึ้น skipped (outside --only). ใช้เมื่อไม่อยากปลุกทั้งทีม — ประหยัด concurrency slot.
maw team up <team> --only <member> wakes only the named tile and leaves the rest alone; the others report skipped (outside --only). Use it when you do not need the whole team awake — it saves concurrency slots.
กำแพง concurrency · The maxConcurrentAgents cap
มี cap ระดับ host ชื่อ maxConcurrentAgents เก็บใน maw config layer 58 (~/.config/maw/maw.config.58.json). พอ cap เต็ม (สังเกตจริง: 46) การ team up --only codex-4 จะปลุกได้แค่ตัวที่ขอ ตัวอื่น skipped — ไม่ใช่ error แต่เป็นกำแพง slot.
There is a host-level cap, maxConcurrentAgents, stored in maw config layer 58 (~/.config/maw/maw.config.58.json). When it is full (observed at 46), team up --only codex-4 wakes only the requested tile and skips the rest — not an error, just the slot wall.
ปลด slot 2 ทาง · Two ways to free a slot
เมื่อ cap เต็ม maw ใบ้ทางแก้ 2 ทาง — ลองทางถูกก่อน · When the cap is full, maw hints two fixes — try the cheap one first.
| Order | Move | Effect |
|---|---|---|
| 1 (cheap, reversible) | maw sleep <name> | Sleep an idle agent to free one slot; wake it back later. |
| 2 (raise the wall) | maw config set limits.maxConcurrentAgents 48 | Bump the cap, then re-run team up → skipped tiles become live fresh wake. |
P'Nut เลือกทาง 2 (bump 46→48) แล้ว codex-3/codex-4 ขึ้นเป็น live fresh wake · P'Nut took option 2 (bump 46→48) and codex-3/codex-4 came up as live fresh wake.
codex tile ปิดงานเอง · Autonomous worktree completion
tile m5:ting แก้ Issue #29 rebase conflict ได้เองครบ loop แล้ว report กลับ lead — ไม่ได้แค่ commit ทิ้ง:
The m5:ting tile resolved the Issue #29 rebase conflict end-to-end and reported back to the lead — not just a commit-and-forget:
| Step | Action | Why it matters |
|---|---|---|
| 1 | git rebase --continue after resolving (commit 12c2c69 replaces 34b261a) | Finishes the rebase cleanly. |
| 2 | bun run build passes | Build-verify before push proves the rebase did not break anything (ปัจจัตตัง — self-evident green build). |
| 3 | git push --force-with-lease origin feat/not-found-29 | Correct post-rebase push: rejects if a sibling pushed meanwhile — never raw --force. |
tiles รันด้วย bypass-permissions จึง write/commit/push ได้เอง — autonomy นี้มากับ build-verify เป็น gate · Tiles run with bypass-permissions, so they can write/commit/push on their own — that autonomy is gated by build-verify.
maw team แทน custom keepalive · when to reach for a team
คำถามจริงจากห้องเรียน: codex agent เดี่ยว ๆ (ไม่มี keepalive) ควรย้ายไปรันใต้ maw team ไหม? คำตอบเชิง pattern: ถ้า maw team จัดการ lifecycle / respawn / concurrency ให้แล้ว การทำ custom keepalive เองคือ reinvent. ย้ายเข้า team จะได้ slot management + selective wake + การคุม tile ฟรี.
A real classroom question: should a standalone codex agent with no keepalive move under maw team? The pattern answer: if maw team already handles lifecycle, respawn, and concurrency, a custom keepalive reinvents it. Moving into a team gives slot management, selective wake, and tile control for free.
Checklist
- Read the team table's
statecolumn before acting;skipped (outside --only)is a slot signal, not a failure. - Wake one tile with
maw team up <team> --only <member>instead of the whole team when you only need one. - When tiles will not wake, suspect the
maxConcurrentAgentscap (~/.config/maw/maw.config.58.json), not a crash. - Free a slot the cheap way first —
maw sleep <name>— before bumping the cap withmaw config set limits.maxConcurrentAgents <n>. - A worker that rebases must build-verify before pushing, and push with
--force-with-lease, never raw--force. - Prefer
maw teamover a hand-rolled keepalive — it owns lifecycle, respawn, and concurrency already.