발행된 엔진이 tree-sitter 에셋을 다시 제공합니다. senpi의 발행 스테이징이 번들된 워크스페이스의 dist는 복사했으나 assets는 복사하지 않아서, tarball에 패키지 외부를 가리키는 컴파일 타임 type: "file" 임포트가 포함되었습니다. bun build --compile으로 이를 번들링한 모든 소비자(omo의 자체 릴리즈 바이너리 포함)가 이를 해석할 수 없었습니다. (senpi #1800)
콜드 시작이 준비 완료까지 1초 미만, 웜 시작이 900ms 미만으로 도달합니다. 3라운드의 프로파일링으로 콜드 시간-준비까지를 5.8초에서 850ms로, 웜을 1.5초에서 886ms로 단축했습니다(로드된 호스트 기준). 배너-스피너 대기 시간(화면에 아무것도 표시되지 않는 간격)은 콜드에서 4.6초에서 175ms로, 웜에서 550ms에서 177ms로 감소했습니다. 마지막 라운드에서 MCP 서버 연결이 실제 설정에서 292ms 직렬 session_start 디스패치 중 255ms를 소비했음을 발견했습니다(서버가 구성되지 않은 경우 0.2ms). 이제 첫 번째 프레임을 지나 시작되며 첫 번째 턴은 여전히 전체 도구 세트를 포함합니다. 자동 테마 감지는 매 실행마다 다시 칠하지 않습니다: 감지된 배경이 지속되고 다음 시작을 시드합니다. 앱-서버 MCP 인벤토리는 지연된 연결 이후 와이어 상태 구독을 통해 최신 상태를 유지합니다. 관리되는 도구 감지는 프로세스 생성 대신 PATH 통계를 사용합니다. 모델 런타임과 리소스 로더가 순차적으로가 아니라 동시에 실행됩니다. 최종 라운드에 대해 같은 커밋 기준으로 측정됨: 시간-준비까지 1,014ms에서 797ms (n=10 인터리브). 크로스 버전 헤드라인은 이 작업만이 아니라 설치된 beta.68과 현재 dev를 비교합니다. (#8412, senpi #1781)
$skill 멘션이 제출 시 확장됩니다. 더 이상 베어 $name은 로드된 스킬의 이름을 지을 때 실행 가능합니다. 연결된 스킬 블록이 세션 내보내기에 나타납니다. (senpi #1778)
공유 호스트 RPC 세션을 마지막 클라이언트의 연결 해제 후에도 유지할 수 있습니다. open_session이 retain_on_disconnect를 허용합니다; 같은 ID로 다시 open_session하면 재연결됩니다. (senpi #1776)
번들된 CLI가 사용자 정의 exec 인수로 다시 실행됩니다. 프로파일러 또는 검사기 플래그를 포함하는 실행이 번들 단계에서 삭제된 형제를 생성하는 대신 자신의 복사본으로 이러한 인수를 다시 재생합니다. (senpi #1785)
JS eval 커널: 플랫폼 전역을 섀도우하는 셀은 실행 전에 거부됩니다. (senpi #1786)
Claude-sdk-oauth 재로그인이 차단된 슬롯을 새로고침합니다 중복을 추가하는 대신. 저장된 credential-pool 블록은 credential 리비전에 바인딩됩니다. (senpi #7084)
압축 요약화가 빈 정지 후 추론 오버라이드 없이 재시도됩니다. (senpi #1773)
RPC 소켓 호스트: 큐 승인 시 세션-이벤트 크레딧, 30초 데드-피어 정체 예산, 관찰 가능한 컷 공지. (senpi #1774)
아무도 기다리지 않는 시작 작업이 더 이상 첫 번째 페인트 전에 실행되지 않습니다. omo-senpi 플러그인의 3개 부분이 사용자가 프롬프트가 나타나기 전에 대기하는 경로에서 실행되었으며, 이들은 첫 번째 턴 전에 관찰 불가능합니다: init-deep 어드바이저가 session_start 핸들러에서 git rev-parse를 생성하고 온보딩 마커를 stat하여 부적격임을 결정할 뿐입니다(웜 12.4ms, 콜드 20.6ms), OmO 네이티브 세션 텔레메트리가 모델 인벤토리를 읽고, omo 설정을 두 번 로드하고, 같은 디스패치 경로에서 PostHog 클라이언트를 구축했습니다(웜 1.8ms, UTC 날의 첫 세션에서 14.2ms), LSP 컴포넌트가 등록하면서 mutation 포매터를 구축했습니다 - omo 설정 읽기와 포매터-마커 스캔 - tool_result만 도달할 수 있는 스텝을 위합니다. 어드바이저와 텔레메트리 캡처가 이제 첫 번째 포스트-페인트 엣지(input / before_agent_start, 또는 750ms 백스톱)에서 실행되고, 포매터는 첫 번째 mutation 도구 결과에서 구축되며, 레거시 텔레메트리 제품 설정은 더 이상 모듈 범위에서 패키지 매니페스트를 읽지 않습니다. 도구, 명령, 플래그 및 훅 등록은 건드리지 않습니다: 엔진의 테이블이 첫 번째 프롬프트 전에 정확히 이전처럼 완성됩니다. 플러그인을 통한 실제 senpi 실행으로 측정됨(15개 인터리브 ABBA 라운드): interactiveMode.init 97ms에서 84ms 중앙값, 83ms에서 69ms 최솟값; 플러그인의 factory 행은 37ms에서 변하지 않습니다. (#8412)
senpi 2026.9.17을 채택합니다. 해당 릴리즈는 code-yeongyu/senpi#1781에 추적된 엔진 시작 작업을 포함합니다: 발행된 패키지는 이제 런처가 선호하는 사전 링크된 번들을 제공하고, TypeScript 확장은 jiti 대신 모든 bun 런타임에서 Bun의 네이티브 트랜스파일러를 통해 임포트되며, 터미널 PTY 패키지와 MCP SDK는 모든 부트에서가 아니라 첫 사용 시 로드되고, 명령 및 모드 전용 모듈 그래프는 분기점으로 지연되며, 디렉토리 스캔 마이그레이션은 마커가 이를 기록한 후 건너뜁니다. Apple Silicon 워크스테이션에서 실제 런처 및 플러그인을 통해 이전 엔진과 인터리브된 상태로 측정됨: 배너에서 스피너까지 1,209ms에서 196ms 웜과 4,608ms에서 560ms 콜드, 준비까지의 시간 6,197ms에서 1,986ms 콜드, 확장 단계 800ms에서 409ms 콜드. (#8412, senpi#1781)
세션 시작이 전체 메모리 루트를 더 이상 통과하지 않습니다. 부트 프로파일은 약 190ms의 동기 statSync 시간을 메모리 컴포넌트에 귀속시켰으며, 실제 부트 중에 파일시스템 경계를 측정하면 첫 턴 전에 3,787개의 파일시스템 호출을 발행했습니다: 등록 시간 일시적 스윕이 모든 저장소 없는 ID 트리의 최신 mtime을 계산했음에도 불구하고 두 호출자는 이를 하나의 컷오프와만 비교하고, 세션 바인드 파일시스템 정책이 바인드 시간에 아무도 읽지 않는 메타데이터에 대해 거부된 루트를 즉시 열거했습니다. 이제 나이 프로브는 트리가 활성임을 증명하는 첫 번째 mtime에서 정지하고, 거부된 루트는 호스트가 처음 읽을 때 해석됩니다. 158개 ID 에이전트 루트에서 3,787개 파일시스템 호출이 405개로 감소했습니다(동기 존재 확인 328에서 171로, lstatSync 58에서 9로, realpathSync 53에서 4로, 비동기 stat 2,214에서 129로, 비동기 readdir 1,074에서 33으로), 격리된 스윕이 70.1ms에서 2.2ms로 떨어지고 정책 등록이 1.4ms에서 0.1ms로, 모든 평결은 변경되지 않습니다. 이 규모의 웜 캐시에서 시작 타이밍 행은 움직이지 않습니다(스윕이 fire-and-forget이므로 해당 작업이 런타임 자체 I/O와 겹칩니다); 이득은 콜드 캐시에 있으며, 여기서 원본 프로파일이 이를 측정했습니다. (#8412)
세션이 죽은 ulw-execute 작업이 더 이상 무한정 실행 중으로 표시되지 않습니다. .omo/boulder.json은 명시적 완료에서만 status: "active"를 남겼으므로, 충돌, 재부트 또는 닫힌 터미널이 작업을 영원히 active로 남겼습니다 - 하나의 실제 프로젝트는 여전히 유일한 세션의 트랜스크립트가 41시간 동안 조용했던 작업을 광고했으며, 같은 파일이 completed로 기록했던 형제 작업 옆에 있었습니다(#8413). 두 ulw-execute 읽기 경로는 이제 이미 읽은 파일을 조정합니다: 작업은 paused로 강등되고 마지막 활동이 최소 6시간 이전인 경우 stale_since으로 타임스탬프 됩니다 - 세션의 트랜스크립트 mtime, updated_at 및 started_at의 최신. OMO_BOULDER_STALE_WORK_THRESHOLD_MS로 구성 가능합니다. 세션 ID, 계획, 모드 및 다른 모든 필드는 강등을 유지합니다, 최근 활동이 있는 작업은 다시 쓰지 않으며, completed 및 abandoned 기록은 건드리지 않으며, 읽을 수 없거나 없는 파일은 아무것도 변경하지 않습니다. 강등된 작업을 재개하면 이를 active로 반환하고 타임스탬프를 지우며, 그 동안 재개 가능한 상태로 나열된 상태를 유지합니다.
bun 전역 omo이 더 이상 실행 전에 node를 부트하지 않습니다. bun add -g는 런처를 두 개의 bin으로 연결합니다 - <bun root>/bin/omo 및 <bun root>/install/global/node_modules/.bin/omo - 그리고 전역 node_modules/.bin을 먼저 나열하는 PATH가 두 번째 것에 도달했으며, 이는 bun의 자체 #!/usr/bin/env node 심링입니다: 매 실행마다 런처가 bun 아래에서 자신을 다시 실행하기 전에 전체 node 부트를 지불했습니다. 런처는 이미 첫 번째 bin을 bun을 직접 실행하는 작은 sh 심으로 교체했습니다; 이제 동일한 안전 규칙 아래에서 각 항목을 독립적으로 판단하면서 둘 다 수리합니다(이 설치에 대한 bun 자체 링크만, 또는 이 런처가 작성한 심만 교체됩니다; 외부 파일 또는 링크는 그대로 둡니다, 한 항목의 실패는 다른 항목을 차단하지 않으며, 전체 수리는 실패 열기 상태를 유지하고 OMO_DEBUG 없이 조용합니다). hyperfine으로 측정됨(15회 실행, 임시 bun 루트 픽스처, Apple Silicon): .bin/omo 경로가 50.6ms 평균 / 46.6ms 최소에서 16.8ms / 16.4ms로 떨어져 이미 심 처리된 bin인 17.7ms과 수준입니다. 런처는 또한 설치된 엔진이 사전 링크된 번들(<senpi>/dist/bundle/cli.js)을 제공할 때 이를 선호하고 그렇지 않으면 dist/cli.js로 폴백하므로, 엔진 측 번들이 다른 런처 변경 없이 착지합니다. (#8412, senpi#1781)
deps: 복원된 엔진 tree-sitter 에셋과 함께 senpi 2026.9.17-3 채택 (#8428)
092b697 Merge pull request #8431 from code-yeongyu/release/v5.0.0-beta.70-source-state
1eed236 Merge pull request #8432 from code-yeongyu/chore/fold-beta69-into-unreleased
7fd2721 chore(changelog): fold the aborted beta.69 stamp back into unreleased
f1cfbb6 Merge pull request #8426 from code-yeongyu/release/v5.0.0-beta.69-source-state
d0047a4 Merge pull request #8425 from code-yeongyu/fix/transient-age-windows-paths
812a0a3 test(memory): key the transient-age fixture by posix path so the probe's joins match on Windows
fc7b12a Merge pull request #8421 from code-yeongyu/perf/8412-r2-component-defer
dec84b0 docs(changelog): record the deferred plugin startup work (#8412)
6a359c5 Merge pull request #8419 from code-yeongyu/perf/8412-memory-guard
acc73a9 docs(changelog): record the memory startup filesystem diet (#8412)
08d396c Merge pull request #8417 from code-yeongyu/perf/8412-launcher
632a7c2 test(omo-native): record the shim command strings the audit allowlist pins
962c50e docs(changelog): record the bun-direct launcher bins and bundled engine preference (#8412)
77ac294 perf(omo-native): repair both bun global bins so no launch pays for a node boot
d4226b3 Merge pull request #8418 from code-yeongyu/fix/stale-work-windows-session-dir
195d64a test(boulder-state): encode the session cwd into a platform-legal directory segment
ceb3cce Merge pull request #8416 from code-yeongyu/fix/boulder-stale-work-reconcile
194d5b6 docs(changes): record the stale boulder work reconcile with its QA
b24c537 fix(ulw-execute): reconcile stale boulder works where the file is read
9d7aa5e fix(boulder-state): demote works whose ulw-execute session went quiet
818b14f test(boulder-state): pin the stale ulw-execute work that never leaves active
7d3376b Merge pull request #8408 from code-yeongyu/chore/remove-stray-files-20260917
55cc855 docs(evidence): add the final remote gate run for #8406
548a9bf docs(changes): record the stray-file cleanup with its QA evidence
083d6c7 docs(readme): polish the README and switch the install line to bun
cab3215 test(script): fail the suite when a tracked file matches a .gitignore rule
f57417b chore(repo): remove stray session artifacts and reconcile .gitignore with the tracked tree
npm i -g omo-ai@beta