5.6 KiB
5.6 KiB
降级功能开关放量 dev(short-term)
- task_id: degraded-flags-enable-2026-09-26-r4
- owner: pi
- status: in_progress
- 授权来源: 用户会话指令「请将已经实现但是降级了的功能都启动」+ 追加确认(① dev 单二进制启动、不用容器;② SEMANTIC_SUMMARY_REPLACE 面向系统全部会话含后续新建;③ MULTI_INTENT_PLAN_TIER 保持 confirm)。该指令同时构成 docgov-pi-narrative 行「dev 常驻开启另授权」与 chat-semantic-replace 行「放量逐环境另授权(dev)」的显式授权。
- write_scope: internal/ctxmgr, internal/sysadmin, internal/config, docker-compose.{dev,test,main}.yml, .env.example, .doc/ops/CURRENT.md, .doc/ops/short-term, .doc/status/FEATURE-MATRIX.md, .doc/test-reports
- mutex: summary-flags-rollout
- base_dev_sha:
66ea4e3e51 - capabilities: git:dev, env:dev, docs:publish
- policy_revision: AGENTS 2026-09 / agent-worktree-workflow r1 / validation-contract 2026-09-21
- review_state: pending
- integration_state: pending
- deployment: pending
- cleanup: pending
- remote_sync: not_requested(本地 dev 领先 origin/dev 192+,未要求 push)
一、范围与现状
用户面板(sysadmin features 目录)为 fallback 快照;dev 实际运行态 = 单二进制 launch.sh --no-docker 只加载根 .env(不读 configs/.env.dev),故 intentflow 系列与摘要/叙事开关全部落在默认 legacy/false。dev 容器组当前未运行;test/main 仍为 compose。
已实现但未启动的降级项及处置:
| 开关 | 处置 | 依据 |
|---|---|---|
| MULTI_INTENT_PLAN_TIER(legacy→confirm)+ INTENT_PLAN_PROJECT_ALLOWLIST=* | 根 .env 写入 confirm + * | I2/I3 已按 allowlist 验收 shadow→auto_read→confirm(项目 6579,确认前零写);用户确认保持 confirm |
| MULTI_INTENT_U9/U10/U11/U12 | 根 .env 全 true | I3 live + P8 逐键接线;域名 flag 开启后未打开的细粒度键保持 dry-run |
| SEMANTIC_SUMMARY_SHADOW | 根 .env true | D3 收口 PASS;shadow 生成不影响 served Narrative |
| SEMANTIC_SUMMARY_REPLACE(+SESSIONS) | 代码:SESSIONS 支持 * 通配(原仅枚举 ID,无法覆盖"全部会话含后续");compose 三环境补声明(原 Wave2 注释"REPLACE 未接线"已过期);根 .env true + * |
chat-semantic-replace 2026-09-26 fail-closed 灰度接线;用户授权全会话 |
| PI_CHANGE_REPORT_NARRATIVE | 根 .env true | 2026-09-23 收口复测 PASS;matrix 注明 dev 常驻开启另授权,本任务授权来源满足 |
不改动:WORKFLOW_SCOPE_MODE(strict 可用);U11/U12 五个逐键 live flag(P8"禁止 full 一次放量",不在本次面板范围,compose 亦未声明,保持 off 待后续运维侧逐键放量)。
防泄漏:根 .env 经 --env-file 同样被 test/main compose 读取,故在 configs/.env.test / configs/.env.main(git-ignored 运维配置)显式钉住上述键为默认值,行为保持不变。
二、实现(代码侧)
internal/ctxmgr/summary_flags.go:SummaryFeatureFlags.ReplaceAllSessions;parseReplaceSessions返回(set, wildcard),任意*token → 全会话;SemanticReplaceEnabledFor先过 master 再过通配/名单。空名单仍拒绝一切(纵深防御不变)。- 单测:
semantic_replace_test.go更新 FlagParsing(通配/混合/空)+ 新增 WildcardAllowlistSwapsNarrative / WildcardMasterOffKeepsDeterministic。 - compose ×3 声明
SEMANTIC_SUMMARY_REPLACE(_SESSIONS)(默认 false/空);A-4 声明测试扩键;.env.example修 Wave2 过期注释并补 SESSIONS/ALLOWLIST 注释键;sysadmin SESSIONS 描述与 REPLACE reason 注明*。
三、计划
- 分析与授权确认
- 代码实现(通配 + compose 声明 + 目录/示例更新)
- 工程门禁(arch-check block / go vet / go test -short 72 包 OK)+ dev 集成(--no-ff 候选 6b317181,候选级 validate PASS)
- env 运维:根 .env + configs/.env.dev 对齐 + configs/.env.{test,main} 钉默认;launch.sh --no-docker 重建并重启(env:dev 锁内;首次操作因长驻子进程 recovery,已按流程 recover 并以 setsid 脱离方式重新拉起,run 502d562d completed)
- 运行时验收(见测试报告)
- 测试报告 + MATRIX 行注记 + CURRENT 收口
四、结果登记
- review_state: done(单测新增/更新 3 个用例 + 候选 validate:arch block + vet + 72 包 short 全绿)
- integration_state: done(dev
6b317181;文档收口 commit 见git log) - deployment: dev_runtime_verified(单二进制 PID 1432360;/health /ready OK schema 75;features 快照 10 键全生效;语义摘要真实链路 semantic_replace 命中通配新会话)
- 验证结论: 测试报告
- 观察项(非四归因): ① intentflow 在 P8 后对「查风险+查法规」不再持久化 intent_plans(combo_hint needs_confirm/read_only,legacy 回复仍执行;与 matrix「逐键放量待续」一致,不判为回归);② server.log 一条既有 WARN
ctxmgr_reflect_msgs_scan_incomplete(NULL user_id 扫描,与本次开关无关);③ PI 叙事 live 触发未重跑(能力 2026-09-23 收口已真 MiniMax 复测,本次仅 flag 翻转,待下次自然变更报告事件观察) - 运维披露: configs/.env.test / configs/.env.main 写入钉住默认值(行为不变),防止根 .env 新键在未来 test/main compose 重建时泄漏;属配置文件写入而非 test/main 环境操作
- cleanup: 待门禁复查后清理
- remote_sync: not_requested