- id: A1-pass-01
  description: A1 正常用例：修改普通源码文件，不触碰敏感文件
  tags:
  - A1
  - pass
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - -const oldValue = 'value';
      - +const newValue = 'updated';
    task: 更新 helper 工具函数
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A1-fail-01
  description: A1 违规用例：修改 .env 文件
  tags:
  - A1
  - fail
  input:
    diffFiles:
    - path: .env
      status: modified
      lines:
      - '--- a/.env'
      - +++ b/.env
      - +API_KEY={{SK_PREFIX}}somekey1234567890abcdef
    task: 修改环境配置文件 .env
    logEntries: []
  expected:
    result: FAIL
    rules_triggered:
    - A1
    - A2
    severity: P0
- id: A2-pass-01
  description: A2 正常用例：代码中无硬编码密钥
  tags:
  - A2
  - pass
  input:
    diffFiles:
    - path: lib/config.ts
      status: modified
      lines:
      - '--- a/lib/config.ts'
      - +++ b/lib/config.ts
      - +export const apiKey = process.env.API_KEY;
    task: 添加配置读取逻辑到 config.ts
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A2-fail-01
  description: A2 违规用例：硬编码 OpenAI API 密钥（48 字符格式）
  tags:
  - A2
  - fail
  input:
    diffFiles:
    - path: lib/config.ts
      status: modified
      lines:
      - '--- a/lib/config.ts'
      - +++ b/lib/config.ts
      - +export const apiKey = '{{SK_PREFIX}}1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV';
    task: 添加配置读取逻辑到 config.ts
    logEntries: []
  expected:
    result: FAIL
    rules_triggered:
    - A2
    severity: P0
- id: A3-pass-01
  description: A3 正常用例：只改任务描述明确提到的文件
  tags:
  - A3
  - pass
  input:
    diffFiles:
    - path: lib/auth/login.ts
      status: modified
      lines:
      - '--- a/lib/auth/login.ts'
      - +++ b/lib/auth/login.ts
      - +export function login() { return true; }
    task: 修改 lib/auth/login.ts 登录验证逻辑
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A3-fail-01
  description: A3 违规用例：多个文件不在任务描述范围内（A3 severity 随 priority 降为 warning→P1，v1.2.x 对齐）
  tags:
  - A3
  - fail
  input:
    diffFiles:
    - path: lib/auth/login.ts
      status: modified
      lines:
      - '--- a/lib/auth/login.ts'
      - +++ b/lib/auth/login.ts
      - +export function login() { return true; }
    - path: lib/billing/invoice.ts
      status: modified
      lines:
      - '--- a/lib/billing/invoice.ts'
      - +++ b/lib/billing/invoice.ts
      - +export function calcInvoice() { return 0; }
    - path: lib/marketing/ads.ts
      status: modified
      lines:
      - '--- a/lib/marketing/ads.ts'
      - +++ b/lib/marketing/ads.ts
      - +export function runAds() { return; }
    - path: lib/infra/deploy.ts
      status: modified
      lines:
      - '--- a/lib/infra/deploy.ts'
      - +++ b/lib/infra/deploy.ts
      - +export function deploy() { return; }
    task: 修改 lib/auth/login.ts 登录验证逻辑
    logEntries: []
  expected:
    result: WARN
    rules_triggered:
    - A3
    severity: P1
- id: A4-pass-01
  description: A4 正常用例：修改配置文件但未删除
  tags:
  - A4
  - pass
  input:
    diffFiles:
    - path: lib/config/settings.ts
      status: modified
      lines:
      - '--- a/lib/config/settings.ts'
      - +++ b/lib/config/settings.ts
      - -export const timeout = 5000;
      - +export const timeout = 10000;
    task: 更新 lib/config/settings.ts 超时配置
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A4-fail-01
  description: A4 违规用例：删除 .gitignore 配置文件
  tags:
  - A4
  - fail
  input:
    diffFiles:
    - path: .gitignore
      status: deleted
      lines:
      - '--- a/.gitignore'
      - -node_modules/
      - -dist/
      - -*.log
    task: 删除 .gitignore 文件
    logEntries: []
  expected:
    result: WARN
    rules_triggered:
    - A4
    severity: P1
- id: A5-pass-01
  description: A5 正常用例：commit msg 内容充实
  tags:
  - A5
  - pass
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - +export function newHelper() { return; }
    task: 添加辅助函数到 helper.ts
    commitMsg: 'feat: 添加 newHelper 辅助函数用于数据格式化'
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A5-fail-01
  description: A5 违规用例：commit msg 为空
  tags:
  - A5
  - fail
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - +export function newHelper() { return; }
    task: 添加辅助函数到 helper.ts
    commitMsg: ''
    logEntries: []
  expected:
    result: FAIL
    rules_triggered:
    - A5
    severity: P0
