用途:帮助 Java 企业开发者安全地设计和管理功能开关(feature toggle、feature flag、kill switch、运行时配置门、金丝雀发布等),把开关当作显式、有归属的运行时控制点,而非隐藏的条件复杂度。
主要能力:判断何时该用开关而非分支、配置变更、部署变更或并行变更;对发布开关、运维 kill switch、实验开关、权限开关、迁移开关进行分类;设计带类型的开关归属、默认值、评估范围、回退行为、可观测性与回滚控制;在 Java 服务中实现开关而不散落 flag 检查;从发布、回滚、安全、隐私、并发与维护风险角度评审开关;测试启用与禁用两条路径、配置失败行为、灰度规则与清理就绪度。
使用方式:应用前必须先阅读 references/057-design-feature-toggles.md。工作流为:分类开关需求(识别运行时行为变更、发布风险、回滚预期、受影响用户、运维归属,判断开关是否为最小安全控制手段);设计开关契约(类型、稳定名称、带类型的决策 API、默认状态、评估上下文、回退行为、审计、指标、日志、清理触发条件);规划实现边界(评估放在应用服务、适配器、策略选择器或请求边界附近,保持领域代码显式,规则中不含密钥或个人数据,保证同一请求、事务、消息或批处理项内决策一致);评审发布与回滚安全;测试并观测两条路径;报告开关计划(决策、契约、边界、测试矩阵、可观测性、发布回滚步骤、清理负责人、移除触发条件、跳过的检查与剩余风险)。
适用场景:设计功能开关策略、评审 flag 实现、安全添加 kill switch、规划 Java 服务金丝雀或分阶段发布、测试开关开与关路径、清理过期开关、判断某运行时行为变更是否需要开关。
限制:不得用开关隐藏未完成的设计决策、削弱安全控制或留下无明确归属的永久分支;临时开关在实现完成前必须包含清理预期;开关评估须集中、带类型且可测试。具体示例与详细约束见参考文件。