Carry apply/rollback advisories as typed values: ApplyResult.error doubles as a warning string that three consumers decode by substring, and they disagree
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start in crates/socket-patch-core/src/patch/apply.rs, where ApplyResult.error gets advisories joined with "; " (join_notes) and advisory_warning_codes matches marker consts. Then read the CLI consumers in crates/socket-patch-cli/src/commands/apply.rs and rollback.rs, plus store_copies.rs fold. Done means a typed Advisory enum on the results, one mapping helper to RunWarning, and the listed tests asserting variants; the maintainer's open decision on rollback's fallback needs settling first.
索引モデルが issue の本文から書いたものです。
説明
[agent] Filed by the scheduled architecture audit (audit-core). Register: discussion #1830 register.
Kind: refactor. Register ID: A76.
Problem
ApplyResult.error (and the rollback result) means "why it failed" when success == false, but on a successful result it carries advisories instead: a --force skip note, an ownership restore the process could not make, or a failed stale-bytecode cleanup. These are joined with "; " into one string (apply.rs L121-L125, join_notes L1192). Consumers then get the warning codes back by substring-matching marker text (advisory_warning_codes L977-L989, which uses OWNERSHIP_NOT_RESTORED_MARKER and STALE_BYTECODE_NOT_REMOVED_MARKER).
The three consumers handle a note differently:
- CLI
apply(apply.rs L1411-L1419): a note that matches no marker, such as the--forceskip note, produces no run warning. - CLI
rollback(rollback.rs L2316-L2323):`` a note that matches no marker is labelledownership_not_restoredanyway. - Core
store_copies::fold(store_copies.rs L65-L72): a successful store copy keeps its advisory only if it contains the ownership marker. A store copy's stale-bytecode advisory is dropped before the CLI sees it. This is read from the code; I did not execute it.
Refusals are matched by marker the same way, for example SHARED_STORE_REFUSAL_MARKER, so tests can only check them with .contains on a sentence (rollback.rs L3086).
Proposed change
- Add a typed
advisories: Vec<Advisory>to the apply and rollback results, withenum Advisory { ForceSkipped(..), OwnershipNotRestored(..), StaleBytecodeNotRemoved(..) }. Each variant has its warning code and display text. - Keep
errorfor failures only. - Make
store_copies::foldconcatenate every copy's advisories. - Have both CLI commands map variants to
RunWarningthrough one helper. - Delete
advisory_warning_codesand the two marker consts, or make them private if a test still needs the text.
Size
About 6 files: core patch/{apply,rollback,store_copies}.rs and CLI commands/{apply,rollback}.rs, plus their tests. Estimated diff is ±250 lines.
Acceptance criteria
- The human text and the
--jsonwarning codes stay the same for ownership and bytecode advisories. - Decide whether
rollback's fallback toownership_not_restoredfor unrecognized notes is intended. If not, delete it and add a test. - A store-copy stale-bytecode advisory now reaches the run warnings, with a test.
test_restore_file_permissions_ownership_failure_is_a_warningand the shared-store refusal tests assert variants instead of sentence substrings.
- 主要言語
- Rust
- スター
- 9
- フォーク
- 2
- 平均マージ
- 20時間 47分
- マージ済み PR(30日)
- 681
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
SocketDev/socket-patch のほかの issue
-
agent:triaged arch-audit priority:p3 refactor
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
SocketDev/socket-patch#1860 ·
メンテナーはふだん 1 日以内に返信
-
agent:triaged arch-audit priority:p3 refactor
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
SocketDev/socket-patch#1838 ·
メンテナーはふだん 1 日以内に返信
-
arch-audit refactor
難易度 4/5 3〜5日 初心者へのやさしさ 54/100
SocketDev/socket-patch#1993 ·
メンテナーはふだん 1 日以内に返信
-
arch-audit refactor
難易度 3/5 1〜2日 初心者へのやさしさ 66/100
SocketDev/socket-patch#1992 ·
メンテナーはふだん 1 日以内に返信
-
agent:triaged arch-audit priority:p3 refactor
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
SocketDev/socket-patch#1983 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
SocketDev/socket-patch の issue をすべて見る
似ている issue
-
Perl - Readme Drift対応中かも @Omnideth が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
CommunityToolkit/Aspire#2375 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 86/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信