- id: A6-pass-01
  description: A6 正常用例：少量修改构建配置文件
  tags:
  - A6
  - pass
  input:
    diffFiles:
    - path: lib/index.ts
      status: modified
      lines:
      - '--- a/lib/index.ts'
      - +++ b/lib/index.ts
      - +console.log('hello');
    task: 在 lib/index.ts 添加日志输出
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A6-fail-01
  description: A6 违规用例：tsconfig.json 删除超过 5 行
  tags:
  - A6
  - fail
  input:
    diffFiles:
    - path: tsconfig.json
      status: modified
      lines:
      - '--- a/tsconfig.json'
      - +++ b/tsconfig.json
      - '-  "compilerOptions": {'
      - '-    "target": "ES2022",'
      - '-    "module": "commonjs",'
      - '-    "strict": true,'
      - '-    "esModuleInterop": true,'
      - '-    "skipLibCheck": true'
      - '-  }'
    task: 修改 tsconfig.json 构建配置
    logEntries: []
  expected:
    result: WARN
    rules_triggered:
    - A6
    severity: P1
- id: A7-pass-01
  description: A7 正常用例：silent 模式下跳过检查
  tags:
  - A7
  - pass
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - -const oldValue = 'value';
      - +const newValue = 'updated';
    task: 更新 lib/utils/helper.ts helper 函数
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A7-fail-01
  description: A7 违规用例：有日志但修改文件无读取记录
  tags:
  - A7
  - fail
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - -const oldValue = 'value';
      - +const newValue = 'updated';
    task: 更新 lib/utils/helper.ts helper 函数
    logEntries:
    - timestamp: '2025-07-01T10:00:00Z'
      operation: execute
      raw: npm test
    commitMsg: 'feat: 更新 helper 返回值'
  expected:
    result: WARN
    rules_triggered:
    - A7
    severity: P1
- id: A8-pass-01
  description: A8 正常用例：silent 模式下跳过检查
  tags:
  - A8
  - pass
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - +const newValue = 'updated';
    task: 更新 lib/utils/helper.ts helper 函数
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A8-fail-01
  description: A8 违规用例：构建文件变更后有日志但无测试执行
  tags:
  - A8
  - fail
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - +const newValue = 'updated';
    - path: package.json
      status: modified
      lines:
      - '--- a/package.json'
      - +++ b/package.json
      - '+    "lodash": "^4.17.21"'
    task: 更新 lib/utils/helper.ts 并修改 package.json
    logEntries:
    - timestamp: '2025-07-01T10:00:00Z'
      operation: read
      raw: 读取 lib/utils/helper.ts
      file: lib/utils/helper.ts
    - timestamp: '2025-07-01T10:01:00Z'
      operation: read
      raw: 读取 package.json
      file: package.json
    - timestamp: '2025-07-01T10:02:00Z'
      operation: write
      raw: 写入 lib/utils/helper.ts
      file: lib/utils/helper.ts
    - timestamp: '2025-07-01T10:03:00Z'
      operation: write
      raw: 写入 package.json
      file: package.json
    commitMsg: 'feat: 添加 lodash 依赖并更新 helper'
  expected:
    result: WARN
    rules_triggered:
    - A8
    severity: P1
- id: A9-pass-01
  description: A9 正常用例：代码中无注入模式
  tags:
  - A9
  - pass
  input:
    diffFiles:
    - path: lib/prompt.ts
      status: modified
      lines:
      - '--- a/lib/prompt.ts'
      - +++ b/lib/prompt.ts
      - +export const greeting = 'You are a helpful assistant.';
    task: 在 lib/prompt.ts 添加问候语常量
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A9-fail-01
  description: A9 违规用例：代码含高置信度 prompt 注入
  tags:
  - A9
  - fail
  input:
    diffFiles:
    - path: lib/prompt.ts
      status: modified
      lines:
      - '--- a/lib/prompt.ts'
      - +++ b/lib/prompt.ts
      - +export const hack = '{{INJ_PHRASE}}';
    task: 在 lib/prompt.ts 添加提示词
    logEntries: []
  expected:
    result: FAIL
    rules_triggered:
    - A9
    severity: P0
- id: A10-pass-01
  description: A10 正常用例：从官方 npm 源添加依赖到 package.json
  tags:
  - A10
  - pass
  input:
    diffFiles:
    - path: lib/index.ts
      status: modified
      lines:
      - '--- a/lib/index.ts'
      - +++ b/lib/index.ts
      - +import _ from 'lodash';
    task: 在 lib/index.ts 添加 lodash 导入
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A10-fail-01
  description: A10 违规用例：package.json 新增非官方源 GitHub raw URL 依赖
  tags:
  - A10
  - fail
  input:
    diffFiles:
    - path: package.json
      status: modified
      lines:
      - '--- a/package.json'
      - +++ b/package.json
      - '+    "evil-pkg": "https://raw.githubusercontent.com/attacker/evil/main/pkg.tgz"'
    task: 修改 package.json 添加 evil-pkg 依赖
    logEntries: []
  expected:
    result: FAIL
    rules_triggered:
    - A10
    severity: P0
