mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-16 21:21:03 +08:00
docs(Agents): 全量回归仅在明确要求或发版时运行
This commit is contained in:
@@ -7,8 +7,8 @@ description: Use when the user asks to run the full AtomUI regression test suite
|
||||
|
||||
## 触发条件
|
||||
|
||||
用户要求全量回归 / 跑全部测试 / full regression、执行 version-release,或一个 Bug 修复已经完成 focused 红绿迭代并进入
|
||||
最终门禁时使用。Bug 修复过程中禁止提前调用本 skill;单个项目或少量测试的日常迭代直接使用精确 `dotnet test --filter`
|
||||
仅在用户明确要求全量回归 / 跑全部测试 / full regression,或执行 version-release 时使用。Bug 修复和普通代码改动
|
||||
完成后不自动调用本 skill,只验证所修改模块的测试;单个项目或少量测试的日常迭代直接使用精确 `dotnet test --filter`
|
||||
或 `test.py run --scope iterate --path ...`。
|
||||
|
||||
## 执行方式
|
||||
|
||||
@@ -143,21 +143,22 @@ Detailed AI collaboration rules live in [docs/engineering/contributing/agent-gui
|
||||
|
||||
## Common Commands
|
||||
|
||||
Use [affected verification](docs/engineering/workflows/affected-verification.md) as the default. The following bug-fix sequence is a mandatory hard constraint:
|
||||
Use [affected verification](docs/engineering/workflows/affected-verification.md) as the default. The following sequence is a mandatory hard constraint for bug fixes and ordinary code changes:
|
||||
|
||||
1. Reproduce with the exact failing test or test class.
|
||||
2. During implementation, run only the owning module through `run --scope iterate --path ...`; every iterate run must name its module paths explicitly.
|
||||
3. Do not run local `change` scope, affected-wide regression, or full regression while the fix is still changing.
|
||||
4. After all focused module tests are green and the implementation is stable, run `scripts/run-full-regression.sh` exactly once as the final regression gate.
|
||||
5. If that full run fails, let it finish and collect the complete failure list. Repair every failure with focused tests, then run one final full confirmation. Never rerun the full suite after each individual failure.
|
||||
1. For a bug, reproduce with the exact failing test or test class.
|
||||
2. Verify only the modules you changed, through `run --scope iterate --path ...` or an exact `dotnet test --filter`; every iterate run must name its module paths explicitly.
|
||||
3. Do not run local `change` scope, affected-wide regression, or full regression on your own initiative. Focused tests of the changed modules are the completion gate.
|
||||
4. Run `scripts/run-full-regression.sh` only when the user explicitly asks for it or during a release (`version-release`).
|
||||
5. When a full run does happen and fails, let it finish and collect the complete failure list. Repair every failure with focused tests, then run one final full confirmation. Never rerun the full suite after each individual failure.
|
||||
|
||||
These steps are enforced by the verification CLI. Local `change` scope requires an explicit branch base, local `full` scope is rejected, and focused iterate scope requires `--path`. CI may continue to use `--base`/`--tests-only` for selected or baseline jobs.
|
||||
|
||||
```bash
|
||||
python3 scripts/verification/test.py plan
|
||||
python3 scripts/verification/test.py run --scope iterate --path src/AtomUI.Desktop.Controls/Popup
|
||||
scripts/run-full-regression.sh
|
||||
python3 scripts/verification/test.py audit
|
||||
# Only on explicit user request or during a release:
|
||||
scripts/run-full-regression.sh
|
||||
```
|
||||
|
||||
For CI or an explicitly requested committed-branch comparison, pass `--scope change --base <target-branch>`. Direct project commands below are for reproduction and module-focused diagnosis:
|
||||
|
||||
@@ -117,6 +117,7 @@ AtomUI 自身版本由 `build/Versions.props` 中的 `AtomUIVersion` 管理。
|
||||
```bash
|
||||
python3 scripts/verification/test.py plan
|
||||
python3 scripts/verification/test.py run --scope iterate --path <affected-module-path>
|
||||
# 仅在用户明确要求或发版时:
|
||||
scripts/run-full-regression.sh
|
||||
```
|
||||
|
||||
|
||||
@@ -140,9 +140,9 @@ Gallery 改动时注意:
|
||||
|
||||
- Bug 修复必须先以精确失败用例复现;修复迭代期间只运行缺陷所属模块和该模块显式映射的测试,不得运行 affected-wide 或全量回归。
|
||||
- focused runner 必须显式传入一个或多个 `--path`。禁止直接对包含多个无关改动的整个工作树运行 iterate,并禁止用 `--include-test` 冒充模块路径范围。
|
||||
- Bug 修复稳定且模块测试全绿后,必须且只能启动一次 `scripts/run-full-regression.sh` 作为最终门禁。不要在此之前额外运行本地 change 范围。
|
||||
- 全量回归遇到失败时必须让脚本继续收集所有项目结果;随后逐项做 focused 修复。全部局部转绿后只再运行一次最终全量确认,禁止每修一个失败就重跑全量。
|
||||
- 非 Bug 的普通代码改动仍默认不执行全量回归;只有用户明确要求或执行 `version-release` skill 时才执行。
|
||||
- Bug 修复与普通代码改动的完成门禁都是“所修改模块的测试全绿”,不再自行追加全量回归或本地 change 范围。
|
||||
- `scripts/run-full-regression.sh` 只在用户明确要求或发版(执行 `version-release` skill)时运行。
|
||||
- 确需运行的全量回归遇到失败时必须让脚本继续收集所有项目结果;随后逐项做 focused 修复。全部局部转绿后只再运行一次最终全量确认,禁止每修一个失败就重跑全量。
|
||||
- 验证结果必须明确记录实际执行的测试范围、命令和结果;未执行的全量回归测试不得表述为已完成。
|
||||
|
||||
不要在没有最新验证输出时声称“已修复”“测试通过”或“发布可用”。
|
||||
|
||||
@@ -16,7 +16,7 @@ python3 scripts/verification/test.py run --scope iterate \
|
||||
--path src/AtomUI.Desktop.Controls/Popup \
|
||||
--path tests/AtomUI.Desktop.Controls.Tests/Popup
|
||||
|
||||
# Bug 修复完成后的唯一最终全量门禁
|
||||
# 全量回归:仅在用户明确要求或发版时运行;Bug 修复与普通改动只验证所修改的模块
|
||||
scripts/run-full-regression.sh
|
||||
|
||||
# 分支/CI affected 比较:必须显式提供比较基线
|
||||
@@ -128,12 +128,12 @@ runner 用临时 solution 汇总选中项目,一次构建共享依赖;构建
|
||||
工具不提供 `--ignore-obligations` 或仅凭文字声明生成成功 receipt 的开关。NativeAOT publish 也不等于 UI 行为验证;
|
||||
hover、滚动、裁剪、资源释放等仍保留原始复现条件和交互/生命周期检查。
|
||||
|
||||
依赖与 SDK 变更需要显式全量及目标平台/TFM 验证;focused 执行不会为了扩大范围自动运行全量。
|
||||
依赖与 SDK 变更需要目标平台/TFM 验证;全量回归仍只在用户明确要求或发版时运行,focused 执行不会为了扩大范围自动运行全量。
|
||||
|
||||
## 全量、CI 和维护
|
||||
|
||||
```bash
|
||||
# Bug 修复最终门禁、用户明确要求或版本发布时使用
|
||||
# 仅在用户明确要求或版本发布时使用
|
||||
scripts/run-full-regression.sh
|
||||
|
||||
# 维护影响规则时的快速检查
|
||||
|
||||
@@ -140,8 +140,8 @@ class Planner:
|
||||
for reader in self.file_readers.get(Path(path).name, set()):
|
||||
selected[reader].add("Reads repository input: " + path)
|
||||
handled = True
|
||||
# Bug-fix iteration stays inside the owning module. Shared/cross-module
|
||||
# policy rules are deferred to the single final full regression.
|
||||
# Iteration stays inside the changed modules. Shared/cross-module policy
|
||||
# rules apply to change scope (CI) and to explicit or release full runs.
|
||||
for rule in self.policy.get("rules", []) if scope != "iterate" else []:
|
||||
if any(matches(path, g) for g in rule["changes"]):
|
||||
choose(rule.get("tests", []), rule["id"] + ": " + path)
|
||||
|
||||
@@ -34,7 +34,7 @@ def print_plan(plan):
|
||||
print("REQUIRED " + check["id"] + ": " + check["description"])
|
||||
if not plan["changes"] and plan["scope"] != "full":
|
||||
print("No local changes relative to HEAD. Use --base REF to include committed branch changes.")
|
||||
print("Final full regression is explicit: run scripts/run-full-regression.sh once after the bug-fix loop is green.")
|
||||
print("Full regression is not part of the change gate: run scripts/run-full-regression.sh only on explicit request or during a release.")
|
||||
|
||||
|
||||
def parser():
|
||||
|
||||
Reference in New Issue
Block a user