Files
Agent-System/.doc/ops/long-term/2026-09-19-audit-remainder.md
T
weichenandCursor a29e98096a refactor(web): create projects from one hook
Remember the new project id as soon as create succeeds so a later member failure retries members instead of creating a second project.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-19 12:09:28 +00:00

7.6 KiB
Raw Blame History

title, status, created, updated
title status created updated
2026-09-19 审计剩余项(medium/low,不挡已合入批 1–4) planned 2026-09-19 2026-09-19

2026-09-19 审计剩余项

动机

系统深度体检 的 C1–C4 与 H1–H10 已按四批合入 dev。下列 medium/low 仍真实存在,但不进入本轮发布回退。

成功标准

  • 每条有独立 short-term、负例测试或明确关闭理由后再标 done
  • 不把本清单自动写成 gap-matrix blocker

依赖

  • 批 1–4 已在 dev:844f757、08f4e0b、a2a49a6、d73bc79

暂不启动原因

本轮范围只到 critical + high。下列项要么是加固、要么需要产品/合规决策,要么改动面大于收益。

进展(2026-09-19,fix/audit-remainder-closeout)

ID 结果
M1 done。nosniff / DENY / Referrer-Policy / 本站 CSP。TestP0_SecurityHeaders
M2 done。TTL 钳到人工 15 分钟、小队 30 分钟;人工租约前 CheckHumanCanEdit。TestAcquireLeaseClampsHumanTTL
M3 done(本项可落地部分)。低置信度才做关键词改道;称呼取用户名。高置信度意图层改造不在本项把模板整段搬走
M4 done。parseDecimalID 拒绝 u_sess_*。TestParseDecimalIDRejectsSessionTokens
M5 done。Server.Start 不再二次启动并吞错。main 仍调用 Runtime.Start,该方法本身已幂等
M6 done(上限)。硬上限 4096,淘汰最久未访问。会话 id 仍由客户端提供,因为历史恢复按该 id 查找;改成只接受服务端签发会打断现有对话协议
M9 done。dev compose 不再声明 SEMANTIC_SUMMARY_REPLACE。dev=MiniMax-M2.7-highspeed、test/main=MiniMax-M3 确认为有意分叉,已写在 compose 注释
M10 done(写明路径,不放开门闩)。OpsCutoverPromotionPath:dev 观察后用晋升回执写 test,再写 main。ValidateOpsCutover 仍拒绝 test/main
M13 done。SQL 迁到 deploy/postgres/archive/pre-goose/。代码与脚本无引用
M14 done。冻结计划找不到职责行则报错;显式空三权仍为 0。TestResolveDocTask_NoneDutiesStayZero
L1 done。健康检查 2 秒缓存 + 2 秒 DB 超时
L2 done。SSE marshal 失败写 event: error 帧
L3 done。ReplayPlan.Digest 含 DryRun;dry-run 摘要不能授权 apply
M15 done。生产 claimSQL 与 MemoryBus 共用 VersionClaimable:版本 0 可领,版本化事件不能跳过 checkpoint。checkpoint 只前进。TestVersionClaimableMatchesMemoryBusGap、TestGapDoesNotSkipVersion
H3 负例 done。TestListChatSessions_CrossUserIs403
FE 缓存 done(版本字段)。窗口缓存写入 {schema,data},无 schema 的旧载荷丢弃。window cache: 无 schema
FE lucide 关闭理由:package-lock.json 锁定 lucide-react@1.42.0,来源 registry.npmjs.org,带 integrity。^1.16.0 是合法的 1.x 范围,不是来源不明的包
M7 done(出站意图 + 同键重放)。document_content_projections 与账本同一事务写入;投影成功才销账。TestDocRevision_PatchOrder_RetryProjectsWithoutSecondLedgerCommit。账本库与正文库仍不是一个 SQL 事务,进程退出后靠未投影行重放,不靠客户端记忆
FE App.tsx 部分。登录壳不再静态引用重模块。本地缓存、登录同步、文档补水、服务端文档同步、生命周期、发送消息、块编辑、对话流/任务流重试、卡片动作和立项已分别抽出。工作台壳与成员管理仍在 App.tsx
H1-del 关闭理由:allowLegacyTestPrincipal 仍被 AllowInMemory && ContextDbHost=="" 的 dev/test 内存测试使用。删除会把这批测试变成未登录 401。保留告警,删除另开、先改测试夹具

