wire(server): start worker monitor in main.rs (--role all/worker) + real /api/claims/attest; fix await-holding-lock
- Load store_signing_key at startup via load_store_signer() helper (shared by
attest service + worker monitor); degrades to stub/no-op with a warning when
no key row exists yet instead of hard-failing on first boot.
- Fix 1: worker_fut now calls worker::production::build_production_deps(pool,
store_did, collection, registry, signer) + worker::build_monitor(state).run().await
so --role all/worker actually drains the apalis.jobs queue.
- Fix 2: RealAttestService holds Arc<Signer>; on attest() it loads receipt_hash
+ product_uri, calls claims::attest(signer, hash, facts), writes the
purchase_claim row, and returns at://{store_did}/shop.lgtm.commerce.purchaseAttestation/{order_id}.
StubAttestService covers the no-key fallback.
- Fix 3: products.rs test helper now collects bool flags out of the MutexGuard
into owned values before drop, eliminating the await_holding_lock lint.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>