🩹 ulw-loop 메모리 누수 수정됨
길게 실행된 ultrawork가 RAM을 과도하게 차지하거나 갇힌 bun 프로세스의 떼를 생성했다면, 이 릴리스가 당신을 위한 것입니다. 하나의 "메모리 누수"처럼 보였던 것이 실제로는 두 개의 별도 버그였으며, 둘 다 이제 해결되었습니다:
- 포크 폭탄 중지됨. 손상된 설치는
omo 런타임 래퍼가 자신을 무한 루프로 호출하도록 할 수 있었습니다 — wrapper → CLI → wrapper → … — 메모리가 부족할 때까지 수천 개의 멈춘 프로세스를 생성했습니다. 이제 위임(delegation)이 일회성 센티넬을 포함하고 생성된 래퍼를 대상으로 하지 않아서, 체인이 절대 재귀할 수 없습니다.
- Ledger가 더 이상 팽창하지 않습니다. 이전에는 모든 스티어링 항목이 전체 계획을 4번 포함했으므로
.omo/ulw-loop/ledger.jsonl이 길게 실행되는 동안 이차 함수로 증가했습니다. 이제 항목은 변경된 목표만의 간결한 스냅샷을 저장합니다 — 이전의 189 KB 항목이 **7.8 KB (~24배 더 작음)**로 줄어들었으며, 읽기/중복 제거는 파일 전체를 메모리에 로드하지 않고 스트리밍합니다.
- 더 이상 갇힌 자식 프로세스 없습니다.
senpi ulw-loop status 생성이 더 이상 가득 찬 stderr 파이프에서 멈추지 않습니다. 분리되어 실행되며 30초 하드 타임아웃이 있습니다.
🛠️ 릴리스 파이프라인 강화
이 버전은 또한 게시 파이프라인 자체를 복구합니다: npm은 손상된 npm@12.0.0(프로베넌스 게시를 충돌시킨)에서 고정되었으며, 릴리스 프로세스는 이제 모든 범프마다 omo-senpi 패키지 버전을 루트와 동기화 상태로 유지합니다.
4.16.0 이후 누적된 수정 사항을 포함합니다 — Bun 런타임 회귀 (#3824), 플래너 정확성 (#5481), 고정된 버전 불일치 경고 (#4734), 및 더 많은 것들 (아래 참조).
마이너 호환성 및 안정성 릴리스
이 릴리스는 호환성 관련 동작 변경 사항과 운영 강화를 포함합니다. 업그레이드하거나 게시하기 전에 아래 요약을 읽어보세요.
- 패키지 감지, 플러그인/구성 호환성, 설치 표면 전반에 걸친 이름 변경 전환.
- 설치 및 게시 워크플로우 강화(더 안전한 릴리스 순서 및 패키지/설치 수정 포함).
커밋 요약
- 9036899 fix(codex): show version in hook statuses
- c754cab fix(codex): limit git bash hooks to windows
- a4e29f5 Merge pull request #5993 from code-yeongyu/ci/pin-npm-sigstore
- 8289997 ci(publish): pin npm to 11.18.0 to fix provenance sigstore crash
- 06c8a71 Merge pull request #5990 from code-yeongyu/release/v4.16.1-source-state
- f4b0dad Merge pull request #5989 from code-yeongyu/fix/ulw-loop-memory-fork-bomb
- 0cbb0a5 fix(codex): guard ulw-loop delegation against fork bomb recursion
- f7ea729 fix(codex): compact ulw-loop steering ledger to end quadratic growth
- 7421e1b Merge pull request #5980 from code-yeongyu/code-yeongyu/fix-3824-bun-runtime-regression
- 997d802 test(omo-opencode): audit raw bun module imports
- 216301f Merge pull request #5979 from code-yeongyu/feature/xterm-tui-qa-harness
- e3082fd fix(opencode): route Bun runtime calls through shims
- 0806e41 docs(qa): route TUI visual evidence to the xterm.js web terminal, forbid tmux
- 406ccdf feat(qa): render TUI evidence through real xterm.js + node-pty, not tmux
- 8fe6674 Merge pull request #5974 from code-yeongyu/code-yeongyu/frontend-skill-research-contract
- 0526d7c fix(shared-skills): scope the non-negotiable line to the design-system gate and tighten contract pins
- 6aa29c7 fix(shared-skills): align stale 7-section pointers and unify the designpowers load condition
- 8ec538b feat(shared-skills): promote the primitive-showcase gate and wire ui-ux-db sanity checks
- 59748e6 feat(shared-skills): fold designpowers lane-c and a11y/debt schema into the default frontend flow
- f21aff7 feat(shared-skills): make frontend greenfield research a logged deliverable contract
- fa8e5bf Merge pull request #5965 from MoerAI/fix/lazycodex-ulw-planner-result
- f39cc5b Merge pull request #5930 from MoerAI/fix/pretooluse-bash-command-cwd
- baf722b Merge pull request #5783 from MoerAI/fix/version-check-warn-pinned-mismatch
- 25ba306 Merge pull request #5755 from MoerAI/fix/ulw-loop-require-session-id-value
- 8082b51 Merge pull request #5570 from MoerAI/fix/start-work-atlas-label
- 66e826d Merge pull request #5357 from BenjaminHalko/fix/model-fallback
- c4dfcde docs(omo-json): add a $schema-bearing example so the freshness gate validates it
- 9537092 fix(codex): mirror planner barrier into ulw-loop (fixes #5481)
- 8ad8a4f fix(codex): keep planner liveness guidance (fixes #5481)
- bd99a5e fix(codex): preserve parallel planner waves (fixes #5481)
- a70e667 fix(codex): prevent planning from outrunning spawned agents
- 2fbc4b0 feat(omo-config-core): generated omo.schema.json artifact with freshness gate
- 05288db Preserve Bash hook validation in the active worktree
- d857891 Merge remote-tracking branch 'upstream/dev' into fix/model-fallback
- 5684dc8 fix(runtime-fallback): clear internallyAbortedSessions on session teardown
- ff5ee46 Merge remote-tracking branch 'origin/dev' into fix/start-work-atlas-label
- 4bdb2a7 fix(cli): warn when a pinned plugin version differs from the running version (fixes #4734)
- f2ed3b1 fix(ulw-loop): require a value for explicit --session-id (fixes #5752)
- 4e1a4d7 Merge remote-tracking branch 'origin/dev' into fix/start-work-atlas-label
- e7f5002 fix(start-work): name Atlas (not Sisyphus) in /start-work template and labels (fixes #5499)
- 4e788f6 fix(runtime-fallback): stop subagent stall on provider auto-retry signal
2명의 커뮤니티 기여자에게 감사합니다:
- @BenjaminHalko:
- fix(runtime-fallback): stop subagent stall on provider auto-retry signal
- fix(runtime-fallback): clear internallyAbortedSessions on session teardown
- Merge remote-tracking branch 'upstream/dev' into fix/model-fallback
- @MoerAI:
- fix(start-work): name Atlas (not Sisyphus) in /start-work template and labels (fixes #5499)
- Merge remote-tracking branch 'origin/dev' into fix/start-work-atlas-label
- fix(ulw-loop): require a value for explicit --session-id (fixes #5752)
- fix(cli): warn when a pinned plugin version differs from the running version (fixes #4734)
- Merge remote-tracking branch 'origin/dev' into fix/start-work-atlas-label
- Preserve Bash hook validation in the active worktree
- fix(codex): prevent planning from outrunning spawned agents
- fix(codex): preserve parallel planner waves (fixes #5481)
- fix(codex): keep planner liveness guidance (fixes #5481)
- fix(codex): mirror planner barrier into ulw-loop (fixes #5481)
- Merge pull request #5357 from BenjaminHalko/fix/model-fallback
- Merge pull request #5570 from MoerAI/fix/start-work-atlas-label
- Merge pull request #5755 from MoerAI/fix/ulw-loop-require-session-id-value
- Merge pull request #5783 from MoerAI/fix/version-check-warn-pinned-mismatch
- Merge pull request #5930 from MoerAI/fix/pretooluse-bash-command-cwd
- Merge pull request #5965 from MoerAI/fix/lazycodex-ulw-planner-result