mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-30 11:12:24 +01:00
The BUG-203-1..6 and REL-4 rows still say missing, but the atomic-save work landed in #230 (8227071, 2026-10-05) - apparently after the4b53f62snapshot these statuses were verified against. Re-verified against the current tree: - one shared photocraft_format::atomic_write (same-dir temp, create_new + write_all + sync_all, rename, Unix directory fsync, Windows PermissionDenied rename retry with backoff), and every document write site routes through it (engine file_cmds/preset_store, automation files/headless/workspace, app services, format store/autosave); - no in-place fallback exists; read-only dir, disk-full and cross-device errors name the cause and state the original was not changed; - format/src/atomic/tests.rs failure-injects mid-write, rename and read-only-dir errors (11 tests; re-run for this change: green). The regenerated docs/scorecard.md moves Reliability to 4/1/2 and Open bugs to 12/3/17. No code changes.
53 lines
2.0 KiB
TOML
53 lines
2.0 KiB
TOML
# Scorecard checklist: reliability (#212, #203, never-crash).
|
|
# Statuses must be true on main. REL-4 verified against 47f9306 on 2026-10-07; the rest
|
|
# against 4b53f62 on 2026-10-05.
|
|
area = "reliability"
|
|
title = "Reliability"
|
|
order = 7
|
|
|
|
[[item]]
|
|
id = "REL-1"
|
|
target = "panic_hunt fuzzes every command with adversarial params"
|
|
status = "done"
|
|
note = "engine/tests/panic_hunt.rs: every command, own thread, 4 s timeout; #[ignore], run in the gate"
|
|
|
|
[[item]]
|
|
id = "REL-2"
|
|
target = "Every workspace crate carries the never-crash deny(clippy::unwrap_used, ...) attribute"
|
|
status = "done"
|
|
note = "Counted automatically above (crate roots under crates/ and apps/); testkit gained it in #221"
|
|
|
|
[[item]]
|
|
id = "REL-3"
|
|
target = "The app catches escaped panics around command dispatch and import/export"
|
|
status = "partial"
|
|
note = "engine lib.rs:336 dispatch; crash_guard.rs:21 import/export; the dispatch guard is untested"
|
|
|
|
[[item]]
|
|
id = "REL-4"
|
|
target = "Atomic save (temp, fsync, rename) for every document write"
|
|
status = "done"
|
|
issue = 203
|
|
note = "photocraft_format::atomic_write (format/src/atomic.rs, #230): same-dir temp, sync_all, rename with Windows PermissionDenied retry, Unix dir fsync; every document write site routes through it and format/src/atomic/tests.rs failure-injects write, rename and read-only-dir errors"
|
|
|
|
[[item]]
|
|
id = "REL-212-1"
|
|
target = "Fallible allocation for paste/erase/fill/transform/save/import, clear out-of-memory error"
|
|
status = "missing"
|
|
issue = 212
|
|
note = "try_reserve only in io/flat.rs:221; codec max_alloc limits cover decode only"
|
|
|
|
[[item]]
|
|
id = "REL-212-2"
|
|
target = "Export switches to PSB when the estimated file size exceeds 2 GB"
|
|
status = "done"
|
|
issue = 212
|
|
note = "PSD export uses checked size estimates for raster, masks, channels, and retained metadata"
|
|
|
|
[[item]]
|
|
id = "REL-212-3"
|
|
target = "Tests: an allocation-limit injection makes each command Err with the document unchanged"
|
|
status = "missing"
|
|
issue = 212
|
|
note = "Only codec/raw max_alloc tests (codecs/tests/limits.rs:48)"
|