# oh-my-openagent v5.0.0-beta.16 - Product: oh-my-openagent (https://whatsnew.fyi/product/oh-my-openagent) - Vendor: oh-my-openagent - Date: 2026-08-22 - Version: v5.0.0-beta.16 - Original notes: https://github.com/code-yeongyu/oh-my-openagent/releases/tag/v5.0.0-beta.16 - Permalink: https://whatsnew.fyi/product/oh-my-openagent/releases/v5.0.0-beta.16 - Labels: Pre-release What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **changed** — init-deep now runs as a formula-sized DAG map-reduce instead of flooding the main session with discovery results - **added** — Quick scanner nodes extract per-chunk facts into bounded file reports with formula-based scaling - **added** — Unspecified-high writer nodes own disjoint subtrees and write AGENTS.md files from bounded reports - **added** — Root writer and verify node gate produced files before the run can claim success - **changed** — Main session now reads only verify verdict instead of chunk reports or raw node output for context protection - **changed** — Small repos with N_quick < 4 keep an inline path; larger repos chain one run per top-level directory instead of overflowing - **added** — Composite ULW invocations now detect and inject hidden skill pointers for all matched skills in a single turn - **changed** — Mass-ulw and ulw-skill-pointers components consolidated into a single skill-pointers component with one uniform target table - **fixed** — Overlapping ULW keyword mentions now fire all matched skills instead of being silently swallowed - **changed** — Ultrawork trigger no longer uses lookahead guard, so any ulw mention arms it - **changed** — Typing mass ulw-loop now loads ultrawork, mass-ulw, and ulw-loop together instead of nothing - **added** — ulw plan now loads ultrawork and ulw-plan via new omo-ulw-plan:skill-pointer custom type - **changed** — omo-senpi-mass-ulw-disabled and omo-senpi-ulw-skill-pointers-disabled flags consolidated into single omo-senpi-skill-pointers-disabled flag - **changed** — Wave sizing for mass-ULW planning is now grain-based with one node per genuinely independent chunk instead of targeting 5-8 nodes per wave - **changed** — Bundled Senpi engine updated to 2026.8.22 - **fixed** — Cursor streams no longer die under heartbeats in Senpi 2026.8.22 - **fixed** — Shutdown no longer throws on pending permission prompts in Senpi 2026.8.22 - **fixed** — Ruby and Julia kernels can now boot under load without timing out in Senpi 2026.8.22 ##### OMO 5.0.0-beta.16 — Formula-Sized init-deep, One ULW Keyword Table, and a Steadier Senpi 2026.8.22 The center of gravity: **`init-deep` stops flooding your main session and runs as a formula-sized DAG map-reduce**, **every ULW keyword now routes through one exception-free skill-pointer table so composite invocations load everything they name**, and the bundled **Senpi 2026.8.22** engine stops Cursor streams from dying under heartbeats, keeps shutdown from throwing on pending permission prompts, and lets Ruby and Julia kernels boot under load without timing out. ##### 🗺️ init-deep becomes a formula-sized DAG map-reduce (#7123) **Large repos no longer blow the orchestrator's context exactly when hierarchical `AGENTS.md` coverage matters most.** The old flow collected every explore result into the main session; the new one replaces discovery and generation with a DAG map-reduce whose shape is computed by one formula in an eval cell, not vibes: - **Quick scanner nodes** extract per-chunk facts into bounded file reports. Chunks are 400 KB of source, roughly 100k tokens against a ~150k usable quick window, so `N_quick = ceil(S / CHUNK)`, bin-packed by directory. - **Unspecified-high writer nodes** own disjoint subtrees and write the `AGENTS.md` files from about 12 reports each: `N_high = ceil(N_quick / 12)`. - A **root writer** consumes only per-subtree digests, and a **verify node** gates every produced file before the run can claim success. - The **always-reduce rule** makes context protection structural rather than aspirational: the main session reads only the verify verdict, never chunk reports or raw node output. Small repos (`N_quick < 4`) keep an inline path, and repos that would exceed `task.dag.max_nodes_per_run` chain one run per top-level directory instead of overflowing. The scoring matrix, templates, file-writing rule, and the Phase 5 snapshot/mode contract that the init-deep-advisor reads are all preserved unchanged. The rewrite even nets out 512 characters smaller. ##### 🎯 Composite ULW invocations load every skill they name (#7120) **"mass ulw loop" used to arm ultrawork and point at mass-ulw, then quietly drop the ulw-loop skill the phrase names.** "mass ulw research" had the same gap. A new component detects `ulw loop` / `ulw-loop` / `ulwloop` and the research equivalents in any case and injects one hidden skill pointer per matched skill, so a composite invocation loads ultrawork, mass-ulw, and the named skill together in a single turn. Suppressions mirror mass-ulw per skill: extension-source inputs, a raw `/skill:` command for the same skill, and an already-expanded skill block never inject. Queued prompts carry the pointers appended inside the one message, so the group survives senpi's one-at-a-time queue drain intact. A new e2e (`ulw-skill-pointers-e2e.mjs`) drives the built plugin through a sandboxed live senpi run per prompt and asserts each pointer rides as a hidden `custom_message` in the session JSONL, that plain "mass ulw" stays pointer-free, and that the real agent dir is untouched. ##### 🧮 One exception-free ULW keyword table (#7122) **The mass-ulw and ulw-skill-pointers components were the same mechanism written twice, and their `ulw(?!-)` lookaheads silently swallowed overlapping mentions: "mass ulw-loop" fired neither mass-ulw nor ultrawork.** Both are now replaced by a single `skill-pointers` component holding one uniform target table (mass-ulw with its aliases, ulw-plan, ulw-loop, ulw-research) with no cross-keyword exceptions. Overlapping keywords all fire, and each matched skill gets its own hidden pointer. The ultrawork trigger likewise drops the `(?!-)` guard, so any `ulw` mention arms it. What changes at your keyboard: - Typing **"mass ulw-loop"** now loads ultrawork + mass-ulw + ulw-loop together instead of nothing. - **"ulw plan"** loads ultrawork + ulw-plan, via the new `omo-ulw-plan:skill-pointer` custom type. - Existing custom types (`omo-mass-ulw:skill-pointer`, `omo- _[Truncated at 4000 characters — full notes: https://github.com/code-yeongyu/oh-my-openagent/releases/tag/v5.0.0-beta.16]_