ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; review requested from mi; merge scheduled for when the checks succeed
werkrevisor: ORANGE / FINDINGS for 8a2c916848c1a81a975a1f412f58abd76d2d086e.
The result comment of werkrevisor holds the details.
werkrevisor: ORANGE / FINDINGS for `8a2c916848c1a81a975a1f412f58abd76d2d086e`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:8a2c916848c1a81a975a1f412f58abd76d2d086e -->
Backup Overwrite, severity unknown, counted as medium (werkrevisor)
ORANGE; Jev: real 0.81, severity 3.0 of 3
The remote block uses cp -p "$yml" "$yml.bak-before-$version" to back up .werkator.yml before sed rewrites it. If the same version is deployed again (intentionally, or by accident after a half-finished first run, a wrong version number, or a rollback to an earlier archive), the existing backup is silently overwritten with the current state. The PR document calls out the backup as the rollback handle, so this destroys the only on-target record of the pre-deployment archive name. A guard like [[ ! -f "$yml.bak-before-$version" ]] || cp -p ... would preserve the original backup.
**Backup Overwrite**, severity unknown, counted as medium (werkrevisor)
ORANGE; Jev: real 0.81, severity 3.0 of 3
The remote block uses `cp -p "$yml" "$yml.bak-before-$version"` to back up `.werkator.yml` before `sed` rewrites it. If the same version is deployed again (intentionally, or by accident after a half-finished first run, a wrong version number, or a rollback to an earlier archive), the existing backup is silently overwritten with the current state. The PR document calls out the backup as the rollback handle, so this destroys the only on-target record of the pre-deployment archive name. A guard like `[[ ! -f "$yml.bak-before-$version" ]] || cp -p ...` would preserve the original backup.
Review round of 8a2c9168: the ORANGE finding is fixed in 8e11f82. The YELLOW for tools/build-rootfs stays: the build now deletes old archives and image tags, which needs the approval of the human user.
Review round of `8a2c9168`: the ORANGE finding is fixed in `8e11f82`. The YELLOW for `tools/build-rootfs` stays: the build now deletes old archives and image tags, which needs the approval of the human user.
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; a human review request is pending; merge already scheduled
werkrevisor: ORANGE / FINDINGS for 8e11f82d33e763bbd1d56e3563c580a645dbc163.
The result comment of werkrevisor holds the details.
werkrevisor: ORANGE / FINDINGS for `8e11f82d33e763bbd1d56e3563c580a645dbc163`.
The result comment of werkrevisor holds the details.
<!-- werkrevisor-review:8e11f82d33e763bbd1d56e3563c580a645dbc163 -->
[high] Wrong config path in in-use grep (werkrevisor)
ORANGE; Jev: real 0.90, severity 3.0 of 3
Line 47 greps ~/*/.git/werkator/.werkrevisor.yml to compute the in-use archives, but the script edits ~/<repo>/.git/werkator/.werkator.yml (line 38) and the README, the script's own usage comment, and the PR document only mention .werkator.yml. Because the grep matches nothing, the in-use set is always empty and any archive still named in a .werkator.yml is treated as removable, so a deploy can delete the file system of running werkrevisor reviews and contradicts scenario#69.02 ("the deploy removes no archive that a config still uses").
**[high] Wrong config path in in-use grep** (werkrevisor)
ORANGE; Jev: real 0.90, severity 3.0 of 3
Line 47 greps `~/*/.git/werkator/.werkrevisor.yml` to compute the in-use archives, but the script edits `~/<repo>/.git/werkator/.werkator.yml` (line 38) and the README, the script's own usage comment, and the PR document only mention `.werkator.yml`. Because the grep matches nothing, the in-use set is always empty and any archive still named in a `.werkator.yml` is treated as removable, so a deploy can delete the file system of running werkrevisor reviews and contradicts scenario#69.02 ("the deploy removes no archive that a config still uses").
Not a problem, no change: line 47 reads grep -ohE 'werkrevisor-rootfs-[0-9]+(\.[0-9]+)+\.tar\.zst' ~/*/.git/werkator/.werkator.yml, the same file that line 38 edits. The pattern names the archive werkrevisor-rootfs-…, not the config file.
Not a problem, no change: line 47 reads `grep -ohE 'werkrevisor-rootfs-[0-9]+(\.[0-9]+)+\.tar\.zst' ~/*/.git/werkator/.werkator.yml`, the same file that line 38 edits. The pattern names the archive `werkrevisor-rootfs-…`, not the config file.
Review round of 8e11f82d: the ORANGE finding is wrong, answered without a change; the grep reads .werkator.yml. ORANGE and the YELLOW for tools/build-rootfs need the approval of the human user.
Review round of `8e11f82d`: the ORANGE finding is wrong, answered without a change; the grep reads `.werkator.yml`. ORANGE and the YELLOW for `tools/build-rootfs` need the approval of the human user.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
See the PR document.
🤖 Generated with Claude Code
🟠 werkrevisor ORANGE for
8a2c916, superseded by the result for8e11f82🟠 werkrevisor: ORANGE / FINDINGS
Change kind:
mixed.Reasons
Findings
tools/deploy-rootfs:39, severity unknown, counted as medium, ORANGE, as a line commentClassifier
6 of 6 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 12168, calls 1, tokens in 11730 / out 43621 (reasoning included in out), duration 346.8 s, cost 0.0558 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4909, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1550, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 3089 / out 1821, cost 0.0031 USD (reported), PR document check `jev-1.13.0` calls 6, tokens in 9139, cost 0.0004 USD, build file judge `jev-1.13.0` calls 6, tokens in 4851, cost 0.0002 USD, phases: path_judge 0.5 s, classifier 0.5 s, change_summary 15.2 s, doc_check 0.6 s, context 1.5 s, model_review 328.0 s, finding_judge 0.3 s, config: defaults + host + repository (.werkrevisor.toml at main62eb894).Reviewed head `8a2c916848c1a81a975a1f412f58abd76d2d086e` against base `62eb8948ca2d77f2291b38f4473ae55edc8d59eb`, werkrevisor 0.31.2.
werkrevisor: ORANGE / FINDINGS for
8a2c916848c1a81a975a1f412f58abd76d2d086e.The result comment of werkrevisor holds the details.
@@ -0,0 +36,4 @@set -euo pipefailrepo="$1" name="$2" version="$3"yml=~/"$repo"/.git/werkator/.werkator.ymlcp -p "$yml" "$yml.bak-before-$version"Backup Overwrite, severity unknown, counted as medium (werkrevisor)
ORANGE; Jev: real 0.81, severity 3.0 of 3
The remote block uses
cp -p "$yml" "$yml.bak-before-$version"to back up.werkator.ymlbeforesedrewrites it. If the same version is deployed again (intentionally, or by accident after a half-finished first run, a wrong version number, or a rollback to an earlier archive), the existing backup is silently overwritten with the current state. The PR document calls out the backup as the rollback handle, so this destroys the only on-target record of the pre-deployment archive name. A guard like[[ ! -f "$yml.bak-before-$version" ]] || cp -p ...would preserve the original backup.Fixed in
8e11f82: an existing backup of the same version stays; only the first deploy of a version writes it.Review round of
8a2c9168: the ORANGE finding is fixed in8e11f82. The YELLOW fortools/build-rootfsstays: the build now deletes old archives and image tags, which needs the approval of the human user.🟠 werkrevisor: ORANGE / FINDINGS
Change kind:
mixed.Reasons
Findings
tools/deploy-rootfs:47, ORANGE, as a line commentClassifier
6 of 6 units passed all questions (1 PR document(s)).
Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 12269, calls 1, tokens in 11824 / out 20369 (reasoning included in out), duration 142.9 s, cost 0.0263 USD (reported), classifier `jev-1.13.0` calls 6, tokens in 4909, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1463, cost 0.0001 USD, change summary `openrouter/minimax/minimax-m3` via Minimax calls 1, tokens in 3134 / out 1101, cost 0.0022 USD (reported), PR document check `jev-1.13.0` calls 6, tokens in 9019, cost 0.0004 USD, build file judge `jev-1.13.0` calls 6, tokens in 4897, cost 0.0002 USD, phases: path_judge 0.6 s, classifier 0.5 s, change_summary 5.3 s, doc_check 0.4 s, context 0.2 s, model_review 134.9 s, finding_judge 0.2 s, config: defaults + host + repository (.werkrevisor.toml at main62eb894).Reviewed head `8e11f82d33e763bbd1d56e3563c580a645dbc163` against base `62eb8948ca2d77f2291b38f4473ae55edc8d59eb`, werkrevisor 0.31.2.
werkrevisor: ORANGE / FINDINGS for
8e11f82d33e763bbd1d56e3563c580a645dbc163.The result comment of werkrevisor holds the details.
@@ -0,0 +44,4 @@donein_use=$(ssh "${ssh_opts[@]}" "$target" \"grep -ohE 'werkrevisor-rootfs-[0-9]+(\.[0-9]+)+\.tar\.zst' ~/*/.git/werkator/.werkator.yml | sort -u")[high] Wrong config path in in-use grep (werkrevisor)
ORANGE; Jev: real 0.90, severity 3.0 of 3
Line 47 greps
~/*/.git/werkator/.werkrevisor.ymlto compute the in-use archives, but the script edits~/<repo>/.git/werkator/.werkator.yml(line 38) and the README, the script's own usage comment, and the PR document only mention.werkator.yml. Because the grep matches nothing, the in-use set is always empty and any archive still named in a.werkator.ymlis treated as removable, so a deploy can delete the file system of running werkrevisor reviews and contradicts scenario#69.02 ("the deploy removes no archive that a config still uses").Not a problem, no change: line 47 reads
grep -ohE 'werkrevisor-rootfs-[0-9]+(\.[0-9]+)+\.tar\.zst' ~/*/.git/werkator/.werkator.yml, the same file that line 38 edits. The pattern names the archivewerkrevisor-rootfs-…, not the config file.Review round of
8e11f82d: the ORANGE finding is wrong, answered without a change; the grep reads.werkator.yml. ORANGE and the YELLOW fortools/build-rootfsneed the approval of the human user.