feat(install): persist unreviewed-builds warning across repeat installs#476
feat(install): persist unreviewed-builds warning across repeat installs#476
Conversation
Greptile SummaryPersists Confidence Score: 5/5Safe to merge — additive state field with serde default, no behaviour change on existing paths, and well-tested. No P0 or P1 findings. The guard conditions are consistent between computation, persistence, and emission; the serde default and From impl handle backward compatibility correctly; unit tests cover round-trip and legacy-file defaulting; a Bats integration test covers the end-to-end warm-path re-emission. No files require special attention. Important Files Changed
Reviews (3): Last reviewed commit: "feat(install): persist unreviewed-builds..." | Re-trigger Greptile |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 42ec34d. Configure here.
42ec34d to
85ac681
Compare
|
Addressed Greptile P1: state-persistence guard at install/mod.rs:4108 now also checks cargo build/clippy/fmt clean. Force-pushed. Written with Claude. |
Benchmark changesPublic ratios: warm installs vs Bun 7x -> 10x; warm installs vs pnpm 11x -> 15x.
daf7bf0 vs 489b4ad | aube/bun/pnpm | 3 scenarios | 3 runs | 500mbit/50ms | generated by Codex. |
The warm-path short-circuit returned before the unreviewed-builds warning fired, so the second `aube install` with no manifest or lockfile changes went silent and users forgot pending build approvals — exactly the failure mode `strictDepBuilds` exists to backstop. Persist the unreviewed-build spec keys in `.aube-state` alongside the existing freshness fields, and re-emit the same `tracing::warn!` line from both warm-path branches when the set is non-empty. The allowBuilds review-placeholder write stays on the full pipeline, so warm installs nudge without re-seeding. Ports pnpm/test/install/lifecycleScripts.ts:245 (16/21 in the pnpm test import map) — wording substituted to aube's canonical `ignored build scripts for N package(s)` per the existing divergence note. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
85ac681 to
daf7bf0
Compare
|
Addressed Cursor's low-severity finding: Confirmed: cargo build/clippy/fmt clean, Written with Claude. |

Summary
aube installruns short-circuit through the warm path, which returns before the unreviewed-builds warning fires. Users were silently losing the nudge to runaube approve-buildsbetween installs — exactly the failure modestrictDepBuildsexists to backstop..aube-state(newunreviewed_builds: Vec<String>on bothInstallStateandFreshnessState) and re-emit the sametracing::warn!line from both warm-path branches (missing_lockfile_restore_eligibleandwarm_path_eligible) when the set is non-empty. The allowBuilds review-placeholder write stays on the full pipeline, so warm installs nudge without re-seeding.pnpm/test/install/lifecycleScripts.ts:245('warning is shown when an install with --no-frozen-lockfile reuses an existing node_modules with ignored build scripts'). Wording substituted to aube's canonicalignored build scripts for N package(s)per the existing divergence note.Background: triaged as
supportin #471 (test/PNPM_TEST_IMPORT.md). Companion to #472, which landed the bare-shorthand parser fix.Test plan
cargo buildcargo test --workspace— 362+239+169+... all green; the two new state round-trip tests (unreviewed_builds_roundtrip_persists_into_fresh_state,unreviewed_builds_default_when_field_missing_in_state) confirm legacy state files load via the serde default and the new field round-trips through the FreshnessState sidecar.cargo clippy --all-targets -- -D warningscargo fmt --check./test/bats/bin/bats test/lifecycle_scripts.bats— 34/34 ok including the newaube install re-emits ignored-build-scripts warning on repeat install./test/bats/bin/bats test/approve_builds.bats— 10/10 ok (regression check on the existing warning emission path)🤖 Generated with Claude Code
Note
Medium Risk
Touches install warm-path short-circuit logic and the persisted
.aube-stateschema; regressions could cause incorrect warning behavior or state incompatibilities on upgrade, though the change is additive and guarded with serde defaults.Overview
Repeat
aube installruns that short-circuit via the warm path (and the missing-lockfile-restore fast path) now re-emit the ignored build scripts warning by reading a persistedunreviewed_buildslist from.aube-state.The install pipeline now computes the unreviewed-build set once, stores it in
InstallState/FreshnessState, and centralizes warning formatting inemit_unreviewed_builds_warning; new unit tests cover round-tripping/defaulting of the new state field, and a new Bats test asserts the warning appears on a repeat no-op install.Reviewed by Cursor Bugbot for commit daf7bf0. Bugbot is set up for automated code reviews on this repo. Configure here.