- id: A11-pass-01
  description: A11 正常用例：添加正常大小的单个源文件
  tags:
  - A11
  - pass
  input:
    diffFiles:
    - path: lib/utils/normal.ts
      status: added
      lines:
      - '--- /dev/null'
      - +++ b/lib/utils/normal.ts
      - +export function normalFunction() {
      - +  return 'hello';
      - +}
    task: 添加 lib/utils/normal.ts 工具函数
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A11-fail-01
  description: A11 违规用例：删除超过 20 个文件
  tags:
  - A11
  - fail
  input:
    diffFiles:
    - path: lib/old/file1.ts
      status: deleted
      lines:
      - '--- a/lib/old/file1.ts'
    - path: lib/old/file2.ts
      status: deleted
      lines:
      - '--- a/lib/old/file2.ts'
    - path: lib/old/file3.ts
      status: deleted
      lines:
      - '--- a/lib/old/file3.ts'
    - path: lib/old/file4.ts
      status: deleted
      lines:
      - '--- a/lib/old/file4.ts'
    - path: lib/old/file5.ts
      status: deleted
      lines:
      - '--- a/lib/old/file5.ts'
    - path: lib/old/file6.ts
      status: deleted
      lines:
      - '--- a/lib/old/file6.ts'
    - path: lib/old/file7.ts
      status: deleted
      lines:
      - '--- a/lib/old/file7.ts'
    - path: lib/old/file8.ts
      status: deleted
      lines:
      - '--- a/lib/old/file8.ts'
    - path: lib/old/file9.ts
      status: deleted
      lines:
      - '--- a/lib/old/file9.ts'
    - path: lib/old/file10.ts
      status: deleted
      lines:
      - '--- a/lib/old/file10.ts'
    - path: lib/old/file11.ts
      status: deleted
      lines:
      - '--- a/lib/old/file11.ts'
    - path: lib/old/file12.ts
      status: deleted
      lines:
      - '--- a/lib/old/file12.ts'
    - path: lib/old/file13.ts
      status: deleted
      lines:
      - '--- a/lib/old/file13.ts'
    - path: lib/old/file14.ts
      status: deleted
      lines:
      - '--- a/lib/old/file14.ts'
    - path: lib/old/file15.ts
      status: deleted
      lines:
      - '--- a/lib/old/file15.ts'
    - path: lib/old/file16.ts
      status: deleted
      lines:
      - '--- a/lib/old/file16.ts'
    - path: lib/old/file17.ts
      status: deleted
      lines:
      - '--- a/lib/old/file17.ts'
    - path: lib/old/file18.ts
      status: deleted
      lines:
      - '--- a/lib/old/file18.ts'
    - path: lib/old/file19.ts
      status: deleted
      lines:
      - '--- a/lib/old/file19.ts'
    - path: lib/old/file20.ts
      status: deleted
      lines:
      - '--- a/lib/old/file20.ts'
    - path: lib/old/file21.ts
      status: deleted
      lines:
      - '--- a/lib/old/file21.ts'
    task: 批量删除 lib/old/ 目录下 21 个废弃文件
    logEntries: []
  expected:
    result: FAIL
    rules_triggered:
    - A11
    severity: P0
