Skip to content

Add CLI calibration and automation for beta.18 - #117

Merged
rohanpandula merged 27 commits into
mainfrom
codex/scanstudio-calibration
Sep 8, 2026
Merged

rohanpandula merged 27 commits into
mainfrom
codex/scanstudio-calibration

Conversation

@rohanpandula

@rohanpandula rohanpandula commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Adds CLI calibration and recoverable automation after beta.17. A headless session can save without scanning, solve and lock RGB exposure, repeat labeled captures, verify receipt-bound artifacts, and collect immutable copies. Held-worker film status uses the existing USB reservation. Each held capture round has unique parent/worker paths; repeated passes wait for idle and retain exact job markers.

Adds retained-master render/export, metadata on private copies, HTML reports, declarative jobs, diagnostics, evidence ZIPs, bounded waits and hooks, observer recovery, controller labels, host-scoped idempotency, and a managed LaunchAgent. Existing output destinations provide automatic per-frame delivery. Hopper mode reuses roll execution and waits for absent-to-present film transitions. Archive/positive/preview destinations stay under the project; raw exports may use an external destination.

Preview-derived exposure is experimental and off by default: one median preview reference is metered, positive-only RGB adjustments are capped at 1 EV/device bounds, IR remains metered, and receipt provenance is validated against the durable reference lock. Missing/ambiguous evidence and incompatible frame geometry are refused before metering. Reuses existing observed-boundary registration; removed a redundant correction that would shift registered frames twice.

Validation: constituent Rust coverage totals 706 passed and 2 existing ignored after fixing the active-preview status deadline regression. Swift full suite passed 920 tests; the subsequent geometry guard passed 68 focused tests. Bridge full run had 438 passes and one outdated test-double signature; the corrected signature and authority tests passed the focused rerun. Real held-worker loader/path regressions passed in canonical and vendor trees. CLI11 (043c6a5, 0.7.0-beta.17-cli.11) passed packaging, relocation/launcher checks, strict deep signature verification, and all three packaged CLI selftest scenarios (stall, feed-jam and reattachment). Simulator AUTO12 correctly refuses missing measured evidence; it cannot establish successful hardware exposure authority.

Hardware evidence: CLI9 completed a real LS-5000 ED/SA-30 preview, exposure solve and one 4000 dpi/16-bit RGBI/1x frame2 capture (Held01). RGB ticks were [137373,337050,375487]; all 189194240 capture bytes arrived. Receipt-bound verification passed, but no-clipping verification failed on actual measured clipping. A second held round refused stale journal identity, motivating the new per-round parent/worker paths. Originals remain untouched. The corrected TIFF reader successfully collected the retained real Held01 RGB/IR/meter/receipt into a fresh destination with matching hashes.

Release authorization: the owner explicitly chose to ship this beta before the remaining attended hardware checks and have an external tester validate it. No further film loading or hardware test blocks publication. Preview-derived exposure remains off by default. Release notes for v0.7.0-beta.18 label repeated hardware capture, preview-derived exposure and calibration quality unverified.

CLI11 passed package/signature verification and all three packaged selftest scenarios. All eight CI gates pass for043c6a5. The release preparation bumps the bundled driver to the matching published CoolscanPy0.7.10, pins its authenticated sdist and the same eight reviewed app-specific differences, and adds tag-bound beta.18 notes. The tag workflow performs final verification, signing, notarization and publication.

