Files
Agent-System/.doc/ops/short-term/2026-09-26-degraded-flags-enable.md
T

5.6 KiB
Raw Blame History

降级功能开关放量 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 运维配置)显式钉住上述键为默认值,行为保持不变。

二、实现(代码侧)

  1. internal/ctxmgr/summary_flags.go:SummaryFeatureFlags.ReplaceAllSessions;parseReplaceSessions 返回 (set, wildcard),任意 * token → 全会话;SemanticReplaceEnabledFor 先过 master 再过通配/名单。空名单仍拒绝一切(纵深防御不变)。
  2. 单测:semantic_replace_test.go 更新 FlagParsing(通配/混合/空)+ 新增 WildcardAllowlistSwapsNarrative / WildcardMasterOffKeepsDeterministic。
  3. compose ×3 声明 SEMANTIC_SUMMARY_REPLACE(_SESSIONS)(默认 false/空);A-4 声明测试扩键;.env.example 修 Wave2 过期注释并补 SESSIONS/ALLOWLIST 注释键;sysadmin SESSIONS 描述与 REPLACE reason 注明 *。

三、计划

  1. 分析与授权确认
  2. 代码实现(通配 + compose 声明 + 目录/示例更新)
  3. 工程门禁(arch-check block / go vet / go test -short 72 包 OK)+ dev 集成(--no-ff 候选 6b317181,候选级 validate PASS)
  4. env 运维:根 .env + configs/.env.dev 对齐 + configs/.env.{test,main} 钉默认;launch.sh --no-docker 重建并重启(env:dev 锁内;首次操作因长驻子进程 recovery,已按流程 recover 并以 setsid 脱离方式重新拉起,run 502d562d completed)
  5. 运行时验收(见测试报告)
  6. 测试报告 + 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