- id: A14-pass-01
  description: A14 正常用例：无 workflow.yml 配置，规则跳过
  tags:
  - A14
  - pass
  input:
    diffFiles:
    - path: lib/feature.ts
      status: modified
      lines:
      - '--- a/lib/feature.ts'
      - +++ b/lib/feature.ts
      - +export function feature() { return; }
    task: 在 lib/feature.ts 添加功能
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A14-pass-02
  description: A14 正常用例：有日志但无 workflow.yml 配置，规则跳过
  tags:
  - A14
  - pass
  input:
    diffFiles:
    - path: lib/feature.ts
      status: modified
      lines:
      - '--- a/lib/feature.ts'
      - +++ b/lib/feature.ts
      - +export function feature() { return; }
    task: 在 lib/feature.ts 添加功能
    logEntries:
    - timestamp: '2025-07-01T10:00:00Z'
      operation: read
      raw: 读取知识库 docs/auth-guide.md
      file: docs/auth-guide.md
    - timestamp: '2025-07-01T10:01:00Z'
      operation: read
      raw: 读取 lib/feature.ts
      file: lib/feature.ts
    - timestamp: '2025-07-01T10:02:00Z'
      operation: write
      raw: 写入 lib/feature.ts
      file: lib/feature.ts
    commitMsg: 'feat: 在 lib/feature.ts 添加 feature 功能'
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A15-pass-01
  description: A15 正常用例：无 workflow.yml 配置，规则跳过
  tags:
  - A15
  - pass
  input:
    diffFiles:
    - path: lib/service.ts
      status: modified
      lines:
      - '--- a/lib/service.ts'
      - +++ b/lib/service.ts
      - +export function newService() { return; }
    task: 在 lib/service.ts 添加服务函数
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A15-pass-02
  description: A15 正常用例：有日志但无 workflow.yml 配置，规则跳过
  tags:
  - A15
  - pass
  input:
    diffFiles:
    - path: lib/service.ts
      status: modified
      lines:
      - '--- a/lib/service.ts'
      - +++ b/lib/service.ts
      - +export function newService() { return; }
    task: 在 lib/service.ts 添加服务函数
    logEntries:
    - timestamp: '2025-07-01T10:00:00Z'
      operation: read
      raw: 读取现有 lib/service.ts
      file: lib/service.ts
    - timestamp: '2025-07-01T10:01:00Z'
      operation: write
      raw: 写入 lib/service.ts 新函数
      file: lib/service.ts
    commitMsg: 'feat: 在 lib/service.ts 添加 newService 函数'
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A16-pass-01
  description: A16 正常用例：无 A16 配置，规则跳过
  tags:
  - A16
  - pass
  input:
    diffFiles:
    - path: lib/components/Button.tsx
      status: modified
      lines:
      - '--- a/lib/components/Button.tsx'
      - +++ b/lib/components/Button.tsx
      - +export function Button() { return null; }
    task: 修改 lib/components/Button.tsx 按钮组件
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A16-pass-02
  description: A16 正常用例：修改 CI 配置但无 A16 配置，规则跳过
  tags:
  - A16
  - pass
  input:
    diffFiles:
    - path: lib/index.ts
      status: modified
      lines:
      - '--- a/lib/index.ts'
      - +++ b/lib/index.ts
      - +export const version = '1.0.0';
    task: 修改 lib/index.ts 添加版本号
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A17-pass-01
  description: A17 正常用例：无 A17 配置，规则跳过
  tags:
  - A17
  - pass
  input:
    diffFiles:
    - path: lib/constants/alpha.ts
      status: modified
      lines:
      - '--- a/lib/constants/alpha.ts'
      - +++ b/lib/constants/alpha.ts
      - +export const alpha = 1;
    - path: lib/constants/beta.ts
      status: modified
      lines:
      - '--- a/lib/constants/beta.ts'
      - +++ b/lib/constants/beta.ts
      - +export const beta = 2;
    task: 修改 lib/constants/alpha.ts 和 lib/constants/beta.ts 常量定义
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A17-pass-02
  description: A17 正常用例：修改多个文件但无 A17 配置，规则跳过
  tags:
  - A17
  - pass
  input:
    diffFiles:
    - path: lib/constants/gamma.ts
      status: modified
      lines:
      - '--- a/lib/constants/gamma.ts'
      - +++ b/lib/constants/gamma.ts
      - +export const gamma = 3;
    - path: lib/constants/delta.ts
      status: modified
      lines:
      - '--- a/lib/constants/delta.ts'
      - +++ b/lib/constants/delta.ts
      - +export const delta = 4;
    - path: lib/constants/epsilon.ts
      status: modified
      lines:
      - '--- a/lib/constants/epsilon.ts'
      - +++ b/lib/constants/epsilon.ts
      - +export const epsilon = 5;
    task: 修改 lib/constants/gamma.ts lib/constants/delta.ts lib/constants/epsilon.ts 常量定义
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A18-pass-01
  description: A18 正常用例：提交正常命名的源码文件
  tags:
  - A18
  - pass
  input:
    diffFiles:
    - path: lib/index.ts
      status: added
      lines:
      - '--- /dev/null'
      - +++ b/lib/index.ts
      - +export function main() { return; }
    task: 添加 lib/index.ts 入口文件
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A18-fail-01
  description: A18 违规用例：提交单字母垃圾文件 a.txt
  tags:
  - A18
  - fail
  input:
    diffFiles:
    - path: a.txt
      status: added
      lines:
      - '--- /dev/null'
      - +++ b/a.txt
      - +some random notes
    task: 添加 a.txt 临时笔记文件
    logEntries: []
  expected:
    result: WARN
    rules_triggered:
    - A18
    severity: P1
