<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ratings on RawCull</title><link>https://techrawcull.netlify.app/tags/ratings/</link><description>Recent content in Ratings on RawCull</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 04 Sep 2026 20:55:01 +0200</lastBuildDate><atom:link href="https://techrawcull.netlify.app/tags/ratings/index.xml" rel="self" type="application/rss+xml"/><item><title>Culling and Persistence</title><link>https://techrawcull.netlify.app/docs/copilot/03-culling-and-persistence/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid>https://techrawcull.netlify.app/docs/copilot/03-culling-and-persistence/</guid><description>&lt;h1 id="culling-and-persistence"&gt;Culling and Persistence&lt;a class="td-heading-self-link" href="#culling-and-persistence" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&amp;ldquo;Culling&amp;rdquo; is RawCull&amp;rsquo;s core job: attach a rating/status to each RAW file so
the photographer can filter down to keepers and export just those. This
document covers the model that owns that decision, how it&amp;rsquo;s filtered for
display, and how it&amp;rsquo;s saved to disk.&lt;/p&gt;
&lt;h2 id="the-model-cullingmodel"&gt;The model: &lt;code&gt;CullingModel&lt;/code&gt;&lt;a class="td-heading-self-link" href="#the-model-cullingmodel" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;CullingModel&lt;/code&gt; (&lt;code&gt;Model/ViewModels/CullingModel.swift&lt;/code&gt;) is a
&lt;code&gt;@MainActor @Observable&lt;/code&gt; class, constructed exactly once by
&lt;code&gt;RawCullViewModel&lt;/code&gt; (&lt;code&gt;var cullingModel = CullingModel()&lt;/code&gt; — the comment above
it says explicitly &amp;ldquo;This is the only place CullingModel is initialised&amp;rdquo;).
It holds:&lt;/p&gt;</description></item></channel></rss>