A 70-line newtype lived in picloud/src/lib.rs wrapping Arc<PostgresScriptRepository> and re-implementing every ScriptRepository method as `self.0.method(...).await`. Hand-delegation invited silent skew when the trait gained a method, and forced 8 call sites to know about the wrapper. Add a blanket impl<T: ScriptRepository + ?Sized> ScriptRepository for Arc<T> in manager-core::repo. The implementations forward via (**self).method(...) so any owner of an Arc<dyn ScriptRepository> (or Arc<ConcreteImpl>) can be passed where the trait is expected. Migrate the 7 picloud-binary call sites: Arc::new(PostgresScriptRepoHandle(script_repo.clone())) → script_repo.clone() Delete the newtype + its hand-delegated impl. Leaves a 6-line comment documenting why the boilerplate is gone. AUDIT.md anchor: F-Q-011. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
25 KiB
25 KiB