- id: A19-pass-01
  description: A19 正常用例：高质量的 commit message
  tags:
  - A19
  - pass
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - +const newValue = 'updated';
    task: 更新 lib/utils/helper.ts helper 函数
    commitMsg: 'feat: 更新 helper 函数返回值以支持新的数据格式'
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: A19-fail-01
  description: A19 违规用例：commit message 命中黑名单词 wip（A5 不瞒真相对同内容追加命中，v1.3.4 对齐）
  tags:
  - A19
  - fail
  input:
    diffFiles:
    - path: lib/utils/helper.ts
      status: modified
      lines:
      - '--- a/lib/utils/helper.ts'
      - +++ b/lib/utils/helper.ts
      - +const newValue = 'updated';
    task: 更新 lib/utils/helper.ts helper 函数
    commitMsg: wip
    logEntries: []
  expected:
    result: FAIL
    rules_triggered:
    - A5
    - A19
    severity: P1  # v1.3.5 run-07 维度56 勘误：A5 对 wip 是 WARN 触发（非 FAIL），WARN 封顶 P1；旧值 P0 是映射器只看 ruleClass 时代的历史输出

- id: E1-pass-01
  description: E1 正常用例：修改 lib/ 下文件不触发 E1（仅检测 src/）
  tags:
  - E1
  - pass
  input:
    diffFiles:
    - path: lib/handler.ts
      status: modified
      lines:
      - '--- a/lib/handler.ts'
      - +++ b/lib/handler.ts
      - +export function handle() { return; }
    task: 在 lib/handler.ts 添加处理器
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: E1-fail-01
  description: E1 违规用例：修改 src/ 下源码但无测试文件变更
  tags:
  - E1
  - fail
  input:
    diffFiles:
    - path: src/handler.ts
      status: modified
      lines:
      - '--- a/src/handler.ts'
      - +++ b/src/handler.ts
      - +export function handle() { return; }
    task: 修改 src/handler.ts 添加处理器
    logEntries: []
  expected:
    result: WARN
    rules_triggered:
    - E1
    severity: P1
- id: E2-pass-01
  description: E2 正常用例：代码中无 TODO/FIXME
  tags:
  - E2
  - pass
  input:
    diffFiles:
    - path: lib/api/client.ts
      status: modified
      lines:
      - '--- a/lib/api/client.ts'
      - +++ b/lib/api/client.ts
      - +export function fetchApi() { return fetch(url); }
    task: 在 lib/api/client.ts 添加 API 客户端
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: E2-fail-01
  description: E2 违规用例：新增代码含裸 TODO 但 commitMsg 未提及
  tags:
  - E2
  - fail
  input:
    diffFiles:
    - path: lib/api/client.ts
      status: modified
      lines:
      - '--- a/lib/api/client.ts'
      - +++ b/lib/api/client.ts
      - +  // TODO implement retry logic
    task: 在 lib/api/client.ts 添加 API 客户端
    logEntries: []
  expected:
    result: WARN
    rules_triggered:
    - E2
    severity: P1