rohanpandula and others added 7 commits September 8, 2026 03:16
Validate fixed protocol bounds before motion and preserve metered IR. Verify identical overrides across two separate capture calls.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Preserve typed meter refusals and retain motion-worker ownership through shutdown. Older drivers and mock transport refuse rather than substituting a capture.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Retain explicit frame selection across repeats, append pass-labelled receipts, and stop after refusal or frame failure. Add read-only exposure/clipping verification core with missing-evidence results.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Validate raw and meter publications through held file bindings; expose solve-exposure, verify, and collect through the CLI. Cover durable exposure reuse, artifact integrity, and actual headless repeat/collection without changing retained captures.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Preserve default batch stop behavior, emit typed skipped events without capture receipts, and refuse unsupported drivers before motion.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… evidence

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Add no-scan roll creation, explicit meter-refusal skip options, append-only transcripts, status watch and host-loss exit76. Retain real wire outcomes when transcript persistence fails.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@rohanpandula rohanpandula changed the title Add CLI calibration exposure, repeats, verification and collection Add CLI calibration and observable session evidence Sep 8, 2026
rohanpandula and others added 19 commits September 8, 2026 05:20
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Map a closed admitted control connection to HOST_UNREACHABLE in request and waiter paths. Make the shutdown regression deterministic by holding the scan acknowledgment.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Generate create-only HTML reports with streamed artifact verification and embedded previews. Add explicit managed LaunchAgent generation/install/remove and document built-in shell completion. Validated retained real-scan originals unchanged, large-file/tamper regression, plist collision checks, and isolated host lifecycle.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Add run JOB.json over the existing roll workflow, offline schema discovery, cached device-aware preflight, and independent doctor checks. Validate destinations before preview and again before capture; preserve the approved job. Focused process tests cover no-mutation dry runs, unwritable output refusal, one mock scan admission, and bounded stalled-host diagnostics.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Add scoped idempotency, controller defaults, locked job markers and at-most-once hook delivery. The isolated selftest covers stalled stop, feed-jam recovery and observer reattachment; fix the stale-terminal resume wait race it exposed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Preserve the complete payload assertion, including the explicit meter-refusal slot list. Both previously failing vendored tests pass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Expose shared GUI and CLI render, export and metadata operations. Verify retained source bindings, use private ExifTool staging and publish create-only outputs with result hashes. Retained-artifact checks cover rendering, metadata readback, collision refusal and unchanged originals.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Route bridge film probes through the retained worker and give status its physical settle deadline. Preserve local driver timing changes while applying the reviewed fix, and reseal the exact vendored source. Unknown and absent remain distinct.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Keep the held-status candidate independent of unfinished preview registration changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Remove the redundant preview offset conversion that referenced an absent wire field. Install ExifTool for the retained metadata-copy integration check.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Share one idle non-motion status probe across event observers and serialize it with mutations. Reuse roll execution for hopper mode, retaining each receipt before eject and waiting for a fresh film transition.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Give repeated held scans distinct frame journals and ACKs, match exposure authority to the receipt timestamp, and label applied RGB overrides. Add validated per-slot RGB vectors using the existing held scan loop and one output reservation.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Keep preview exposure opt-in, validate per-frame provenance and preserve capture geometry. Wait for idle between labeled passes, scope held worker paths to each round, bind exposure evidence, and accept the production infrared TIFF marker when collecting retained captures.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Canonicalize existing parents before comparing project containment, preserving uncreated destination suffixes. The isolated CLI selftest now passes stall, feed-jam and observer reattachment again.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Preserve density and reservation assertions while using the same per-round frame directory contract as the real parent and worker.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@rohanpandula
rohanpandula marked this pull request as ready for review September 8, 2026 20:41
@rohanpandula rohanpandula changed the title Add CLI calibration and observable session evidence Add CLI calibration and automation for beta.18 Sep 8, 2026
Pin the authenticated published driver archive and existing eight reviewed app-specific differences. Document software validation and explicitly defer repeated capture, preview-derived exposure and calibration hardware acceptance to external testers.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@rohanpandula
rohanpandula enabled auto-merge (squash) September 8, 2026 21:00
@rohanpandula
rohanpandula merged commit a907d3c into main Sep 8, 2026
8 checks passed
@rohanpandula
rohanpandula deleted the codex/scanstudio-calibration branch September 12, 2026 08:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant