fix(cli): prevent stale file_page rows from surviving repowise update (#1744) - #1906
fix(cli): prevent stale file_page rows from surviving repowise update (#1744)#1906kunnalsinngh14 wants to merge 1 commit into
Conversation
|
✅ Health of changed files: 1.8 → 2.1 (+0.3) 📋 At a glance ✅ Health gate: passed 📌 Before you merge
🔎 More signals (3)🗺️ Change map flowchart LR
subgraph PR ["Changed in this PR (3 with dependents)"]
f_packages_cli_src_repowise_cli_commands_update_cmd_command_py[".../update_cmd/command.py 🔥"]:::changed
f_packages_cli_src_repowise_cli_commands_update_cmd_deterministic_py[".../update_cmd/deterministic.py 🔥"]:::changed
f_packages_core_src_repowise_core_workspace_update_py[".../workspace/update.py 🔥"]:::changed
end
f_packages_cli_src_repowise_cli_commands_generate_cmd_command_py[".../generate_cmd/command.py"]
f_packages_cli_src_repowise_cli_commands_update_cmd_command_py --> f_packages_cli_src_repowise_cli_commands_generate_cmd_command_py
f_packages_cli_src_repowise_cli_commands_init_cmd_command_py[".../init_cmd/command.py"]
f_packages_cli_src_repowise_cli_commands_update_cmd_command_py --> f_packages_cli_src_repowise_cli_commands_init_cmd_command_py
f_packages_cli_src_repowise_cli_commands_init_cmd_generation_py[".../init_cmd/generation.py"]
f_packages_cli_src_repowise_cli_commands_update_cmd_command_py --> f_packages_cli_src_repowise_cli_commands_init_cmd_generation_py
f_packages_cli_src_repowise_cli_commands_init_cmd_persistence_py[".../init_cmd/persistence.py"]
f_packages_cli_src_repowise_cli_commands_update_cmd_command_py --> f_packages_cli_src_repowise_cli_commands_init_cmd_persistence_py
f_packages_cli_src_repowise_cli_commands_update_cmd_deterministic_py --> f_packages_cli_src_repowise_cli_commands_init_cmd_command_py
f_packages_cli_src_repowise_cli_commands_restyle_cmd_py[".../commands/restyle_cmd.py"]
f_packages_cli_src_repowise_cli_commands_update_cmd_deterministic_py --> f_packages_cli_src_repowise_cli_commands_restyle_cmd_py
f_packages_cli_src_repowise_cli_commands_doctor_cmd_workspace_checks_py[".../doctor_cmd/workspace_checks.py"]
f_packages_core_src_repowise_core_workspace_update_py --> f_packages_cli_src_repowise_cli_commands_doctor_cmd_workspace_checks_py
f_packages_cli_src_repowise_cli_commands_init_cmd_workspace_py[".../init_cmd/workspace.py"]
f_packages_core_src_repowise_core_workspace_update_py --> f_packages_cli_src_repowise_cli_commands_init_cmd_workspace_py
f_packages_cli_src_repowise_cli_commands_update_cmd_incremental_py[".../update_cmd/incremental.py"]
f_packages_core_src_repowise_core_workspace_update_py --> f_packages_cli_src_repowise_cli_commands_update_cmd_incremental_py
f_packages_cli_src_repowise_cli_commands_update_cmd_persistence_py[".../update_cmd/persistence.py"]
f_packages_core_src_repowise_core_workspace_update_py --> f_packages_cli_src_repowise_cli_commands_update_cmd_persistence_py
more(["+9 more dependents"])
PR --> more
w_packages_cli_src_repowise_cli_commands_update_cmd_persistence_py(["⚠️ .../update_cmd/persistence.py changed together 14×, not in PR"]):::warn
f_packages_cli_src_repowise_cli_commands_update_cmd_command_py -.- w_packages_cli_src_repowise_cli_commands_update_cmd_persistence_py
w_packages_cli_src_repowise_cli_commands_init_cmd_command_py(["⚠️ .../init_cmd/command.py changed together 10×, not in PR"]):::warn
f_packages_cli_src_repowise_cli_commands_update_cmd_command_py -.- w_packages_cli_src_repowise_cli_commands_init_cmd_command_py
t_tests_integration_test_cli_py(["✅ tests/integration/test_cli.py"]):::guard
t_tests_integration_test_cli_py -.-> f_packages_cli_src_repowise_cli_commands_update_cmd_command_py
t_tests_unit_cli_test_deterministic_update_py(["✅ .../cli/test_deterministic_update.py"]):::guard
t_tests_unit_cli_test_deterministic_update_py -.-> f_packages_cli_src_repowise_cli_commands_update_cmd_deterministic_py
t_tests_unit_cli_test_update_lock_py(["✅ .../cli/test_update_lock.py"]):::guard
t_tests_unit_cli_test_update_lock_py -.-> f_packages_core_src_repowise_core_workspace_update_py
classDef changed fill:#dbeafe,stroke:#1d4ed8,color:#1e3a5f
classDef warn fill:#fef3c7,stroke:#b45309,color:#78350f
classDef guard fill:#dcfce7,stroke:#15803d,color:#14532d
Solid arrows: code that imports the changed files (18 direct dependents, from the last indexed snapshot). Dashed: history/tests. 🔥 Hotspots touched (3)
🔗 Hidden coupling (1 file)
👀 Suggested reviewers @RaghavChamadiya 📊 See the full report for this PR |
Issue
Fixes #1744 - Stale structural
file_pagerows surviverepowise updateRoot Cause
The
repowise updatecommand exits early with "Already up to date" when Git HEADis unchanged, even if the database contains stale structural pages. This skips the
reconciliation pass that should clear the stale status.
Solution
Before the early exit, check if the database contains stale structural pages. If so,
proceed to reconciliation even though Git HEAD hasn't changed. Stale pages are added
to the regeneration list and marked fresh after reconciliation.
Changes
load_stale_structural_file_paths()helper indeterministic.pycommand.pyto check for stale pagescheck_repo_staleness()inworkspace/update.pyto recognize database stalenessTesting
Verification
Reproduces the reported case: 94 stale
file_pagerows are now cleared byrepowise updateeven when Git HEAD is unchanged.