[整理] 静态审计 backlog 跟踪(探索 lane 剩余项)——持续消化中
只读探索 lane 的全部可执行项汇总与处置状态。已消化:hub/edge/frontend/docs/mobile/contract(前 6 份报告)。
新探索 lane(2026-09-01:性能·并发 / 数据库·网络 / UIUX·产品,3 份报告)
已修复(本轮)
待消化(按优先级)
新取证前端遗留候选(2026-09-02,round-38 探索 Copernicus)
并发探索 lane(2026-09-02,第 4 份报告,Wegener)
edge/hub 并发路径锁面全量扫描;唯一 P1 级数据竞争已修,其余为资源回收与残留无锁读。
待消化(并发)
数据库探索 lane(2026-09-03,第 7 份报告,Ampere)
hub GORM/PG + edge SQLite 全量审计(已避开 #2176/#2178/#2181/#2182/#2179 等已修项)。
待消化(数据库)
安全二轮探索 lane(2026-09-03,第 8 份报告,Lorentz)
hub 认证/授权面二轮审计。核查无新发现区域(均已开码确认):路由鉴权矩阵成对无缺口、无 cookie 纯 Bearer+CORS 白名单、OIDC PKCE/state/redirect_uri 合规、ID token 算法双层钉死、HS256 弱密钥启动拒绝、admin loopback-only、跨资源越权面全校验到位。
待消化(安全二轮)
round-56 双探索新 lane(2026-09-02:前端质量二轮 Averroes + 错误处理/日志诚实 Epicurus)
文档卫生(Turing)→ 已全部消化于 #2202(2026-09-02 合并)
前端质量二轮(Averroes)——desktop 死代码富矿,清理优先
错误处理/日志诚实(Epicurus)
网络韧性与超时卫生 lane(2026-09-02,Maxwell,第 9 份报告)
出站调用全有 Timeout+ctx、连接零泄漏、无界缓冲零发现、TLS 零发现、context 断链零发现(含排除项核读)。以下为剩余 8 项。
网络韧性探索 lane(2026-09-02,第 5 份报告,Fermat)
服务端主干已多轮硬化,核心链路无 P1;问题集中在客户端转发跳板、移动端与 token 轮换边缘条件。
待消化(网络)
CX/产品探索 lane(2026-09-02,第 6 份报告,Sagan)
五端按钮/可点元素全量 AST 扫描 + props 链路追踪;以下均为新发现死交互/不诚实内容。
待消化(CX)
CI 完整性 lane(2026-09-03,round-52 实施中揭出,全部已修 → #2197)
早期 backlog(已完成,证据)
不适用/拒绝
安全探索 lane(2026-09-01,第 4 份报告)
已修复(本轮)
待消化(安全)
[整理] 静态审计 backlog 跟踪(探索 lane 剩余项)——持续消化中
只读探索 lane 的全部可执行项汇总与处置状态。已消化:hub/edge/frontend/docs/mobile/contract(前 6 份报告)。
新探索 lane(2026-09-01:性能·并发 / 数据库·网络 / UIUX·产品,3 份报告)
已修复(本轮)
Conn.Auth()getter)TestConn_AuthSnapshotIsRaceFreeAndCoherent依赖写读调度重叠,高负载(Windows CI / 4C 满载)写者整窗饥饿误报「no overlap」→ fix(ws): 身份竞态守卫测试改确定性重叠,消除负载型 CI flake #2200(预绑身份使重叠成构造保证;-race x10 / GOMAXPROCS=1 x5 / make test 全绿;测试 only 零产品改动)待消化(按优先级)
bus.go:315-330已核实:ReadFrom 移出 b.mu 临界区,668ea5b)route_decision.go:285-310[P41.4] Hub agentteam routing residual pure slice (~716 LOC) #842/N7 SQL 聚合,Go 扫描仅 SQLite 兜底)ListTeamEvents无游标分页(agent_team_events.go:104Limit(10000))→ perf(agentteam): ListTeamEvents after_seq 游标分页 + 分页信封响应 #2176(afterSeq游标分页 +{items,page}信封 + OpenAPI/前端类型同步;payload->> SQL 过滤属审批/冲突查找项,已由 [P41.4] Hub agentteam routing residual pure slice (~716 LOC) #842/N7 SQL 聚合覆盖)OR ILIKE导致 GIN 索引失效(repository/message.go:167-183)→ perf(messagesearch): pg_trgm GIN 索引让消息搜索 ILIKE 分支可用索引 #2178(c85d16d:0071 迁移 pg_trgm + trigram GIN 部分索引,守卫幂等;真实 PG16 50k 行 EXPLAIN:Parallel Seq Scan 648.8ms → BitmapOr 双 GIN 0.248ms;dev 栈 migrations:71 已生效)edge-real.test.ts(真实 Edge 二进制 E2E)8/27 失败且 master 既存复现 → test(desktop): edge-real 信封解包兼容 ok/OK 双大小写(修 8 项既存失败) #2177(a70464e:测试助手unwrapEdgeResponse只认大写OK、EdgewriteSuccess写小写ok;改双大小写兼容后 27/27 两次独立全绿;生产edgeClient早已兼容两者,纯测试陈旧)testTimeout/hookTimeout: 30s,对齐 edge-real-ci 先例;workbench 全量复跑 1659/1659 全绿;重试预算仍 0)contact/service.go:304-321逐人 HLEN +app/events.go:674broadcastOnlineStatus 同款)→ perf(presence): 联系人列表与在线广播 presence 批量化(Redis pipeline 单次往返) #2181(c8f40bc:cache.AreOnlinepipeline 批量单次往返,两处消费;断言 1 次批量调用覆盖全部好友、IsOnline 零调用)store/sqlite_store.go:238)→ perf(sqlitestore): rows 表升级为完整持久层,消除每次写的全量 payload 重放 #2182(3021c6a:rows 表补settings/checkpoint两类成为完整持久层;rowsSeeded门控后跳过全量 payload 编码+UPSERT;存量库一次性收养迁移(settings 行为标记);既有三套 durability 测试零改动通过 + 3 个新回归;采用"补全 rows 再跳过 payload"而非裸跳过——后者会丢 Settings/Checkpoints)mgr.ResolveMembers缓存路径(handleTypingFrame),sqlmock+miniredis 断言 6 帧仅 1 次 DB 查询;节流已由 5min TTL 缓存隐含提供)PushReached=false补发闭环 → 已核实(dispatchsvc/agent_dispatch.go:302-313:保持 queued + outbox retry→dead-letter + RelayPushNoConn 指标)metrics.go:504client_pending_dropped_total +app/events.go:550-565PushPendingTaskWithEviction)scripts/verify/verify-i18n-deadkeys.pyfail-closed 门禁接入 checks.yml)scripts/verify/verify-i18n-terminology.pyfail-closed 棘轮门禁接入 checks.yml + verifier-map 登记;豁免「对话框」与 mockData/fixtures 数据域。遗留登记:ContactMainViews 成组硬编码中文待 i18n 化(数据/展示组)resolveWebDocumentsProps纯函数 + hub-documents query/create mutation + App.tsx 三 prop,real 模式 mock 静默兜底消除(4 契约测试,web 262/262)新取证前端遗留候选(2026-09-02,round-38 探索 Copernicus)
vendor-types.d.ts整文件 + desktopvite-env.d.ts手写 RSH 块(-122 行),类型收敛至官方 @types;四端 tsc + 受影响测试全绿<input>+ 1 处裸<textarea>(AddContactModal/StartConversationModal/ProjectChromeViews 等)待采用族组件ArtifactCard.module.css(123 行零引用);历史快照 ux-benchmark-2026-08.md 的提及保留为存档并发探索 lane(2026-09-02,第 4 份报告,Wegener)
待消化(并发)
parentModel共享字段竞态(orchestrator.go:41字段 +BuildCommand无锁写 :119-121 +ParseStream无锁读 :147;单 Adapter 服务多并发 run → 数据竞争 + 子代理继承错误父模型)→ fix(orchestrator): parentModel 改走 per-run context,消除共享态数据竞争 #2193(594d701):字段删除改 per-run context 注入(CtxModelKey,仿 CtxBudgetKey 同族);修复前 -race 复现 DATA RACE 留证,修复后干净SubAgentResultCollector三个 map 永不清理(subagent_collector.go:83-85,全仓无一处 delete)→ 方案:result_aggregator.go:262-286聚合完成两出口调用Release(parentID)agentcontrol/service.go:69、agent/dispatch_adapters.go:31-33、dispatchsvc/agent_dispatch.go:261,498、agent_dispatch_target_bound.go:38、app/events.go:554)→ 方案:扩Conn.Auth()getter 覆盖agents.Queuerun 终止后 channel 不回收process_executor_cancel.go:46-48,一行幂等判断可修)process_executor_hub_callback.go:290-301)数据库探索 lane(2026-09-03,第 7 份报告,Ampere)
待消化(数据库)
repository.RequeueClaimedOrphanTask条件 CAS 回滚 dispatched→queued + 三处重建失败路径接入 +orphan_claim_rolled_back_total指标;单测含缺陷回归「重建失败→回滚→下轮可重新认领」+ 真 PG16 集成 2 项;已流转任务绝不误改)UPDATE … WHERE token_hash=? AND revoked=false,输家计入复用指标);真 PG 并发测试修复前 4/8 双花、修复后恰 1 赢家。连带揭出并修复:0015 索引非唯一致 upsert 42P10(0072 迁移补唯一约束)(user_id, created_at DESC)索引:0013 复合索引 read 夹中致全量列表吃不到索引序,EXPLAIN 实证内存 quicksort+OFFSET;90 天窗口清已读、未读绝不触碰,PurgeReadNotifications单条 DELETE + 24h 后台循环 + 3 指标;0073 真机事务内 up×2+down 幂等验证后回滚不留痕)agentteam/agent_team_review.go:34,61,72,84,无 CAS;相邻已有UpdateTeamRunStatusIfNotTerminal原型)。方案:单条UPDATE … WHERE status='pending_review'CASagent_team_compete.go:281)。方案:IN 批量(索引已就位)message_reads死表(0007):全仓零引用、0 行,读回执走 session_members.last_read_seq。方案:DROP 迁移或注释标注替代物安全二轮探索 lane(2026-09-03,第 8 份报告,Lorentz)
待消化(安全二轮)
refresh_token_reuse_total,F2 信号成为可靠检测点?device_type=决定,传错 → 黑名单键与 refresh 检查键不匹配,并发窗口可复活会话(handler/auth.go:60)。方案:作用域改从 JWT claim 派生ErrDeviceOwnershipMismatch落到 500(对比 /edge 路径映射 400)→ 抢注他人 device_id 可致登录 DoS 且不可诊断(oidc.go:209-215)。方案:映射显式错误码jwtutil/tokendance.go:236-246)。方案:强制刷新最小间隔 + 负缓存service.go:125、oidc.go:232,CreatedAt 每次重置)。方案:保留初始签发时间 + 硬上限强制重登round-56 双探索新 lane(2026-09-02:前端质量二轮 Averroes + 错误处理/日志诚实 Epicurus)
文档卫生(Turing)→ 已全部消化于 #2202(2026-09-02 合并)
app/shared/src/ui/Pill.module.css(代码文件)、CHANGELOG.md:42ADR-021 疑应 ADR-023前端质量二轮(Averroes)——desktop 死代码富矿,清理优先
desktop/src/hooks/hubIntegrationEdgeApi.ts手写 fetch + 重复edgeRequestInit,错过 edgeClient 的 401 刷新重试/信封解包(createThread/startRun/cancelRun/decidePermission已有)。方案:桥接改调 edgeClient,删重复 initas any/@ts-ignore0 处;陈旧 TODO 0 处(3 条均带 issue 有意延期)错误处理/日志诚实(Epicurus)
handler/response.go:29 Fail()丢原始 err 且不打日志,160 处调用 157 处前后无 slog → 非 errcode 型 500 全不可排障。方案:FailErr(c, err)带日志变体 + 逐步替换markDeliverySent裸吞错(agent_dispatch.go:321)→ outbox 重试可致双发且无痕。方案:改用已带 Warn 的markDeliverySentPlan(S)token_provider.go:189-214,LastError 无消费者)。方案:失败采样 Warn + 挂 /health(S)orchestrator_dispatch_interceptor.go:177-182)→ panic 击穿整进程。方案:接pkg/safego(S)app/events.go:452-460,654、orphan_recovery、outbox、notification retention、ws manager pingAll)(M)agent_team_run.go:78-82)(S)if err != nil {}块 0;成功路径打 Error 0;errcheck 22 处全为清理类 defer网络韧性与超时卫生 lane(2026-09-02,Maxwell,第 9 份报告)
deploy.go:298-312裸exec.Command().Run()无 ctx 无-o ConnectTimeout/BatchMode;restTimeoutMiddleware 30s 只保客户端响应,handler goroutine+子进程继续跑到内核 TCP 重传上限 → 泄漏累积。方案:CommandContext 30-60s + ssh 硬化参数(S)router.go:33+165全局 Timeout(15s) 先包,attachments 组的 Timeout(30s) 派生自已带 15s deadline 的 ctx → 有效 15s,UploadRequestTimeout 形同虚设(S)middleware/timeout.go:24-58,WS 升级已有豁免先例而下载没有(S)outboundhttp.go:44-52、edgehttp.go:20-31、egress 同病;Edge→Hub callback 热路径(sem=10)突发必重建 TCP+TLS。方案:Clone DefaultTransport 设 per-host 32(S)handlers_events.go:138-176;hub 侧同型已有 10s deadline 先例(S)anthropic_sdk_request.go:70-75/openai 同款;同仓callback.go:418-426已有尊重 Retry-After 原型(S)s3_client.go:28-39(S)网络韧性探索 lane(2026-09-02,第 5 份报告,Fermat)
待消化(网络)
useHubIntegration.ts:386-392,443-449、hubIntegrationEdgeApi.ts:16-31,37-55、edgeClient.ts:123-139全文件 0 个 AbortController)→ edge 挂死时任务静默卡死进死信。方案:4 个 fetch 加AbortSignal.timeout(10s),既有 catch→failTask 自动闭合token_provider.go:57,126-131)+ 响应丢失后旧 token 已吊销 → 永久 401 锁死。方案:指数退避+±25% 抖动(复用 callback.go 模式);锁死根治(宽限/重新供凭据)为后续delivery_id(hubIntegrationMappers.ts:289附近),[网络] WS 帧/重连契约审计(seq/重放/去重全量核对) #2101 G2 去重在 WS 通道绕过(有 hubTaskId 兜底层)。方案:加一行转发 + 处理202 {deduplicated:true}← 推荐候选hubLifecycle.ts:73-79断线零延迟重连,无退避无上限;未上线,上线前必修)since游标死参数(hubClient.ts:369-371拼进 /client/ws 但 hub 从不消费;seq_id per-connection 语义错误)ReadTimeout=15s与 REST 中间件 30s 预算矛盾(httpserver/server.go:76,173)queueHeadAt不随 localStorage 持久化 → 重启后 TTL 失效(transport.ts:313-323,164,184-186)CX/产品探索 lane(2026-09-02,第 6 份报告,Sagan)
待消化(CX)
pages/tasks/shared.tsx:100,104,108无 onClick,菜单也不关)。方案:删菜单或 comingSoon 置灰ProjectTabViews.tsx:131-140,与真产物行同样式)。方案:整段隐藏或 comingSoonContactNav.tsx:63-65,双端常驻){onNewGroup && ...}门禁(对齐 onCreateTask 模式)+ TasksPage 2 条门禁断言aria.settingsMorekey(zh/en)+.iconAction死样式一并删除settings/shared.tsx:205-223;SettingValue 有同款防御注释,SettingPath 漏了)<button>语义误用无动作(AgentOpsItemParts.tsx:40,94,270)。方案:改<div>CI 完整性 lane(2026-09-03,round-52 实施中揭出,全部已修 → #2197)
go test | tee吞退出码(GHA 默认 shell 无 pipefail)+ 只数 PASS 行 → 集成 lane 带病绿数月。修复:显式PIPESTATUS[0]门禁m.Close()竞顺序(defers 先于 Cleanup),共享集成库被困旧 schema,其后全部测试连锁失败。修复:测试改临时库(全量迁移→round-trip→DROP)INSERT INTO devices(id)必撞user_id NOT NULL(PG 先 NOT NULL 检查后 ON CONFLICT 仲裁)。修复:占位补全 NOT NULL 列{items,page}信封,裸数组反序列化静默失败。修复:信封解析 + 显式错误早期 backlog(已完成,证据)
不适用/拒绝
安全探索 lane(2026-09-01,第 4 份报告)
已修复(本轮)
待消化(安全)
AuthFailClosedDefault=false(constants.go:138-145),但生产 compose 模板已硬编码 true + 启动门禁强制显式设置;本机start.sh未设该变量 → dev 原生 hub 实际走 fail-open。翻默认:生产零变化,自托管裸跑全变,需翻 4 处钉默认测试 + SECURITY.md(AH-SR-052)/05-deployment 文档。决策:是否翻默认middleware.RateLimit(AuthRegisterRateLimit=3/min、IP 维度,死常量复活)+ 全链路路由测试TestCloudEdgeRegisterRateLimitedByIP(前 3 次 200/第 4 次 429+Retry-After/换 IP 恢复);hub 已重建重启健康。后续项①②已消化 → fix(device): 设备注册频率限流补齐 + cloud_edge 每用户数量上限 #2191(8ce4d9b):/edge/devices/registerIP 频率限流同型接线 + 每用户 cloud_edge 数量上限(新错误码device_limit_exceeded);③本机 gosec 版本漂移致verify-hub-lint-ratchet.py本地误报 2 条 jwtutil G101(CI 绿,与代码无关)refresh_token_reuse_total指标,hub 已重建。遗留:第②步级联吊销属行为变更待决策;真 theft signal 需保留已轮换 hash(超最小方案,决策记录)