CI / fmt (rustfmt --check) (push) Waiting to run
CI / clippy (ubuntu-latest) (push) Waiting to run
CI / clippy (windows-latest) (push) Waiting to run
CI / test (ubuntu-latest) (push) Waiting to run
CI / test (windows-latest) (push) Waiting to run
CI / build release (ubuntu-latest) (push) Waiting to run
CI / build release (windows-latest) (push) Waiting to run
CI / runtime smoke (ubuntu x64, xvfb) (push) Waiting to run
CI / runtime smoke (macos arm64, probe) (push) Skipped
CI / update-e2e (windows x64) (push) Waiting to run
GPU evidence / GPU 判据自测(不需 GPU;跳过 ≠ 已验证) (push) Waiting to run
GPU evidence / GPU 证据 — 探测可用产物与硬件适配器 (push) Waiting to run
Guards / core 零 UI 守门 (push) Waiting to run
Guards / presenter 零 UI 守门 (push) Waiting to run
Guards / design 零第三方依赖守门 (push) Waiting to run
Guards / unsafe 落点守门(集合必须恰好等于期望) (push) Waiting to run
Guards / 文件行数 ≤400 守门 (push) Waiting to run
Guards / 依赖许可与来源(cargo-deny) (push) Waiting to run
Release guard / 发布标记语义守门(push tag → 稳定版) (push) Waiting to run
Signing status(播报,不是门禁) / 判据自测(三行/退出码/变异重放/接线) (push) Waiting to run
Signing status(播报,不是门禁) / 签名就绪度(播报) (push) Waiting to run
Release / 选槽位(默认四个:Windows 两档 + Linux 两档) (push) Waiting to run
本批内容见 CHANGELOG.md 的 0.2.4 段。按 D41 用孤儿快照推 main,保留「公开史只有里程碑」的模型。
237 lines
10 KiB
JSON
237 lines
10 KiB
JSON
{
|
||
"baseline": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n",
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n - run: cargo build --release\n",
|
||
".github/workflows/release-publish.yml": "jobs:\n update-e2e:\n steps:\n - run: echo publish\n",
|
||
"packaging/make_artifacts.py": "def build():\n return 'cargo build --release'\n",
|
||
"packaging/tests/build.sh": "#!/bin/sh\ncargo build --release\n",
|
||
"Makefile": "build:\n\tcargo build --release\n",
|
||
"Cargo.toml": "[workspace]\nmembers = []\n",
|
||
"crates/core/Cargo.toml": "[features]\nupdate-test-source = []\n# 注释里提到它不算违规\n"
|
||
},
|
||
"vectors": [
|
||
{
|
||
"label": "allowlist:ci.yml 的 update-e2e 一步",
|
||
"expect": "green",
|
||
"files": {}
|
||
},
|
||
{
|
||
"label": "allowlist:同一步放进 release-build.yml",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "allowlist:步骤名改成 update-e2e-r2",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e-r2\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "allowlist:少了 --test update_e2e_test",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_tamper_test\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "allowlist:发布工作流里另起一步",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/release-publish.yml": "jobs:\n update-e2e:\n steps:\n - name: leak\n - run: cargo build --release --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "allowlist:ci.yml 里另一个具名步骤",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n - name: another\n - run: cargo build --release --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-1 ①:末尾追加无名步骤",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n - run: cargo build --release --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-1 ②:末尾追加无名步骤的整个 job",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n release-from-ci:\n steps:\n - run: cargo build --release --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-1 ③:flow 风格步骤",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n - {name: release-build, run: \"cargo build --features update-test-source\"}\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-1 ④:步骤写在 jobs: 之前(孤儿行)",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": " - run: cargo build --release --features update-test-source\njobs:\n update-e2e:\n steps:\n - run: echo hi\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-1 ⑤:`run: |` 块里伪造 `name: update-e2e`",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - run: |\n echo 'name: update-e2e'\n cargo build --release --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2 ①:`#` 在引号内、真命令在后面",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n - run: echo \"#\"; cargo build --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2 ②:shell 变量拼接(字面量仍在)",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n - run: FEAT=\"update-test-source\"; cargo build --features \"$FEAT\"\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "Cargo ①:default 把 feature 带上",
|
||
"expect": "red",
|
||
"files": {
|
||
"crates/core/Cargo.toml": "[features]\nupdate-test-source = []\n# 注释里提到它不算违规\ndefault = [\"update-test-source\"]\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "Cargo ②:别的 feature 依赖它",
|
||
"expect": "red",
|
||
"files": {
|
||
"crates/core/Cargo.toml": "[features]\nupdate-test-source = []\n# 注释里提到它不算违规\nrelease = [\"update-test-source\"]\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "误杀 ①:注释里提到该 feature",
|
||
"expect": "green",
|
||
"files": {
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n # 这里不许加 update-test-source\n - run: cargo build --release\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "误杀 ②:允许的那一步把 `run:` 写在 `name:` 之前(键序无关)",
|
||
"expect": "green",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - run: cargo test --release --features update-test-source --test update_e2e_test\n name: update-e2e\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "误杀 ③:`cargo hack check --all-targets`(不打开任何 feature)",
|
||
"expect": "green",
|
||
"files": {
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n - run: cargo hack check --all-targets\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "误杀 ④:Cargo 多行 feature 声明",
|
||
"expect": "green",
|
||
"files": {
|
||
"crates/core/Cargo.toml": "[features]\nupdate-test-source = [\n \"unlucky-core/update-test-source\",\n \"unlucky-cli/update-test-source\",\n]\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2:cargo hack --feature-powerset",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n - run: cargo hack --feature-powerset build\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2:cargo hack --each-feature",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n - run: cargo hack --each-feature build\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2:cargo hack --all",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/release-build.yml": "jobs:\n update-e2e:\n steps:\n - run: cargo hack --all build\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2 扫描面:packaging/tests/build.sh",
|
||
"expect": "red",
|
||
"files": {
|
||
"packaging/tests/build.sh": "#!/bin/sh\ncargo build --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2 扫描面:.github/actions/rebuild/action.yml",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/actions/rebuild/action.yml": "runs:\n using: composite\n steps:\n - run: cargo build --features update-test-source\n shell: bash\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2 扫描面:.github/workflows/nested/extra.yml",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/nested/extra.yml": "jobs:\n update-e2e:\n steps:\n - run: cargo build --release --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2 扫描面:Makefile",
|
||
"expect": "red",
|
||
"files": {
|
||
"Makefile": "build:\n\tcargo build --release --features update-test-source\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-1 ⑥:`name:` 写在更深缩进的 env 子项里",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n - run: cargo build --release -p unlucky-cli --features update-test-source\n env:\n T: --test update_e2e_test\n HINT: |\n - name: update-e2e\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-1 ⑦:`name:` 写在 `run: |` 块标量里",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n if: runner.os == 'Windows'\n run: |\n cargo test --release -p unlucky-cli --features update-test-source \\\n --test update_e2e_test --test update_e2e_tamper_test\n - run: |\n name: update-e2e\n cargo build --release --features update-test-source --test update_e2e_test\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-1 ⑧:同一项里两个不同的 `name:`",
|
||
"expect": "red",
|
||
"files": {
|
||
".github/workflows/ci.yml": "jobs:\n update-e2e:\n steps:\n - name: update-e2e\n run: cargo build --release --features update-test-source --test update_e2e_test\n name: release-build\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2 ①:.cargo/config.toml 用 `--cfg feature=` 开该 feature",
|
||
"expect": "red",
|
||
"files": {
|
||
".cargo/config.toml": "[build]\nrustflags = [\"--cfg\", 'feature=\"update-test-source\"']\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "P2-2 ②:.cargo/config.toml 设 rustc-wrapper",
|
||
"expect": "red",
|
||
"files": {
|
||
".cargo/config.toml": "[build]\nrustc-wrapper = \"./tools/wrapper\"\n"
|
||
}
|
||
},
|
||
{
|
||
"label": "误杀 ⑤:普通 .cargo/config.toml(无 feature / 无 wrapper)",
|
||
"expect": "green",
|
||
"files": {
|
||
".cargo/config.toml": "[build]\njobs = 4\n"
|
||
}
|
||
}
|
||
]
|
||
}
|