<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Storage Model on Rekeeply Spec</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/</link><description>Recent content in Storage Model on Rekeeply Spec</description><generator>Hugo</generator><language>en</language><atom:link href="https://rekeeply.github.io/spec/en/core-api/storage-model/index.xml" rel="self" type="application/rss+xml"/><item><title>Raw Model</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/raw-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/raw-model/</guid><description>&lt;h1 id="raw-model"&gt;Raw Model&lt;a class="anchor" href="#raw-model"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="purpose"&gt;Purpose&lt;a class="anchor" href="#purpose"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; is a separate domain because some user data must be stored in unstructured form before later processing.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; enables quick capture without mandatory classification or immediate placement into &lt;code&gt;Library&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="contract"&gt;Contract&lt;a class="anchor" href="#contract"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Core implementations MUST include &lt;code&gt;Raw&lt;/code&gt; as an account-scoped storage domain for unstructured capture.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; MUST support quick save without selecting an active library.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; MUST support review and deferred processing of captured items.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; items MUST be eligible for explicit later promotion into &lt;code&gt;Library&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="supported-payload-types"&gt;Supported Payload Types&lt;a class="anchor" href="#supported-payload-types"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; MUST support &lt;code&gt;text&lt;/code&gt;, &lt;code&gt;link&lt;/code&gt;, and &lt;code&gt;mixed&lt;/code&gt; payload types.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; MAY support &lt;code&gt;file_ref&lt;/code&gt; as reference-only payload.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image&lt;/code&gt;, &lt;code&gt;video&lt;/code&gt;, and &lt;code&gt;audio&lt;/code&gt; payload types are out of the mandatory baseline scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="raw-item-storage-model"&gt;Raw Item Storage Model&lt;a class="anchor" href="#raw-item-storage-model"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Storage SHOULD use typed-columns-first design for hot read paths.&lt;/li&gt;
&lt;li&gt;Implementations MUST avoid JSON-only storage for list/filter hot paths.&lt;/li&gt;
&lt;li&gt;Each &lt;code&gt;RawItem&lt;/code&gt; MUST include: &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;account_id&lt;/code&gt;, &lt;code&gt;payload_type&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;created_at&lt;/code&gt;, &lt;code&gt;updated_at&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Implementations SHOULD include fast list fields such as &lt;code&gt;title_preview&lt;/code&gt; and source/type/status columns.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="capture-inputs"&gt;Capture Inputs&lt;a class="anchor" href="#capture-inputs"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; MUST accept capture from manual input and clipboard/paste flows.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; SHOULD accept external share/import flows when available in client/runtime.&lt;/li&gt;
&lt;li&gt;Capture MUST remain offline-capable and MUST NOT require network availability.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="metadata-enrichment"&gt;Metadata Enrichment&lt;a class="anchor" href="#metadata-enrichment"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;For &lt;code&gt;link&lt;/code&gt; payloads, metadata enrichment MAY run asynchronously after capture.&lt;/li&gt;
&lt;li&gt;Metadata fetch failures MUST NOT block capture completion.&lt;/li&gt;
&lt;li&gt;When metadata is unavailable, implementations MUST provide deterministic fallback preview.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="lifecycle-and-operations"&gt;Lifecycle and Operations&lt;a class="anchor" href="#lifecycle-and-operations"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Implementations MUST support item states equivalent to &lt;code&gt;new | triaged | promoted | archived&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Implementations MUST support listing and status transitions for triage.&lt;/li&gt;
&lt;li&gt;Implementations MUST support explicit &lt;code&gt;promote&lt;/code&gt; from &lt;code&gt;Raw&lt;/code&gt; to &lt;code&gt;Library&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="promote-flow-requirements"&gt;Promote Flow Requirements&lt;a class="anchor" href="#promote-flow-requirements"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;promote&lt;/code&gt; MUST validate that &lt;code&gt;target_library_id&lt;/code&gt; belongs to the same &lt;code&gt;account_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;promote&lt;/code&gt; MUST be idempotent for the same &lt;code&gt;RawItem&lt;/code&gt; and MUST NOT create duplicates on retry.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;promote&lt;/code&gt; MUST persist linkage to created library entity (&lt;code&gt;promoted_content_id&lt;/code&gt; or equivalent origin link).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="promote-mapping-rules"&gt;Promote Mapping Rules&lt;a class="anchor" href="#promote-mapping-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Raw:text&lt;/code&gt;&lt;/p&gt;</description></item></channel></rss>