仍开放:rdev P3 三样本真 PI、首次加载 U1/U6/U7、dev 容器重建与治理库 PG。公式引擎已离开入口包(index-j0BIrjIR.js 737.38 kB,br 170,451 B,包内无 katex),U3 仍缺浏览器瀑布,不关。P4 键名空间化已在本分支落地:新清单用带前缀的任务键,旧键与旧 doc_id 仍可读,TestPublishedTaskKeysAreNamespacedAndDisjoint。意图短语仍输出旧键,执行路径按别名接上。P2 规划界面已折叠长阶段、可批量纳入人工审批,并在选中 rdev 时提示 CDO 前置。U4 登录扇出收口仍有效,浏览器请求次数证据还没有。2026-09-19 在 fix/audit-remainder-closeout 跑过 cd web && npm test && npm run build:node:test 414 pass / 0 fail,vitest 32 pass;入口 index-BFf6n8IA.js 1,005.01 kB,br 235,285 B。CURRENT 文首 schema 52 与三套容器一致,00053 要等重建后才升。H2 批注/审计的项目成员检查在 Postgres 上走 RequireProjectAccess;内存授权器在无库时把任意正用户 id 视为成员,这是 TestAuthorizeDocRevision_ReviewerAndNonMemberCannotWrite 的隔离前提,不能改成默认拒绝。H2 的 HTTP 负例因此要在 TEST_DATABASE_URL 上补,本机未设置该变量。M7 的投影意图已随账本提交(goose 00053);容器 schema 仍是 52,要等占槽重建后才升到 53。

红线关闭(不是实现):

  • SWBOOT-10:保持 fail-closed stub。未获独立授权前不接真实仓库写入。
  • FAV live:禁止整支 merge;FAV_DEGRADED_READ=false;live 需要各阶段至少 7 天观察窗,本轮不放量。
  • D7:合规签字前禁止按留存口径物理删除。盘点已完成,口径仍 pending-compliance-signoff。

清单

ID 项 位置 说明
M1 安全响应头 internal/server/server.go CORS 中间件 补 nosniff / X-Frame-Options / Referrer-Policy / 收敛 CSP
M2 租约 TTL 无上限 handlers.go AcquireLease clamp 到 DefaultHumanLeaseTTL,Acquire 前校验编辑权
M3 关键词改写意图 + 硬编码「张工」 internal/coordinator/engine.go 移到意图层并加置信度;称呼取用户名
M4 fmt.Sscanf 解析 u_sess_* 得到 UserID=0 同上 统一数字 ID
M5 Runtime.Start 双调用且吞错 cmd/server/main.go 与 server.go sync.Once 或删 Server.Start 内调用
M6 sessions 无硬上限 server.go cleanStaleSessionsLocked LRU + 服务端发 session id
M7 修订三阶段写无事务 document_revision_handlers.go 已落地:00053 投影意图与账本同事务;成功后销账。见进展表
M9 SEMANTIC_SUMMARY_REPLACE 只在 dev compose 声明;dev/test 默认模型不一致 compose 删未接线 flag 并钉死测试;确认 M3 是否刻意
M10 cutover 只允许 dev internal/events/cutover.go 写明 test/main 切换路径
M13 deploy/postgres/migrations/ 死目录 与 goose 重复 确认无外部依赖后归档
M14 ResolveDocTask 静默 0 值三权 orchestrator.go 找不到 duties 应报错
M15 PG 投递允许乱序,MemoryBus 有 gap dispatcher.go vs bus.go 对齐测试替身与生产顺序语义
L1 health 每次打两次 DB handlers.go 短缓存 + 超时
L2 SSE marshal 错误被吞 task_run_handlers.go 失败写 error 帧
L3 ReplayPlan digest 不含 DryRun replay.go 纳入 digest
H1-del 删除 legacy user-id=1 兜底 auth_middleware.go 已加日志;删除前盘点调用方
FE App.tsx 巨石、localStorage 无版本、lucide 版本确认 web/ 拆 hook;缓存加 version;确认包来源

相关链接