Dry-run OS/MCU apply records the new version, hiding the still-pending update from check() and status

オープン 初心者向け
#39 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
76/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
rust

調査の方向性

crates/pod-updater/src/agent.rs、特に apply() と check() を読み、続いて install.rs の dry-run 書き込み処理と os_and_mcu_apply_are_gated_dry_run テストを調べてください。バージョンの記録を dry-run モードの場合に限り、プレビューによって更新が引き続き利用可能で、古いバージョンがインストール済みとして報告されることを確認するようテストを更新してください。

索引モデルが issue の本文から書いたものです。

説明

bug

agent.rs apply() (crates/pod-updater/src/agent.rs:273-297) calls layout.record_version(kind, &component.version) after the OS/MCU writer returns Ok — including under dry_run, where nothing was actually flashed (DryOsSlotWriter/DryMcuFlasher just log and return Ok, install.rs:170-233). check() then filters out any component whose installed_version equals the manifest version (agent.rs:167-170), so after a single dry-run 'apply' the OS/MCU update silently disappears from available and current_versions reports the new version as installed even though the device still runs the old firmware. An operator doing a dry-run preview would afterward see no pending update. record_version should be gated on !dry_run (the os_and_mcu_apply_are_gated_dry_run test currently asserts the wrong behaviour).


Filed from a repo-wide code audit (working tree at bcad746).

主要言語
Rust
スター
0
フォーク
0
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

GoogleBot42/podd のほかの issue

GoogleBot42/podd の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。