- id: E3-pass-01
  description: E3 正常用例：少量删除代码
  tags:
  - E3
  - pass
  input:
    diffFiles:
    - path: lib/utils/old.ts
      status: modified
      lines:
      - '--- a/lib/utils/old.ts'
      - +++ b/lib/utils/old.ts
      - -const deprecatedVar = 'old';
    task: 清理 lib/utils/old.ts 过时代码
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: E3-fail-01
  description: E3 违规用例：大段删除代码与任务无关（E3 已于 v1.2.5 并入 A11 行数维度）
  tags:
  - A11
  - fail
  input:
    diffFiles:
    - path: lib/core/module.ts
      status: modified
      lines:
      - '--- a/lib/core/module.ts'
      - +++ b/lib/core/module.ts
      - -export class ModuleA { constructor() {} method1() {} }
      - -export class ModuleB { constructor() {} method1() {} }
      - -export class ModuleC { constructor() {} method1() {} }
      - -export class ModuleD { constructor() {} method1() {} }
      - -export class ModuleE { constructor() {} method1() {} }
      - -export class ModuleF { constructor() {} method1() {} }
      - -export class ModuleG { constructor() {} method1() {} }
      - -export class ModuleH { constructor() {} method1() {} }
      - -export class ModuleI { constructor() {} method1() {} }
      - -export class ModuleJ { constructor() {} method1() {} }
      - -export class ModuleK { constructor() {} method1() {} }
      - -export class ModuleL { constructor() {} method1() {} }
      - -export class ModuleM { constructor() {} method1() {} }
      - -export class ModuleN { constructor() {} method1() {} }
      - -export class ModuleO { constructor() {} method1() {} }
      - -export class ModuleP { constructor() {} method1() {} }
      - -export class ModuleQ { constructor() {} method1() {} }
      - -export class ModuleR { constructor() {} method1() {} }
      - -export class ModuleS { constructor() {} method1() {} }
      - -export class ModuleT { constructor() {} method1() {} }
      - -export class ModuleU { constructor() {} method1() {} }
      - -export class ModuleV { constructor() {} method1() {} }
      - -export class ModuleW { constructor() {} method1() {} }
      - -export class ModuleX { constructor() {} method1() {} }
      - -export class ModuleY { constructor() {} method1() {} }
      - -export class ModuleZ { constructor() {} method1() {} }
      - -export class ModuleAA { constructor() {} method1() {} }
      - -export class ModuleBB { constructor() {} method1() {} }
      - -export class ModuleCC { constructor() {} method1() {} }
      - -export class ModuleDD { constructor() {} method1() {} }
      - -export class ModuleEE { constructor() {} method1() {} }
      - -export class ModuleFF { constructor() {} method1() {} }
      - -export class ModuleGG { constructor() {} method1() {} }
      - -export class ModuleHH { constructor() {} method1() {} }
      - -export class ModuleII { constructor() {} method1() {} }
      - -export class ModuleJJ { constructor() {} method1() {} }
      - -export class ModuleKK { constructor() {} method1() {} }
      - -export class ModuleLL { constructor() {} method1() {} }
      - -export class ModuleMM { constructor() {} method1() {} }
      - -export class ModuleNN { constructor() {} method1() {} }
      - -export class ModuleOO { constructor() {} method1() {} }
      - -export class ModulePP { constructor() {} method1() {} }
      - -export class ModuleQQ { constructor() {} method1() {} }
      - -export class ModuleRR { constructor() {} method1() {} }
      - -export class ModuleSS { constructor() {} method1() {} }
      - -export class ModuleTT { constructor() {} method1() {} }
      - -export class ModuleUU { constructor() {} method1() {} }
      - -export class ModuleVV { constructor() {} method1() {} }
      - -export class ModuleWW { constructor() {} method1() {} }
      - -export class ModuleXX { constructor() {} method1() {} }
      - -export class ModuleYY { constructor() {} method1() {} }
      - -export class ModuleZZ { constructor() {} method1() {} }
      - -export class ModuleAAA { constructor() {} method1() {} }
      - -export class ModuleBBB { constructor() {} method1() {} }
      - -export class ModuleCCC { constructor() {} method1() {} }
      - -export class ModuleDDD { constructor() {} method1() {} }
      - -export class ModuleEEE { constructor() {} method1() {} }
      - -export class ModuleFFF { constructor() {} method1() {} }
      - -export class ModuleGGG { constructor() {} method1() {} }
      - -export class ModuleHHH { constructor() {} method1() {} }
      - -export class ModuleIII { constructor() {} method1() {} }
      - -export class ModuleJJJ { constructor() {} method1() {} }
      - -export class ModuleKKK { constructor() {} method1() {} }
      - -export class ModuleLLL { constructor() {} method1() {} }
      - -export class ModuleMMM { constructor() {} method1() {} }
      - -export class ModuleNNN { constructor() {} method1() {} }
      - -export class ModuleOOO { constructor() {} method1() {} }
      - -export class ModulePPP { constructor() {} method1() {} }
      - -export class ModuleQQQ { constructor() {} method1() {} }
      - -export class ModuleRRR { constructor() {} method1() {} }
      - -export class ModuleSSS { constructor() {} method1() {} }
      - -export class ModuleTTT { constructor() {} method1() {} }
      - -export class ModuleUUU { constructor() {} method1() {} }
      - -export class ModuleVVV { constructor() {} method1() {} }
      - -export class ModuleWWW { constructor() {} method1() {} }
      - -export class ModuleXXX { constructor() {} method1() {} }
      - -export class ModuleYYY { constructor() {} method1() {} }
      - -export class ModuleZZZ { constructor() {} method1() {} }
      - -export class ModuleAAAA { constructor() {} method1() {} }
      - -export class ModuleBBBB { constructor() {} method1() {} }
      - -export class ModuleCCCC { constructor() {} method1() {} }
      - -export class ModuleDDDD { constructor() {} method1() {} }
      - -export class ModuleEEEE { constructor() {} method1() {} }
      - -export class ModuleFFFF { constructor() {} method1() {} }
      - -export class ModuleGGGG { constructor() {} method1() {} }
      - -export class ModuleHHHH { constructor() {} method1() {} }
      - -export class ModuleIIII { constructor() {} method1() {} }
      - -export class ModuleJJJJ { constructor() {} method1() {} }
      - -export class ModuleKKKK { constructor() {} method1() {} }
      - -export class ModuleLLLL { constructor() {} method1() {} }
      - -export class ModuleMMMM { constructor() {} method1() {} }
      - -export class ModuleNNNN { constructor() {} method1() {} }
      - -export class ModuleOOOO { constructor() {} method1() {} }
      - -export class ModulePPPP { constructor() {} method1() {} }
      - -export class ModuleQQQQ { constructor() {} method1() {} }
      - -export class ModuleRRRR { constructor() {} method1() {} }
      - -export class ModuleSSSS { constructor() {} method1() {} }
      - -export class ModuleTTTT { constructor() {} method1() {} }
      - -export class ModuleUUUU { constructor() {} method1() {} }
      - -export class ModuleVVVV { constructor() {} method1() {} }
      - -export class ModuleWWWW { constructor() {} method1() {} }
      - -export class ModuleXXXX { constructor() {} method1() {} }
      - -export class ModuleYYYY { constructor() {} method1() {} }
      - -export class ModuleZZZZ { constructor() {} method1() {} }
      - -export class ModuleAAAAA { constructor() {} method1() {} }
    task: 清理废弃代码
    commitMsg: 'refactor: 清理 lib/core/module.ts 中的废弃类定义'
    logEntries: []
  expected:
    result: WARN
    rules_triggered:
    - A11
    severity: P1  # v1.3.5 run-07 维度56 勘误：WARN result 配 P0 自相矛盾（P0 属真拦截 FAIL），修正为 P1
