|
| 1 | +# CHANGELOG_HEALING - 2026-01-27 10:00 |
| 2 | + |
| 3 | +## Summary |
| 4 | +Fixed CI pipeline failures after implementing P3 forensic fields for MFT field enhancements. |
| 5 | + |
| 6 | +## Context |
| 7 | +Implementing Priority 3 (P3) forensic fields from `docs/architecture/uffs-mft-field-enhancements.md`: |
| 8 | +- `is_deleted` - Deleted file records |
| 9 | +- `is_corrupt` - Corrupted records |
| 10 | +- `is_extension` - Extension records |
| 11 | +- `base_frs` - Base FRS for extension records |
| 12 | + |
| 13 | +## Issues Fixed |
| 14 | + |
| 15 | +### 1. Test `test_file_record_size` Failure |
| 16 | +**File:** `crates/uffs-mft/src/index.rs` |
| 17 | +**What failed:** Test expected `FileRecord` size ≤ 216 bytes, but adding `base_frs: u64` field increased it to 224 bytes. |
| 18 | +**Root cause:** The `base_frs` field (8 bytes) was added to `FileRecord` struct for P3 forensic support. |
| 19 | +**Fix:** Updated test assertion from 216 to 224 bytes to reflect the new struct size. |
| 20 | + |
| 21 | +### 2. Clippy `doc_markdown` Warnings (4 occurrences) |
| 22 | +**Files:** `crates/uffs-mft/src/raw.rs`, `crates/uffs-mft/src/main.rs` |
| 23 | +**What failed:** Doc comments referenced field names like `is_deleted`, `is_corrupt`, `is_extension`, `base_frs` without backticks. |
| 24 | +**Root cause:** Clippy requires code identifiers in doc comments to be wrapped in backticks. |
| 25 | +**Fix:** Wrapped all field names in backticks in doc comments. |
| 26 | + |
| 27 | +### 3. Clippy `struct_excessive_bools` Warning |
| 28 | +**File:** `crates/uffs-mft/src/parse.rs` |
| 29 | +**What failed:** `ParsedRecord` struct has more than 3 boolean fields. |
| 30 | +**Root cause:** P3 forensic fields added `is_deleted`, `is_corrupt`, `is_extension` booleans to the struct. |
| 31 | +**Fix:** Added targeted `#[allow(clippy::struct_excessive_bools)]` with justification - these are distinct semantic flags from MFT record parsing, not a state machine. |
| 32 | + |
| 33 | +### 4. Clippy `cognitive_complexity` Warning |
| 34 | +**File:** `crates/uffs-mft/src/parse.rs` |
| 35 | +**What failed:** `parse_record_forensic` function exceeded complexity threshold. |
| 36 | +**Root cause:** Function handles multiple forensic parsing paths with necessary branching. |
| 37 | +**Fix:** Added targeted `#[allow(clippy::cognitive_complexity)]` - the complexity is inherent to MFT record parsing requirements. |
| 38 | + |
| 39 | +### 5. Clippy `too_many_lines` Warning |
| 40 | +**File:** `crates/uffs-mft/src/index.rs` |
| 41 | +**What failed:** `to_dataframe` function exceeded line count threshold. |
| 42 | +**Root cause:** Function builds DataFrame with many columns including new forensic fields. |
| 43 | +**Fix:** Added targeted `#[allow(clippy::too_many_lines)]` - the function is a single logical unit for DataFrame construction. |
| 44 | + |
| 45 | +### 6. Clippy `undocumented_unsafe_blocks` Warnings (2 occurrences) |
| 46 | +**File:** `crates/uffs-mft/src/parse.rs` |
| 47 | +**What failed:** Unsafe blocks lacked SAFETY comments. |
| 48 | +**Root cause:** Unsafe pointer operations for MFT record parsing were missing documentation. |
| 49 | +**Fix:** Added SAFETY comments explaining why each unsafe operation is sound. |
| 50 | + |
| 51 | +### 7. Compilation Error - Missing `NameInfo` Fields |
| 52 | +**File:** `crates/uffs-mft/src/reader.rs` |
| 53 | +**What failed:** `NameInfo` struct initialization missing `fn_created`, `fn_modified`, `fn_accessed`, `fn_mft_changed` fields. |
| 54 | +**Root cause:** P2 added `$FILE_NAME` timestamp fields to `NameInfo` but `to_dataframe` wasn't updated. |
| 55 | +**Fix:** Added missing timestamp fields with `None` values in the struct initialization. |
| 56 | + |
| 57 | +### 8. Compilation Error - Missing `StreamInfo` Field |
| 58 | +**File:** `crates/uffs-mft/src/reader.rs` |
| 59 | +**What failed:** `StreamInfo` struct initialization missing `is_resident` field. |
| 60 | +**Root cause:** P2 added `is_resident` field to `StreamInfo` but `to_dataframe` wasn't updated. |
| 61 | +**Fix:** Added `is_resident: false` to the struct initialization. |
| 62 | + |
| 63 | +## Verification |
| 64 | +- ✅ `cargo check -p uffs-mft` - passed |
| 65 | +- ✅ `cargo clippy --all-targets --all-features -- -D warnings` - passed |
| 66 | +- ✅ `rust-script scripts/ci-pipeline.rs go -v` - passed (exit code 0) |
| 67 | +- ✅ All binaries built successfully (uffs, uffs_mft, uffs_tui, uffs_gui) |
| 68 | +- ✅ Cross-platform build for Windows x64 completed |
| 69 | +- ✅ Git push to remote successful |
| 70 | + |
| 71 | +## Version |
| 72 | +v0.2.109 |
| 73 | + |
0 commit comments