证据等级:B(工程设计提案)
本文修正早期“范围蔓延是两种病、所有现有方案都混淆二者”的绝对表述。更准确的工程划分是:一类变化增加或改变已批准的用户价值范围,另一类变化是在实现已批准目标时发现必要依赖。两者都需要记录、评估和控制,但审批阈值不同。请先阅读 研究方法与事实校准。创新点索引:I-08
系列:LLM + Harness = Agent
上一篇:07 风险与证据驱动的审查切换
下一篇:09 Skills 自进化闭环
用户说“加一个基础 JWT 登录”,执行中可能出现两类变化:
增加新的用户能力:
RBAC
OAuth
密码找回
2FA
多租户
这些内容即使技术上相关,也超出基础登录的已批准范围,需要 Change Request 和用户决定。
为完成基础登录必须处理:
密码 Hash
Token 签名配置
认证中间件
错误处理
必要测试
这些通常不改变用户目标,但会改变工作量、文件范围和风险,需要 Impact Analysis;达到阈值时仍需审批。
可靠范围治理不是“一律禁止新增步骤”,也不是“技术上合理就自动做”,而是使用可版本化 Scope Contract、Change Proposal、影响分析和批准策略。
范围变化可能同时包含产品、技术、安全、合规和运维因素。本文使用可操作类型,而不是医学隐喻:
scope expansion
implementation dependency
requirement clarification
corrective work
risk mitigation
默认规则应是:
只执行实现已确认目标和验收标准所必需的最小工作;相邻功能默认不在范围内。
负向边界有帮助,但不能把列完所有非目标的责任转嫁给用户。
即使某项工作是必要依赖,如果它:
仍需升级为 Change Request。
早期示例中的“某类任务 73% 的蔓延来自某功能”等数字没有可复现数据来源,不再保留。
scope_id: auth-jwt-v1
version: 3
objective: 为现有 Web 应用增加基础账号密码登录
in_scope:
- 登录端点
- JWT 签发和验证
- 密码安全存储
- 认证中间件
- 单元和集成测试
non_goals:
- RBAC
- OAuth
- 密码找回
- 2FA
- 多租户
acceptance_criteria:
- 合法用户可登录并获得 Token
- 错误密码返回 401
- 受保护端点拒绝无效 Token
constraints:
- 使用现有数据库
- 不增加外部身份服务
change_budget:
max_files_without_approval: 8
max_estimated_hours_without_approval: 4
external_dependency_requires_approval: true
permission_change_requires_approval: true
owner: user-or-product-owner
status: approved
描述用户价值,不是实现手段。
列出完成目标已明确包含的能力。
列出高概率相邻功能。无需穷举整个世界,只覆盖当前任务常见扩张方向。
范围是否完成由验收标准决定,而不是步骤数量。
包括技术、时间、平台、兼容和权限边界。
定义哪些小变化可由 Runtime 自动处理,哪些必须升级审批。
不改变目标,只消除歧义。
示例:Token 有效期是 30 分钟还是 24 小时。
完成已批准 Acceptance Criterion 所必需。
判定问题:
如果不做该项,是否仍能诚实地满足已批准验收标准?
如果答案是否定,可能是必要依赖。
修复由当前改动引入或暴露的错误。
需要区分:
为了使已批准实现达到最低安全、数据完整性或合规要求。
高影响 Risk Mitigation 仍需审批。
新增用户能力、平台、集成或产品行为。默认需要产品 Owner 批准。
“顺手重构”“代码更漂亮”不是必要依赖。除非验收、安全或可维护性 Gate 明确要求,否则记录为后续项。
change_id: change-auth-7
scope_version: 3
type: implementation_dependency
description: 增加密码 Hash 库和迁移已有明文密码
reason: 无安全存储无法满足基础账号密码登录
trigger:
node_id: step-password-storage
impact:
files: 5
data_migration: true
external_dependency: argon2
permissions_changed: false
estimated_effort_hours: 6
rollback_complexity: medium
alternatives:
- name: 仅支持新用户
tradeoff: 旧用户无法登录
- name: 首次登录时渐进迁移
tradeoff: 实现复杂度增加
recommendation: 请求用户批准迁移策略
approval_required: true
status: proposed
Change Proposal 必须说明:
变化类型
为什么需要
与 Acceptance Criterion 的关系
影响范围
风险
成本
备选方案
不做的后果
审批要求
| 条件 | 默认动作 |
|---|---|
| 不改变用户能力,低风险,预算内,可逆 | 自动纳入并记录 |
| 必要依赖但超出文件/时间预算 | 暂停并请求批准 |
| 增加外部依赖 | 请求批准 |
| 改变权限、安全或数据 | 高等级 Review + 批准 |
| 新增用户能力 | Product Scope Change |
| 既有无关缺陷 | 建 Issue,不默认修复 |
| 无法判断是否必要 | 标记 Unknown,请求决策 |
澄清应聚焦高影响边界,而不是罗列所有可能功能。
好的问题:
基础登录是否只包含账号密码 + JWT,不包含 RBAC、OAuth、找回密码和 2FA?
更好的系统行为是给出默认最小范围:
我将按“账号密码登录、JWT、认证中间件和必要测试”执行;RBAC、OAuth、找回密码和 2FA 默认不做。
用户只需纠正默认值,而不是从空白表单定义一切。
I-06 的 PlanGraph 将变化映射到:
new node
new edge
changed acceptance criterion
changed constraint
invalidated evidence
流程:
Discovery
→ Change Proposal
→ Classify
→ Impact Analysis
→ Approve / Reject / Defer
→ New Scope and Plan Version
→ Invalidate affected Evidence
未经批准的 Scope Expansion 不得进入正式 Plan。
频繁弹窗会破坏 Agent 价值。使用三档策略:
低风险、必要、预算内、可逆,记录到 Timeline。
多个中等影响变化累积到 Checkpoint,一次展示:
新增 3 个必要实现步骤
预计增加 2 个文件和 40 分钟
不改变产品范围
高风险、范围扩张、不可逆、外部副作用或预算超限,立即暂停。
运行时比较:
approved scope
current plan
actual changed files
actual tools/dependencies
current artifacts
异常信号:
信号触发 Review,不自动证明违规。
verdict_id: scope-review-11
scope_version: 3
plan_version: 8
status: changes_required
findings:
- type: product_scope_expansion
node: step-rbac
reason: RBAC 明确属于 non_goals
required_action: remove_or_request_approval
- type: implementation_dependency
node: step-password-hash
reason: 支持基础安全登录所必需
approval: required_due_to_data_migration
Verdict 必须引用 Scope、Plan 和 Evidence 版本。
unauthorized feature additions
missed necessary dependencies
incorrect change classification
scope drift detection precision / recall
first-pass acceptance
rework
user corrections
completion time
cost per successful task
clarification turns
approval interruptions
batched decisions
unnecessary questions
比较:
no scope contract
prompt-only scope statement
scope contract + change control
使用中途发现依赖、既有缺陷、相邻功能诱惑和高风险变化的 Held-out 任务。
需要 Unknown 状态、人工覆盖、审计和事后复盘。
范围治理不是简单限制步骤数,也不是要求用户预先列出所有“不做什么”。
可靠机制需要:
目标不是让 Plan 永远不变,而是让每一次变化都有类型、理由、影响、权限和可追溯决定。
← 返回全部 18 篇研究