cc9af04a40
字段改名(每项取舍的理由见新增的 references/concepts.md):
- 用例 status -> lifecycle, suite -> tag, surface -> driver,
cleanup -> teardown, skip_unless -> assume;删除 requires
- risk 取值 safe/act/harm -> readonly/mutating/destructive(单调三级,
与 gate 正交)
- catalog auth_env -> authorize;授权变量统一为
AUTHORIZE_MUTATING / AUTHORIZE_DESTRUCTIVE
新增用例字段 automation(automated/assisted/manual),默认 automated,
并在 validate 里机器校验:manual 禁用 driver 与 how.run 且必须有
how.steps;assisted 至少一步以 [人工] 开头。select 新增 --automation。
结果词新增 not-run,区分「主动不跑」(skipped:retired/pending/超风险
上限/未授权/assume 不成立)与「没轮到」(失败即停后、被分类前置挡住整组、
需人工而无人值守)。
status_probe 定为分类级前置条件:catalog 顶层为默认,categories[] 同名键
覆盖(缺省继承 / false 关闭 / mapping 整体替换)。select 按分类返回生效值,
并把 probe.url 用 vars 展开(solve Agent 无法自行解析 ${VAR} 的问题),
同批返回 vars 供 how 里的 ${...} 替换。
新增 references/concepts.md:术语表(每词一句唯一定义 + 业界锚点 +
反例)、v1->v2 映射、以及 risk/automation/not-run/status_probe 的设计理由。
其余文档(SKILL/README/schema/levels/run/maintain)与三个脚本(catalog、
generate_cases_csv、generate_run_csv)同步更新。
1.9 KiB
1.9 KiB
tester 维护用例
只在用户要加、改、退役时读本文件。写之前必须把完整条目亮给用户,确认后再落盘。
加一条
- 分类必须已在
catalog.yaml的categories里。没有就先改 catalog(仍要确认)。 - 取编号:
python3 <skill-dir>/scripts/catalog.py next-id --root <root> --category <CAT>
- 拟一条符合 schema.md 的用例。
tag/risk按 levels.md:smoke只能readonly;会改状态用mutating,难恢复用destructive。细分授权用gate,不要发明新的 risk 名。需人工参与的填automation(见 concepts.md)。 driver=browser|mobile必须填session,且 catalog 里已声明。what和expected写成可观察信号,禁止「应该正常」。- 给用户看拟写内容。确认后写入
cases/<category小写>.yaml的cases列表末尾。 validate。失败则修好再结束。通过后跑generate_cases_csv.py --root <root>刷新.pouch/tester/cases.csv。不要手改这份 CSV。
完善 / 更新
show --id <id>。- 只改用户点名的字段(常见:
how、expected、risk、automation、notes)。 - 展示 diff 或更新后的整条。确认后写回。
validate。通过后跑generate_cases_csv.py刷新cases.csv。
退役
把 lifecycle 改为 retired,不要删文件、不要复用 id。notes 写原因。确认后写回,再跑 generate_cases_csv.py。
禁止
- 未确认就写
- 把 browser/mobile 改成 script 来「省事」
- 为了能在默认风险下跑而把
risk改低 - 一次塞进无关的一批用例
- 手改
runs/冒充执行记录 - 手改
cases.csv(必须从cases/*.yaml生成;last_*列来自最近一次runs/*.yaml) - 手改
runs/*.csv(必须从对应 yaml 用generate_run_csv.py生成)