Files
Agent-System/.doc/ops/short-term/2026-09-22-t20-design-items.md
T
WeiCHEN 485572dce2 docs(ops): T20 W4 hardening design decisions
Record recommended approaches, risks, acceptance, and product/env
blockers for audit-remainder design items; cross-link F5/I8 to lowrisk.
2026-09-22 21:29:47 +08:00

6.0 KiB
Raw Blame History

title, task_id, status, created, updated, owner, task_type, task_tier, policy_revision, branch, worktree, base_dev_sha, write_scope, allowed_environments, head_sha, mutex, review_state, integration_state, deployment, cleanup, cleanup_owner, cleanup_trigger, remote_sync
title task_id status created updated owner task_type task_tier policy_revision branch worktree base_dev_sha write_scope allowed_environments head_sha mutex review_state integration_state deployment cleanup cleanup_owner cleanup_trigger remote_sync
T20 设计项决策批(W4) t20-design-items-2026-09-22 done 2026-09-22 2026-09-22 Cursor research small AGENTS.md + 2026-09-21-policy-registry @ base_dev_sha feature/t20-design-items-2026-09-22 .worktrees/t20-design-items-2026-09-22 364ed7f1a3
.doc/ops/short-term/2026-09-22-t20-design-items.md
.doc/system-design/2026-09-22-t20-hardening-design.md
.doc/system-design/README.md
.doc/remediation/INDEX.md
t20-design-docs pending pending not_required pending 独立集成/维护执行者 tip 为 origin/dev 祖先且无进程占用后复查 remove not_requested

T20 设计项决策批(W4)

设计正文(taxonomy:system-design/):../../system-design/2026-09-22-t20-hardening-design.md。

用户目标与授权

  • 用户目标:对 audit-remainder T20 增补区 中需设计的项产出推荐做法 / 风险 / 验收 / 是否卡产品或鉴权,非完整实现(除非 trivial 且安全)。
  • 交付终点:本任务文 + 系统设计决策文;本 worktree 提交;不 push;不合入;不改业务代码。
  • 明确禁止:实现 B1/B3/B4/B5/B7/B11/F1/F4/F7/F8/I1/I4/I6;不操作共享环境;不 push;I6 不写宿主调度。
  • I6 仅文档化;实施需环境授权。

范围与非目标

ID 项 本批产物
B1 XFF trusted proxy 设计决策
B3 docgov/docrevision 锁拆分 设计决策
B4 statement_timeout 分级 设计决策
B5 chat/turn 原子性(已有补偿) 设计决策(不重做补偿)
B7 graceful shutdown vs AGENT_TIMEOUT 设计决策
B11 GET→POST EventSource 设计决策
F1 useChatWindow generation 所有权 设计决策
F4 adminResetPassword 产品选择 设计决策(卡产品)
F7 HttpOnly cookie 设计决策(卡鉴权专项)
F8 poll dedupe + App.tsx stats generation 设计决策
I1 non-root + limits 设计决策
I4 init mount 统一 设计决策
I6 backup 调度 仅文档;卡环境授权

不重复(已在低风险批)

ID 状态 交叉链接
F5 ErrorBoundary 分栏 已在 W2 实现(AppShell 聊天栏/文档栏各包一层) t20-lowrisk-hardening · worktree .worktrees/t20-lowrisk-hardening-2026-09-22
I8 short 跳过外网 docker 已在 W2 实现(testing.Short() Skip) 同上

本批不再设计或实现 F5/I8。

决策一览

ID 推荐 卡产品/鉴权? 实施前置
B1 默认忽略 XFF;仅 TRUSTED_PROXY_CIDRS 命中 RemoteAddr 时按 hops 解析 否(运维配置) 配置项 + 负例测试
B3 锁外 hydrate;按 doc_id 分锁;DB 写用短临界区 + fencing 否 竞态基准 + 回归
B4 主池默认 statement_timeout=30s;长任务 SET LOCAL 抬高 否 池工厂统一入口
B5 保留 FailChatTurn 补偿;补齐可观测与孤儿清理;同事务列为可选后续 否 指标/扫描即可先落地
B7 独立 SHUTDOWN_DRAIN(默认可对齐 AGENT_TIMEOUT);停机拒新任务;compose grace 对齐 否(运维调参) compose/env 对齐
B11 生产仅 POST;GET 默认 405 且永不读 message query 否 前端已 POST;后端收紧
F1 所有窗口写路径共用 generation + abort;过期响应禁 setState/写缓存 否 单测扩面
F4 隐藏按钮直至真实 API;或产品选「服务端生成临时口令 + 强制改密」 是(产品) 产品选路径后再编码
F7 专项:Set-Cookie HttpOnly + SameSite + 全局 401 清会话 是(鉴权专项) 独立授权/ADR
F8 统一 in-flight Map 按 key 去重;stats 绑 generation;blob revoke 否 前端小改
I1 Dockerfile USER + compose mem/cpus;先非 privileged 否(运维;部署共享环境另授权) 卷权限验证
I4 三环境统一挂 extensions_init.sql;表只走 goose 否 全新卷冒烟
I6 systemd/cron 调 backup-system-db.sh;RPO 60m 是(环境授权) 仅文档;不实施

详细论证见 2026-09-22-t20-hardening-design.md。

步骤与验收

  1. 核对代码与 audit-remainder 条目
  2. 交叉确认 F5/I8 在 lowrisk worktree
  3. 写入 short-term + system-design;INDEX/README 回链
  4. Conventional Commit(不 push)
范围 命令 预期 实际
文档 short-term + system-design + 索引 可审、taxonomy 正确;无业务行为变更 本分支提交

收口与交接

  • review_state=pending;integration_state=pending;deployment=not_required;remote_sync=not_requested。
  • 实施跟进:可并行小改(B1/B11/F1/F8、F4-A 隐藏按钮)与需决策项(F4-B/F7/I6)拆批;B3/B4/B7/I1/I4 需回归与环境冒烟。
  • 待用户决策:F4 选隐藏 vs 真实临时口令 API;F7 鉴权专项授权;I6 目标环境与备份路径授权。
  • cleanup:合入后由独立维护者复查 remove。

相关链接