docs: auto-sync by studio-ship - #526
Merged
Merged
Conversation
…ep 可中断 + auditor 建单收口 (#523) - workunit.created EVENT handler 改走 pendingWake 闩锁 + wakeIdle(复用 channel.message_sent 机制),过滤 claimable===true(#515 决议 1) - 增订 workunit.status_changed 同口径唤醒,覆盖人闸确认/unclaim/reopen(#515 决议 2) - auditor okr_proposal 建单收口走 WorkUnitService.create,消灭隐形第二建单口(#515 决议 3) - 步间 sleep(dynamicInterval) 改 idleSleep 可中断;15s idle 地板保留纯兜底(#515 决议 4/5)
…523) - 新扫描 scanGateEscalationReminders(SCHEDULE */5min):in_review∩MANUAL_GATE_TYPES 超 30min / unassigned 超 15min → Web 铃铛(gate_reminder)+ SSE notification.created + 浏览器原生通知;超 4h → notifyAlert 企微通路(#516 决议③④) - 每层一次性标记 gateReminderTier1At/Tier2At(touchUpdatedAt:false 保计时锚),不自动确认、人闸语义不动 - 前端 browserNotification util:granted 直发 / 手势内请求权限 / denied 静默;NotificationBell 监听 notification.created 重拉 + 浏览器通知 - NotificationService type 联合扩展 gate_reminder
- file-store 新增 readMessagesTail(倒扫去重/tombstone 口径复刻 mergeActiveRows, 不按 createdAt 早停) - findMergeTargetWorkUnit 全热读 → 倒扫收集 20 条 human(#514 D 方案) - getMessageById 加 channelId 直查;replyTo/convert-to-task/suggest/createFromMessage 等调用点迁移;linkWorkUnit 签名加 channelId - queryMessages limit 无过滤走倒扫切片;queryMessagesPage 首页倒扫 limit+1 出页 (窗口 createdAt 严格递减才走快径,否则回退全量路径保翻页链精确)
- upsert 追加快照行、remove 追加墓碑行,读侧 fold(同 id 后行覆盖、墓碑删除、 首现位置序);claim/flushLeases/updateMetadata 全部走 append,不再全量重写 - 定期压实(checkInterval 500 / minLines 5000 / deadRatio 0.3,同 #319 先例, 测试可注入);rebuild/reconcile 的重建写即压实写 - 崩溃撕裂尾行读侧跳过,启动 reconcileIndex 按 events(正本)重建兜底; 旧 pretty JSON 数组格式读侧兼容、首个写锁内一次性迁移 - 导出 parseWorkUnitIndexContent 双格式 fold,mainline-align/loop-read-worker/ synthesize-dataset 直读方迁移
workunit.execution.stream 不入 500 条共享 replay buffer(一处过滤)—— 补发价值最低流量最大(Layer B 不落盘、前端纯内存、重连走全量 refetch 兜底), 关键事件独占补发窗口,#491 补发机制在高 stream 负载下恢复有效; 直播广播照常(id 取当前 seq,游标语义不变)
- route-dispatch-merge-window:B/E 改测 readMessagesTail 倒扫与 getMessageById 频道直查(保留 B0/E0 旧路径对照),index.json 直读走 parseWorkUnitIndexContent, 新增 --wuscales commitSnapshot 写侧扫档 - 验收复跑(24K 行人类频道档):B 0.69ms / E 0.23ms(对照 211ms / 87ms); H.commitSnapshot wu 1x/100x/500x = 4.1/3.9/4.5ms 不随 WU 数增长; walk5 分页首页 warm p50 20k 行 90→21ms - CONTEXT.md 同步:shared 读口倒扫与 index append-only、channels 调用点迁移、 events replay 过滤、workunit createFromMessage channelId、bench 尺子口径
dommaker
enabled auto-merge
September 13, 2026 02:31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
16 commits from feat/ship-20260913-1025
Commits
c3dd37c docs: auto-sync by studio-ship
c011510 feat(web): /settings 新增通知渠道配置区——企微 webhook 收编 + ClawBot 扫码绑定 + 浏览器通知开关 (#525 P2-6)
0b148d0 feat(api): 通知渠道配置存储 + 读写 API + ClawBot iLink 内嵌直连,notifyAlert 接线真消费 (#525 P2-6)
1d78834 test(bench): synthesize-dataset 测试适配 index.json append-only JSONL 读口(#524 遗留红)(#525)
73c2275 feat(channels): 未配置路由提示挂进 #497 冷却闸(同频道同档 1h 一次)(#525 P2-5)
472c493 feat(shared): queryMessagesPage 加 includeTotal 开关、默认跳过冷层行数统计 (#525 P2-4)
5b9323f feat(auth): sessions.json 写路径顺带 prune 过期条目 (#525 P2-3)
c4db7f8 feat(channels): 路由层 channel 传参进 routeMessage,消重复 getChannel (#525 P2-2)
5789105 feat(web): notificationStore 接取数纪律底座 + 行动中心 SSE 触发 500ms 防抖 (#525 P2-1)
dbaa9ce test(bench): 走查②/⑤ bench 适配新读口 + WU 写侧扫档 + CONTEXT.md 沉淀(#524)
6ea7060 feat(events): SSE replay buffer 踢出 stream chunk(#524 P1-3)
d8b3d25 feat(workunit): 建单写侧 index.json 改 append-only + 定期压实(#524 P1-2)
38341e2 feat(channels): 消息读口全量扫描改造——指定频道+尾部倒扫(#524 P1-1)
2e5ef9d feat(workunit): 人闸催办与认领滞留——30min/15min tier1 铃铛+浏览器通知,4h tier2 企微外推 (#523)
685d22b feat(agents): 频道出声——review 建成「已派评审」+ 对账自愈「断链已自愈」,#159 决议 5 作废 (#523)
045a833 feat(agents): 认领真唤醒——created/status_changed 按 claimable 过滤唤醒 + 步间 sleep 可中断 + auditor 建单收口 (#523)
Test plan
🤖 Generated with studio-ship