feat(state): extend ReconciliationEntry with adopted/skipped vectors#69
Merged
Merged
Conversation
Adds two `Vec<String>` fields to `pearlite_state::ReconciliationEntry`, both `#[serde(default)]` so pre-ADR `[[reconciliations]]` rows deserialize cleanly with empty vectors. Tightens `package_count`'s docstring to name it as the audit denominator (ADR-0014 §9). Backfills three round-trip tests in `reconciliation::tests`: - legacy entry without decision vectors deserializes with empty `[]`, - populated decision vectors round-trip through TOML, - AdoptAll with empty `skipped` round-trips. Schema change is additive; the `ReconciliationAction` unit-variant enum (AdoptAll / Interactive / Skipped) keeps its existing TOML representation per ADR-0014 §7. Refs: ADR-0014, PRD §7.3 Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
pearlite_state::ReconciliationEntrywithadopted: Vec<String>andskipped: Vec<String>, both#[serde(default)]so pre-ADR[[reconciliations]]rows deserialize cleanly with empty vectors (ADR-0014 §7).package_count's docstring to name it explicitly as the audit denominator (ADR-0014 §9).reconciliation::tests: legacy entry without decision vectors, populated decision vectors, andAdoptAllwith emptyskipped.The
ReconciliationActionunit-variant enum (AdoptAll/Interactive/Skipped) keeps its existing TOML shape — purely additive, nomigrate()invocation.First of four PRs landing the M4 W1 reconcile-commit work; subsequent PRs build
Engine::reconcile_commit(B), the CLI surface (C), and the vm-11 scenario (D) on top of these new fields.Test plan
cargo test -p pearlite-state --lib— 21/21 passing (3 new).cargo clippy --workspace --all-targets -- -D warnings— clean.cargo run -p pearlite-audit -- check .— 0 violations.Refs: ADR-0014, PRD §7.3
🤖 Generated with Claude Code