From 1313cf19b1425793ececc5a60c08cdc422071a4e Mon Sep 17 00:00:00 2001 From: weichen Date: Sun, 20 Sep 2026 10:37:08 +0000 Subject: [PATCH] docs(ops): archive 2026-09-20 system triage audit and P0 remediation plan Claim P0 hotfixes waves, correct schema snapshot to 57, and park non-P0 findings in long-term backlog. Co-authored-by: Cursor --- .doc/audit/2026-09-20-system-triage-audit.md | 68 +++++++++++++++++++ .doc/audit/INDEX.md | 8 +++ .doc/ops/CURRENT.md | 24 ++++--- .../long-term/2026-09-19-audit-remainder.md | 34 ++++++++++ .doc/ops/short-term/2026-09-20-p0-hotfixes.md | 49 +++++++++++++ .../2026-09-20-p0-remediation-plan.md | 51 ++++++++++++++ .doc/remediation/INDEX.md | 1 + 7 files changed, 226 insertions(+), 9 deletions(-) create mode 100644 .doc/audit/2026-09-20-system-triage-audit.md create mode 100644 .doc/ops/short-term/2026-09-20-p0-hotfixes.md create mode 100644 .doc/remediation/2026-09-20-p0-remediation-plan.md diff --git a/.doc/audit/2026-09-20-system-triage-audit.md b/.doc/audit/2026-09-20-system-triage-audit.md new file mode 100644 index 00000000..44cd6f95 --- /dev/null +++ b/.doc/audit/2026-09-20-system-triage-audit.md @@ -0,0 +1,68 @@ +--- +title: "2026-09-20 系统全量体检审计" +status: done +created: 2026-09-20 +updated: 2026-09-20 +severity: high +--- + +# 2026-09-20 系统全量体检审计 + +## 现象 + +在 `production_ready=yes`、dev/test/main 健康、近期 triage 已合入的前提下,对全系统做只读深度体检,发现若干**未写入 gap-matrix 的 critical/high**,以及一批 medium/low 加固项。 + +方法:四路并行深潜(后端 Go、安全鉴权、前端 web、基础设施)+ 本机实证(goose 版本表、容器 health、口令登录、代码交叉复核)。 + +## 根因分析(P0 / critical,均已实证) + +| ID | 发现 | 位置 | 证据 | +|----|------|------|------| +| P0-MIG | 迁移序号空洞 00054;`chat_summaries` 建表与 summarizer 写失败修复滞留未合入分支 | `feature/capability-enablement-impact-plan@848a0457`;dev 代码仍读写不存在表 | `goose_db_version` 53→55→57 跳号;`to_regclass('chat_summaries')` 空;`summarizer.go:119` `_ = err` | +| P0-IDOR-PREF | 偏好写入信任请求体 `user_id`,无归属校验 | `internal/server/handlers.go:508-537` | 无 `requireAuthenticatedUser` 比对 | +| P0-IDOR-SESS | `handleGetProject` 以 `callerUserID=0` 调会话,归属校验被跳过 | `server.go:458-463`;`handlers.go` / `project_handlers.go` | `if callerUserID > 0` 守卫 | +| P0-IDOR-RECAT | 重分类无会话归属;空 `session_id` 触及全库消息 | `chat_recategorize_api.go`;`ctxmgr/recategorize.go` | `WHERE ($1 = '' OR session_id = $1)` | +| P0-PANIC | taskrun 订阅发送在锁外,Unsubscribe `close` 后向 closed channel 发送 panic | `taskrun/manager.go:481-497` vs `:590` | select default 不挡 closed;全仓非测试 `recover()`=0 | +| P0-RACE | 同步 `POST /chat` 不取 `execMu`,与 SSE 并发 data race | `handlers.go:240` vs `sse.go:341` | 09-19 C2 残留半修 | +| P0-CRED-BACKUP | 三环境 DB 口令硬编码进仓库;生产口令与脚本一致可登录 | `scripts/backup-system-db.sh:43-56` | 实测 `prod_highly_secure_db_pass` 可连 main | +| P0-CRED-PUSH | push 脚本把 token 拼进 URL,`ps` 可见 | `scripts/git-push-dev.sh:23` | `https://oauth2:${TOKEN}@...` | +| P0-XSS | 块编辑器 math 错误分支未转义 | `BlockEditorModal.tsx:206`;`MathBlockView.tsx:20` | catch 裸拼 + `dangerouslySetInnerHTML` | + +### 环境与分支脱节(本轮不做晋升,记 backlog) + +| ID | 发现 | 证据 | +|----|------|------| +| ENV-MAIN-DRIFT | main 分支 goose 最高 00025,main 库 schema 52;灾备从分支重建不可复现 | `git ls-tree main`;`goose_db_version` MAX=52 | +| ENV-TEST-DRIFT | test 分支最高 00056,test 库已 57 | 实测 | +| DOC-SCHEMA | CURRENT 写 dev schema 56,实测 57 | health JSON | +| GOOSE-DUP56 | dev 库 version_id=56 记账两行(id 57/58,间隔 2ms) | SQL 取证 | + +## 严重度 + +- **critical / P0**:上表 P0-*(本轮整改) +- **high / medium / low**:见下方「非 P0 清单」与 [long-term](../ops/long-term/2026-09-19-audit-remainder.md) 2026-09-20 增补区 + +## 关联整改 + +- Remediation: [../remediation/2026-09-20-p0-remediation-plan.md](../remediation/2026-09-20-p0-remediation-plan.md) +- Short-term: [../ops/short-term/2026-09-20-p0-hotfixes.md](../ops/short-term/2026-09-20-p0-hotfixes.md) + +## 证据 + +- `go vet ./...` 零告警(2026-09-20) +- `go test -short ./...`:仅 `TestPiAgentDockerBuildContext_RunnerModulesPresent` 因外网镜像源 EOF 失败,属测试卫生 +- 三环境 health:dev/test schema **57**,main **52**;events `:8088`/`:8089`/`:8090` ok +- 四路深潜交叉:IDOR×3、XSS、凭证、迁移空洞均被 ≥2 条路径或本机取证命中 + +## 非 P0 清单(摘要,详 long-term) + +**后端**:XFF 限流可绕过;events `cancelFns` 只增不减;docrevision/docgov 全局锁内 DB I/O;Shutdown 5s vs 长任务;`idemLocks` 无界;SSE query 传消息;C1 缓存不失效;chat 落库非原子等。 + +**前端**:`useChatWindow` 切会话竞态;PLAN_CONFIRM 无 try/catch;turn Map 只增不减;重置密码死功能;ErrorBoundary 仅顶层;SSE `\r\n`;token localStorage + 无全局 401 登出等。 + +**基础设施**:容器 root、无资源限制;健康检查路径不一致;main events 挂 shared-net;init 三套;Dockerfile Go 1.23 基镜像;backup 无定时;main 分支对齐晋升专项。 + +## 开放问题 + +- capability 分支合入后 00054 重编号为 00058 是否与其他未合并旁支再撞号?(当前仅该分支占用 54) +- main 分支对齐晋升时 00057 会对存量项目做不可逆改名——晋升前需预演清单 diff --git a/.doc/audit/INDEX.md b/.doc/audit/INDEX.md index e8200a2d..dd355ad4 100644 --- a/.doc/audit/INDEX.md +++ b/.doc/audit/INDEX.md @@ -13,6 +13,14 @@ ## 核心文档(按阅读顺序推荐) +### 系统全量体检(2026-09-20) + +**文件**: [2026-09-20-system-triage-audit.md](./2026-09-20-system-triage-audit.md) + +**结论**: 迁移 00054 断链 + 三项 IDOR + taskrun channel panic + 凭证硬编码/暴露为 P0;main 分支与生产 schema 脱节记 backlog。 + +**整改**: [P0 热修方案](../remediation/2026-09-20-p0-remediation-plan.md) · [short-term](../ops/short-term/2026-09-20-p0-hotfixes.md) + ### 可选职责空审核人 CreateOrGetDocument FK(2026-09-17) **文件**: [2026-09-17-docgov-optional-duty-null-fk.md](./2026-09-17-docgov-optional-duty-null-fk.md) diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 1b493cc5..edaf552c 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -1,19 +1,24 @@ # 当前焦点 **更新**: 2026-09-20 -**production_ready**: yes(门禁 B1–B4 已签;dev schema 56 / test schema 56(beta.6),main schema 52。不把 fallback change report 写成完整 PI) +**production_ready**: yes(门禁 B1–B4 已签;实测 dev/test schema **57**、main **52**。P0 热修进行中:迁移 00058 / IDOR / panic / 凭证。不把 fallback change report 写成完整 PI) ## 焦点 -1. **2026-09-20 激活后职责改派 + 成员可对话 done**:合入 `9d98f1ae`;test rebuild;陈威 chat PASS、PATCH 改派 PASS;见 [报告](../test-reports/2026-09-20-post-activation-duty-reassign-member-chat-test-report.md)。 -2. **2026-09-20 test 环境三问题整改 done**:全局项目名唯一、成员会话可见、资产 raw 预览回退;test schema **57**;见 [报告](../test-reports/2026-09-20-test-env-triage-fixes-test-report.md)。 -3. **2026-09-20 dev→test 晋升完成 (rc-v1.0.0-beta.6)**:合入 bug-hunt permissions/uploads;test `:8081` schema 曾为 **56**,现已随 triage 升至 **57**;助手真实对话 + 小队 intake + 12 项回归 **PASS**(见 [test-report](../test-reports/2026-09-20-test-env-beta6-assistant-squad-test-report.md))。 -4. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 观察窗证据驱动;`FAV_DEGRADED_READ=false`;项目 143 只读;SWBOOT-10 保持 fail-closed stub;D7 待合规签字 +1. **2026-09-20 P0 系统体检热修 in_progress**:迁移断链(capability→00058)、三项 IDOR、taskrun panic/race、凭证脚本 + main 口令轮换;见 [审计](../audit/2026-09-20-system-triage-audit.md) · [整改](../remediation/2026-09-20-p0-remediation-plan.md) · [short-term](./short-term/2026-09-20-p0-hotfixes.md)。 +2. **2026-09-20 激活后职责改派 + 成员可对话 done**:合入 `9d98f1ae`;test rebuild;陈威 chat PASS、PATCH 改派 PASS;见 [报告](../test-reports/2026-09-20-post-activation-duty-reassign-member-chat-test-report.md)。 +3. **2026-09-20 test 环境三问题整改 done**:全局项目名唯一、成员会话可见、资产 raw 预览回退;test schema **57**;见 [报告](../test-reports/2026-09-20-test-env-triage-fixes-test-report.md)。 +4. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 观察窗证据驱动;`FAV_DEGRADED_READ=false`;项目 143 只读;SWBOOT-10 保持 fail-closed stub;D7 待合规签字;**P0 期间不改 `production_ready`** ## 并行认领 | owner | task | branch | worktree | mutex | status | |-------|------|--------|----------|-------|--------| +| Cursor-Auto | 2026-09-20-p0-hotfixes(Wave 0 文档) | docs/p0-triage-2026-09-20 | - | docs | in_progress | +| Cursor-Auto | 2026-09-20-p0-capability-00058 | fix/capability-merge-00058-2026-09-20 | - | infra+chat | planned | +| Cursor-Auto | 2026-09-20-p0-idor | fix/authz-idor-hotfixes-2026-09-20 | - | authz | planned | +| Cursor-Auto | 2026-09-20-p0-runtime-stability | fix/runtime-panic-races-2026-09-20 | - | taskrun+chat+web | planned | +| Cursor-Auto | 2026-09-20-p0-credentials | fix/credential-hardening-2026-09-20 | - | ops+infra | planned | | Cursor-Auto | 2026-09-20-post-activation-duty-reassign-member-chat | fix/post-activation-duty-reassign-member-chat | - | projectworkflow+authz+web | done | | Cursor-Auto | 2026-09-20-test-env-triage-fixes | fix/test-env-triage-2026-09-20 | - | projectworkflow+chat+assets | done | | Cursor-Auto | 2026-09-20-test-env-beta6-verification | docs/test-env-beta6-verification | - | infra+docs | done | @@ -154,7 +159,7 @@ | holder | phase | since | scope | queue | |--------|-------|-------|-------|-------| -| - | idle | 2026-09-20 | duty-reassign 合入 + test rebuild + 陈威 chat/改派 PASS;槽位释放 | - | +| - | idle | 2026-09-20 | P0 Wave 1–3 排队待占;duty-reassign 已释放 | fix/capability-merge-00058 → fix/authz-idor → fix/runtime-panic-races → fix/credential-hardening | **phase**: `idle` | `merging` | `smoke` | `e2e` @@ -164,9 +169,9 @@ | 环境 | 端口 | schema | 状态 | |------|------|--------|------| -| dev | 8080 | **56** | healthy(含 bug-hunt `00055`/`00056`;`pi-agent`;events `:8088`) | -| test | 8081 | **56** | healthy(2026-09-20 `rc-v1.0.0-beta.6`;goose `00056`;CSP `frame-src 'self' blob:`;pi-agent `:18866`;events `:8089`;验证后已 restore S1) | -| main | 8000 | **52** | healthy(`env=main` app+events 对齐;events 先 healthy 后启 app;consumer modes 全 off;Wave 1 已验证) | +| dev | 8080 | **57** | healthy(实测;goose 跳过 00054;P0 Wave 1 将升 **58**;`pi-agent`;events `:8088`) | +| test | 8081 | **57** | healthy(含 triage `00057`;分支树最高仍可能为 56——晋升前须对齐;events `:8089`) | +| main | 8000 | **52** | healthy(分支树仅到 00025,环境超前——对齐晋升记 backlog;events `:8090`) | ## SSOT @@ -175,6 +180,7 @@ | 文档总地图 | [../README.md](../README.md) | | 模块完成度 | [FEATURE-MATRIX](../status/FEATURE-MATRIX.md)(Wave 0 已校准契约与冻结边界) | | 发布缺口 | [gap-matrix](../remediation/gap-matrix.md)(`production_ready=yes`;Wave 0 IAM 只读未发现旁路) | +| 2026-09-20 系统体检 | [audit](../audit/2026-09-20-system-triage-audit.md) · [P0 整改](../remediation/2026-09-20-p0-remediation-plan.md) · [short-term](./short-term/2026-09-20-p0-hotfixes.md) | | 连续性审计/计划 | [audit](../audit/2026-09-16-feature-matrix-production-readiness-audit.md) · [remediation](../remediation/2026-09-16-feature-matrix-production-readiness-plan.md) · [Wave 0 任务](./short-term/2026-09-16-feature-matrix-wave0-calibration.md) | | 测试报告 | [test-reports/](../test-reports/) | | dev→test 晋升前复核 | [research](./research/2026-09-19-pre-test-promotion-review.md)(2026-09-19 只读;静态门禁过,容器未 rebuild,暂不合并) | diff --git a/.doc/ops/long-term/2026-09-19-audit-remainder.md b/.doc/ops/long-term/2026-09-19-audit-remainder.md index 805f456b..b66c2ad1 100644 --- a/.doc/ops/long-term/2026-09-19-audit-remainder.md +++ b/.doc/ops/long-term/2026-09-19-audit-remainder.md @@ -83,3 +83,37 @@ updated: 2026-09-19 - 审计:[../../audit/2026-09-19-system-deep-audit.md](../../audit/2026-09-19-system-deep-audit.md) - 批 1–3 报告:`.doc/test-reports/2026-09-19-audit-b*.md` + +## 2026-09-20 系统体检增补(非 P0,不挡本轮热修) + +> 来源:[../../audit/2026-09-20-system-triage-audit.md](../../audit/2026-09-20-system-triage-audit.md)。P0 项走 [../../remediation/2026-09-20-p0-remediation-plan.md](../../remediation/2026-09-20-p0-remediation-plan.md),不写入本表为「已关闭」。 + +| ID | 项 | 位置 | 说明 | +|----|----|------|------| +| T20-B1 | 登录限流信任 XFF 首跳 | `login_rate_limit.go` | 仅在可信代理后启用;否则用 RemoteAddr | +| T20-B2 | events `cancelFns` 只增不减 | `events/worker.go` | claim 完成后从切片移除 | +| T20-B3 | docrevision/docgov 全局锁内 DB I/O | `docrevision/*` `docgov/lease.go` | 锁外 hydrate / 按文档分锁 | +| T20-B4 | 主库连接池无 statement_timeout | `bizdev/service.go` | 对齐 kb 池调优 | +| T20-B5 | chat 消息与 turn 非原子 | `chat/session.go` | 同事务或补偿明确 | +| T20-B6 | `idemLocks` map 永不清理 | `taskrun/manager.go` | TTL 或终态回收 | +| T20-B7 | Shutdown 5s vs 长任务 | `cmd/server/main.go` | 拉长优雅退出或拒绝新任务 | +| T20-B8 | `hasMessageScopeColumns` 无缓存 | `message_scope_io.go` | 启动缓存一次 | +| T20-B9 | C1 记忆写入不失效缓存 | `chat_memory.go` | upsert 后 Invalidate | +| T20-B10 | SSE 头先写再 Subscribe | `task_run_handlers.go` | 对齐 sse.go 顺序 | +| T20-B11 | GET chat/stream 消息走 query | `sse.go` | 改 POST body | +| T20-F1 | `useChatWindow` 切会话竞态 | `useChatWindow.ts` | loadOlder 等加 generation/abort | +| T20-F2 | PLAN_CONFIRM 无 try/catch | `useCardActions.ts` | 失败复位 executing | +| T20-F3 | turn Map 只增不减 | `useTurnRuntime.ts` | removeTurn 接线 | +| T20-F4 | 重置密码死功能 + 硬编码文案 | `UsersSection.tsx` | 接真实 API 或隐藏按钮 | +| T20-F5 | ErrorBoundary 仅顶层 | `main.tsx` | 栏级边界 | +| T20-F6 | SSE 帧不兼容 `\r\n` | `chatStream.ts` | 规范 CRLF | +| T20-F7 | token 存 localStorage + 无全局 401 | `auth.ts` | HttpOnly cookie 专项 | +| T20-F8 | blob URL / 轮询叠加 / 统计迟到 | 多处 | 加固批 | +| T20-I1 | 容器 root、无 mem/cpu 限制 | compose / Dockerfile | 非 root + resources | +| T20-I2 | 健康检查路径三环境不一致 | compose | 统一 `/ready` | +| T20-I3 | main events 挂 shared-net | `docker-compose.main.yml` | 对齐 dev/test | +| T20-I4 | init 策略三套分叉 | compose volumes | 统一 extensions_init | +| T20-I5 | Dockerfile Go 1.23 基镜像 | `deploy/app/Dockerfile` | 钉 1.27.1 | +| T20-I6 | backup 无定时调度 | ops | systemd/cron;RPO 60m | +| T20-I7 | **main 分支对齐晋升专项** | git main vs schema 52 | 独立授权;含 00057 改名预演 | +| T20-I8 | 默认 short 测依赖外网 docker 镜像 | `pi_runner_image_test.go` | Short 跳过或本地 fixture | diff --git a/.doc/ops/short-term/2026-09-20-p0-hotfixes.md b/.doc/ops/short-term/2026-09-20-p0-hotfixes.md new file mode 100644 index 00000000..6bb230bf --- /dev/null +++ b/.doc/ops/short-term/2026-09-20-p0-hotfixes.md @@ -0,0 +1,49 @@ +--- +title: "2026-09-20 P0 热修(迁移 / 越权 / 稳定性 / 凭证)" +status: in_progress +created: 2026-09-20 +updated: 2026-09-20 +owner: Cursor-Auto +branch: docs/p0-triage-2026-09-20 +worktree: "-" +mutex: docs +--- + +# 2026-09-20 P0 热修 + +## 目标 + +关闭系统体检发现的 P0 critical:迁移断链、三项 IDOR、进程 panic/race、凭证泄漏与生产口令轮换。 + +## 范围 + +- Wave 0–4(见 [整改方案](../../remediation/2026-09-20-p0-remediation-plan.md)) +- 后续实现分支:`fix/capability-merge-00058-2026-09-20`、`fix/authz-idor-hotfixes-2026-09-20`、`fix/runtime-panic-races-2026-09-20`、`fix/credential-hardening-2026-09-20`、`docs/p0-closeout-2026-09-20` + +## 非目标 + +- main 分支对齐晋升 +- FAV / SWBOOT-10 / D7 / MULTI_INTENT full + +## 步骤 + +1. [x] Wave 0:审计与整改文档、CURRENT 认领、long-term 增补 +2. [ ] Wave 1:capability 合入 + 00058 + rebuild +3. [ ] Wave 2:三项越权 +4. [ ] Wave 2b:panic/race/recover/XSS +5. [ ] Wave 3:凭证 + 口令轮换 +6. [ ] Wave 4:测试报告与收口 + +## 验收标准 + +- [ ] 见整改方案验收清单 + +## 相关链接 + +- Audit: [../../audit/2026-09-20-system-triage-audit.md](../../audit/2026-09-20-system-triage-audit.md) +- Remediation: [../../remediation/2026-09-20-p0-remediation-plan.md](../../remediation/2026-09-20-p0-remediation-plan.md) +- Test report: (Wave 4) + +## 证据 / 备注 + +(各波次合入 commit 与健康输出) diff --git a/.doc/remediation/2026-09-20-p0-remediation-plan.md b/.doc/remediation/2026-09-20-p0-remediation-plan.md new file mode 100644 index 00000000..20082363 --- /dev/null +++ b/.doc/remediation/2026-09-20-p0-remediation-plan.md @@ -0,0 +1,51 @@ +--- +title: "2026-09-20 P0 热修整改方案" +status: in_progress +created: 2026-09-20 +updated: 2026-09-20 +--- + +# 2026-09-20 P0 热修整改方案 + +## 背景 + +链到 [audit](../audit/2026-09-20-system-triage-audit.md)。`production_ready=yes` 不变;本方案关闭现场 critical,不自动回退门禁。 + +## 目标 + +1. 迁移链连续:capability 分支合入,`00054`→`00058`,dev schema=58,`chat_summaries` 可持久化 +2. 三项 IDOR 负例 403;真实双用户 curl PASS +3. taskrun channel 竞态不再 panic;同步 chat 取 `execMu`;关键 goroutine 有 recover;math XSS 转义 +4. backup/push 脚本不再硬编码/暴露凭证;main DB 口令已轮换且健康 + +## 分波次计划 + +| 波次 | 分支 | 内容 | 验收 | +|------|------|------|------| +| Wave 0 | `docs/p0-triage-2026-09-20` | 审计/整改/short-term/CURRENT/long-term | 文档入库 | +| Wave 1 | `fix/capability-merge-00058-2026-09-20` | merge capability + 重编号 00058 + rebuild | health schema=58;表存在 | +| Wave 2 | `fix/authz-idor-hotfixes-2026-09-20` | 三项越权 + 负例测试 | curl 403 ×3 | +| Wave 2b | `fix/runtime-panic-races-2026-09-20` | panic/race/recover/XSS | `-race` + npm test | +| Wave 3 | `fix/credential-hardening-2026-09-20` | 脚本加固 + main 口令轮换 | 旧口令失败、新口令成功;ps 无 token | +| Wave 4 | `docs/p0-closeout-2026-09-20` | 测试报告 + gap-matrix 收口 | 报告七段齐全 | + +## 验收标准 + +- [ ] `curl :8080/health` → `schema_version=58`;`chat_summaries` 存在 +- [ ] 偏好跨用户写 / 他人 session 读 / 空 session 重分类 → 403 或 400 +- [ ] `go test -race` taskrun/chat/server short PASS;math XSS 单测 PASS +- [ ] backup 脚本无硬编码口令;push 不把 token 放 URL +- [ ] main health 恢复;旧口令无法登录 +- [ ] 测试报告归档;CURRENT 槽位 idle;不改 `production_ready` + +## 非目标 + +- 不做 dev→test→main 晋升 / main 分支追平(backlog) +- 不升 `MULTI_INTENT_PLAN_TIER` / 不启用 FAV live / 不启 SEMANTIC_SUMMARY_REPLACE +- medium/low 约 25 项仅记 long-term + +## 相关链接 + +- Audit: [../audit/2026-09-20-system-triage-audit.md](../audit/2026-09-20-system-triage-audit.md) +- Short-term: [../ops/short-term/2026-09-20-p0-hotfixes.md](../ops/short-term/2026-09-20-p0-hotfixes.md) +- gap-matrix 行: 收口时追加「2026-09-20 P0 现场问题」 diff --git a/.doc/remediation/INDEX.md b/.doc/remediation/INDEX.md index 0ad4cb5c..0ff0f224 100644 --- a/.doc/remediation/INDEX.md +++ b/.doc/remediation/INDEX.md @@ -2,6 +2,7 @@ | 文档 | 说明 | |------|------| +| [2026-09-20-p0-remediation-plan.md](./2026-09-20-p0-remediation-plan.md) | 系统体检 P0:迁移 00058、三项 IDOR、panic/race/XSS、凭证与口令轮换;配套 [审计](../audit/2026-09-20-system-triage-audit.md) | | [2026-09-17-system-health-remediation-plan.md](./2026-09-17-system-health-remediation-plan.md) | 系统体检整改:Wave0–7(SSE/缓存 P0 → main ENV → 配置对齐 → 测试债 → 隐患 → 死代码决策 → 文档漂移 → roadmap);配套 [审计](../audit/2026-09-17-system-health-check.md) | | [2026-09-17-document-author-only-plan.md](./2026-09-17-document-author-only-plan.md) | 编制人兼任审核/批准:两级授权、`duty_policy=author_only`、U1–U6 实现已收口;默认 off;变更提案 HTTP 另立([audit](../audit/2026-09-17-docgov-modification-proposal-http-gap.md)) | | [gap-matrix.md](./gap-matrix.md) | 发布缺口 SSOT |