lightcraft/docs
Brandon Thomas 7a2596cd43 Issue #134: Exports: atomic without fsync; Copy import verifies against the probe hash
- safe_file: write policy documented (durable for what can't be recreated, atomic-only for
  recreatable outputs); new write_atomic_nosync (temp + rename, temp removed on failure, no
  file/folder sync); per-thread sync counter for tests.
- export::write_file (exports, renders, screenshots, merge previews, CLI/MCP) uses the
  non-syncing writer; new write_file_durable keeps the sync for Edit a Copy (the TIFF becomes a
  library photo). Catalog, sidecars, settings, DNG conversion/merges and smart previews stay
  durable; the #93 original-overwrite guard is untouched.
- Import > Copy verifies the synced copy against the probe's content hash (SipHash-1-3/128 of the
  whole file) instead of re-reading the source; byte compare when there is no hash. A file changed
  since Review Import is now refused instead of imported with stale details. Move keeps its
  byte-for-byte check before deleting sources.
- check_write_target: skip building the library-wide guard when nothing is at the target.
- write_new_unique keeps its read-back (DNGs replace raws; cheap next to encoding).
- Tests: no sync on the export path, durable writers still sync, Copy caught by the probe hash
  (corrupt copy, stale hash, changed source); ignored timing test write_policy_timing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 10:08:29 -04:00
..
brand Licensing: MIT OR Apache-2.0 files, NOTICE, ArtCraft brand terms 2026-10-04 10:05:02 -04:00
images docs: README (MCP, CLI, export, status, contributing), AGENTS.md (asset enforcement, crash recovery, testing/perf), screenshots re-captured with Inter 2026-09-30 23:52:34 -04:00
showcase M1.4: crash-safe catalog persistence (op log + snapshot) 2026-09-30 23:40:40 -04:00
camera-preview-colour.md LR-PROF-CAMERACOLOR: record the ARW file-local fit's public-sample results 2026-10-05 19:34:01 -04:00
control-protocol.md Issue #104: keep file-system calls off the UI thread 2026-10-05 18:58:04 -04:00
gpu-pipeline.md Issue #78: GPU export: respect device limits, fall back to CPU on GPU errors 2026-10-05 05:06:24 -04:00
localization-ja.md M16: drop fork-only Japanese packaging from PR #114 2026-10-05 19:11:34 -04:00
mcp.md Issue #99: Library: exclusive lock so two processes can't open one library 2026-10-05 17:48:34 -04:00
merge.md Merge main (Photo Merge); M1.14b: stack merge results with their sources 2026-10-01 11:00:51 -04:00
parity.md Issue #134: Exports: atomic without fsync; Copy import verifies against the probe hash 2026-10-06 10:08:29 -04:00
web.md Merge main into fix/issue-107-web-safety 2026-10-05 18:58:53 -04:00
whats-new.md Issue #134: Exports: atomic without fsync; Copy import verifies against the probe hash 2026-10-06 10:08:29 -04:00
xmp-interop.md Issue #92: XMP: merge into an existing sidecar instead of replacing it 2026-10-05 17:08:18 -04:00