- id: E4-pass-01
  description: E4 正常用例：少量代码行不触发 E4
  tags:
  - E4
  - pass
  input:
    diffFiles:
    - path: lib/utils/parser.ts
      status: added
      lines:
      - '--- /dev/null'
      - +++ b/lib/utils/parser.ts
      - +/**
      - + * 解析用户输入
      - + * @param input 用户原始输入字符串
      - + * @returns 解析后的数据结构
      - + */
      - '+export function parseInput(input: string) {'
      - +  // 去除首尾空格
      - +  const trimmed = input.trim();
      - +  return trimmed;
      - +}
    task: 添加 lib/utils/parser.ts 解析器
    logEntries: []
  expected:
    result: PASS
    rules_triggered: []
    severity: ''
- id: E4-fail-01
  description: E4 违规用例：大量代码行但几乎无注释
  tags:
  - E4
  - fail
  input:
    diffFiles:
    - path: lib/utils/complex.ts
      status: added
      lines:
      - '--- /dev/null'
      - +++ b/lib/utils/complex.ts
      - +export function func001() { return 1; }
      - +export function func002() { return 2; }
      - +export function func003() { return 3; }
      - +export function func004() { return 4; }
      - +export function func005() { return 5; }
      - +export function func006() { return 6; }
      - +export function func007() { return 7; }
      - +export function func008() { return 8; }
      - +export function func009() { return 9; }
      - +export function func010() { return 10; }
      - +export function func011() { return 11; }
      - +export function func012() { return 12; }
      - +export function func013() { return 13; }
      - +export function func014() { return 14; }
      - +export function func015() { return 15; }
      - +export function func016() { return 16; }
      - +export function func017() { return 17; }
      - +export function func018() { return 18; }
      - +export function func019() { return 19; }
      - +export function func020() { return 20; }
      - +export function func021() { return 21; }
      - +export function func022() { return 22; }
      - +export function func023() { return 23; }
      - +export function func024() { return 24; }
      - +export function func025() { return 25; }
      - +export function func026() { return 26; }
      - +export function func027() { return 27; }
      - +export function func028() { return 28; }
      - +export function func029() { return 29; }
      - +export function func030() { return 30; }
      - +export function func031() { return 31; }
      - +export function func032() { return 32; }
      - +export function func033() { return 33; }
      - +export function func034() { return 34; }
      - +export function func035() { return 35; }
      - +export function func036() { return 36; }
      - +export function func037() { return 37; }
      - +export function func038() { return 38; }
      - +export function func039() { return 39; }
      - +export function func040() { return 40; }
      - +export function func041() { return 41; }
      - +export function func042() { return 42; }
      - +export function func043() { return 43; }
      - +export function func044() { return 44; }
      - +export function func045() { return 45; }
      - +export function func046() { return 46; }
      - +export function func047() { return 47; }
      - +export function func048() { return 48; }
      - +export function func049() { return 49; }
      - +export function func050() { return 50; }
      - +export function func051() { return 51; }
      - +export function func052() { return 52; }
      - +export function func053() { return 53; }
      - +export function func054() { return 54; }
      - +export function func055() { return 55; }
      - +export function func056() { return 56; }
      - +export function func057() { return 57; }
      - +export function func058() { return 58; }
      - +export function func059() { return 59; }
      - +export function func060() { return 60; }
      - +export function func061() { return 61; }
      - +export function func062() { return 62; }
      - +export function func063() { return 63; }
      - +export function func064() { return 64; }
      - +export function func065() { return 65; }
      - +export function func066() { return 66; }
      - +export function func067() { return 67; }
      - +export function func068() { return 68; }
      - +export function func069() { return 69; }
      - +export function func070() { return 70; }
      - +export function func071() { return 71; }
      - +export function func072() { return 72; }
      - +export function func073() { return 73; }
      - +export function func074() { return 74; }
      - +export function func075() { return 75; }
      - +export function func076() { return 76; }
      - +export function func077() { return 77; }
      - +export function func078() { return 78; }
      - +export function func079() { return 79; }
      - +export function func080() { return 80; }
      - +export function func081() { return 81; }
      - +export function func082() { return 82; }
      - +export function func083() { return 83; }
      - +export function func084() { return 84; }
      - +export function func085() { return 85; }
      - +export function func086() { return 86; }
      - +export function func087() { return 87; }
      - +export function func088() { return 88; }
      - +export function func089() { return 89; }
      - +export function func090() { return 90; }
      - +export function func091() { return 91; }
      - +export function func092() { return 92; }
      - +export function func093() { return 93; }
      - +export function func094() { return 94; }
      - +export function func095() { return 95; }
      - +export function func096() { return 96; }
      - +export function func097() { return 97; }
      - +export function func098() { return 98; }
      - +export function func099() { return 99; }
      - +export function func100() { return 100; }
      - +export function func101() { return 101; }
      - +export function func102() { return 102; }
      - +export function func103() { return 103; }
      - +export function func104() { return 104; }
      - +export function func105() { return 105; }
      - +export function func106() { return 106; }
      - +export function func107() { return 107; }
      - +export function func108() { return 108; }
      - +export function func109() { return 109; }
      - +export function func110() { return 110; }
      - +export function func111() { return 111; }
      - +export function func112() { return 112; }
      - +export function func113() { return 113; }
      - +export function func114() { return 114; }
      - +export function func115() { return 115; }
      - +export function func116() { return 116; }
      - +export function func117() { return 117; }
      - +export function func118() { return 118; }
      - +export function func119() { return 119; }
      - +export function func120() { return 120; }
      - +export function func121() { return 121; }
      - +export function func122() { return 122; }
      - +export function func123() { return 123; }
      - +export function func124() { return 124; }
      - +export function func125() { return 125; }
      - +export function func126() { return 126; }
      - +export function func127() { return 127; }
      - +export function func128() { return 128; }
      - +export function func129() { return 129; }
      - +export function func130() { return 130; }
      - +export function func131() { return 131; }
      - +export function func132() { return 132; }
      - +export function func133() { return 133; }
      - +export function func134() { return 134; }
      - +export function func135() { return 135; }
      - +export function func136() { return 136; }
      - +export function func137() { return 137; }
      - +export function func138() { return 138; }
      - +export function func139() { return 139; }
      - +export function func140() { return 140; }
      - +export function func141() { return 141; }
      - +export function func142() { return 142; }
      - +export function func143() { return 143; }
      - +export function func144() { return 144; }
      - +export function func145() { return 145; }
      - +export function func146() { return 146; }
      - +export function func147() { return 147; }
      - +export function func148() { return 148; }
      - +export function func149() { return 149; }
      - +export function func150() { return 150; }
      - +export function func151() { return 151; }
      - +export function func152() { return 152; }
      - +export function func153() { return 153; }
      - +export function func154() { return 154; }
      - +export function func155() { return 155; }
      - +export function func156() { return 156; }
      - +export function func157() { return 157; }
      - +export function func158() { return 158; }
      - +export function func159() { return 159; }
      - +export function func160() { return 160; }
      - +export function func161() { return 161; }
      - +export function func162() { return 162; }
      - +export function func163() { return 163; }
      - +export function func164() { return 164; }
      - +export function func165() { return 165; }
      - +export function func166() { return 166; }
      - +export function func167() { return 167; }
      - +export function func168() { return 168; }
      - +export function func169() { return 169; }
      - +export function func170() { return 170; }
      - +export function func171() { return 171; }
      - +export function func172() { return 172; }
      - +export function func173() { return 173; }
      - +export function func174() { return 174; }
      - +export function func175() { return 175; }
      - +export function func176() { return 176; }
      - +export function func177() { return 177; }
      - +export function func178() { return 178; }
      - +export function func179() { return 179; }
      - +export function func180() { return 180; }
      - +export function func181() { return 181; }
      - +export function func182() { return 182; }
      - +export function func183() { return 183; }
      - +export function func184() { return 184; }
      - +export function func185() { return 185; }
      - +export function func186() { return 186; }
      - +export function func187() { return 187; }
      - +export function func188() { return 188; }
      - +export function func189() { return 189; }
      - +export function func190() { return 190; }
      - +export function func191() { return 191; }
      - +export function func192() { return 192; }
      - +export function func193() { return 193; }
      - +export function func194() { return 194; }
      - +export function func195() { return 195; }
      - +export function func196() { return 196; }
      - +export function func197() { return 197; }
      - +export function func198() { return 198; }
      - +export function func199() { return 199; }
      - +export function func200() { return 200; }
      - +export function func201() { return 201; }
    task: 添加 lib/utils/complex.ts 复杂工具函数集
    logEntries: []
  expected:
    result: WARN
    rules_triggered:
    - E4
    severity: P1
