<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rekeeply Specification on Rekeeply Spec</title><link>https://rekeeply.github.io/spec/en/</link><description>Recent content in Rekeeply Specification on Rekeeply Spec</description><generator>Hugo</generator><language>en</language><atom:link href="https://rekeeply.github.io/spec/en/index.xml" rel="self" type="application/rss+xml"/><item><title>book</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/book/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/book/</guid><description>&lt;h1 id="book"&gt;book&lt;a class="anchor" href="#book"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;author&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary author of the book.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;published_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - publication year of the edition used.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;original_title&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - title in the original language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;co_authors&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;long_text&lt;/code&gt;) - additional authors/co-authors.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;language&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - language of the specific edition/content.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;original_language&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - original language of the work.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;publisher&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - publishing organization.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;publication_place&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - city/place of publication.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;edition&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - edition label or number.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isbn&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - ISBN identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pages_total&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - total number of pages.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;translator&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - translator name(s).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;volume&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;integer&lt;/code&gt;) - volume number/label for multi-volume books.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;series&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - book series title.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reference_scope&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - scope note for &lt;code&gt;book/reference&lt;/code&gt; entries.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>article</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/article/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/article/</guid><description>&lt;h1 id="article"&gt;article&lt;a class="anchor" href="#article"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;author&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary author of the article.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;published_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - publication year.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;journal_or_source&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - publication source (journal/site/platform).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;publication_date&lt;/code&gt; (&lt;code&gt;date&lt;/code&gt;) - exact publication date.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;doi&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - DOI identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;volume&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;integer&lt;/code&gt;) - volume number/label.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;issue&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;integer&lt;/code&gt;) - issue number/label.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pages&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - page range (e.g., &lt;code&gt;97-111&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;language&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - article language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;original_title&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - title in original language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;co_authors&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;long_text&lt;/code&gt;) - additional authors/co-authors.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;peer_reviewed&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;) - peer-reviewed marker.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;publisher&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - publisher/organization.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;publication_place&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - publication place.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;</description></item><item><title>Content Typing</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/content-typing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/content-typing/</guid><description>&lt;h1 id="content-typing"&gt;Content Typing&lt;a class="anchor" href="#content-typing"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="baseline-rules"&gt;Baseline Rules&lt;a class="anchor" href="#baseline-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;content_type&lt;/code&gt; is mandatory; entries MUST NOT be created without a type.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content_subtype&lt;/code&gt; is optional.&lt;/li&gt;
&lt;li&gt;Manual entry creation MUST start with selecting &lt;code&gt;content_type&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After type selection, subtype and other fields may be filled later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="default-and-recommended-set"&gt;Default and Recommended Set&lt;a class="anchor" href="#default-and-recommended-set"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The following type/subtype set is available by default and is recommended based on practical personal usage patterns.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="book"&gt;&lt;code&gt;book&lt;/code&gt;&lt;a class="anchor" href="#book"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Purpose: long-form written works and references.&lt;/p&gt;
&lt;p&gt;Fields: see &lt;a href="type-specific-fields/"&gt;Type-Specific Fields&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fiction&lt;/code&gt; - fictional books.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;non_fiction&lt;/code&gt; - non-fictional books.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reference&lt;/code&gt; - lookup/reference-oriented books.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="article"&gt;&lt;code&gt;article&lt;/code&gt;&lt;a class="anchor" href="#article"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Purpose: shorter written materials from web or publication sources.&lt;/p&gt;</description></item><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><item><title>Content Fields</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/content-fields/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/content-fields/</guid><description>&lt;h1 id="content-fields"&gt;Content Fields&lt;a class="anchor" href="#content-fields"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="field-classes"&gt;Field Classes&lt;a class="anchor" href="#field-classes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;system&lt;/code&gt; fields are managed by core and MUST NOT be manually edited by users.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;user_editable&lt;/code&gt; fields are visible and editable by users.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;computed&lt;/code&gt; fields are derived by core and SHOULD be treated as read-only.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="common-field-baseline"&gt;Common Field Baseline&lt;a class="anchor" href="#common-field-baseline"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="system"&gt;&lt;code&gt;system&lt;/code&gt;&lt;a class="anchor" href="#system"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt; - immutable entry identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;library_id&lt;/code&gt; - owning library identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;created_at&lt;/code&gt; - creation timestamp.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;updated_at&lt;/code&gt; - last update timestamp.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status_changed_at&lt;/code&gt; - timestamp of last status change.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="user_editable"&gt;&lt;code&gt;user_editable&lt;/code&gt;&lt;a class="anchor" href="#user_editable"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;content_type&lt;/code&gt; - required type key.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content_subtype&lt;/code&gt; - optional subtype key.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt; - entry title.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt; - &lt;code&gt;inbox | todo | in_progress | skimmed | done | dropped&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;priority&lt;/code&gt; - &lt;code&gt;low | medium | high&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rating&lt;/code&gt; - optional integer rating in range &lt;code&gt;1..10&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;recommendation&lt;/code&gt; - optional recommendation marker: &lt;code&gt;recommended | neutral | not_recommended&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;favorite&lt;/code&gt; - independent favorite flag.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;archived&lt;/code&gt; - independent archive flag.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;parent_content_id&lt;/code&gt; - optional parent relation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;source_url&lt;/code&gt; - optional source link.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;summary&lt;/code&gt; - optional short description.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="computed"&gt;&lt;code&gt;computed&lt;/code&gt;&lt;a class="anchor" href="#computed"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;search_text&lt;/code&gt; - normalized text index for fast search.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;last_activity_at&lt;/code&gt; - derived last activity timestamp.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;is_completed&lt;/code&gt; - derived completion flag from status.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="attachment-model"&gt;Attachment Model&lt;a class="anchor" href="#attachment-model"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Content entries MAY have multiple linked attachments.&lt;/li&gt;
&lt;li&gt;Attachment links are modeled as related entities, not as one-off fixed fields.&lt;/li&gt;
&lt;li&gt;Attachment baseline fields: &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;content_id&lt;/code&gt;, &lt;code&gt;uri&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt; (optional), &lt;code&gt;mime&lt;/code&gt; (optional), &lt;code&gt;size&lt;/code&gt; (optional), &lt;code&gt;created_at&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Attachment export/import baseline dataset file: &lt;code&gt;attachments.ndjson&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rules"&gt;Rules&lt;a class="anchor" href="#rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Clients MUST enforce non-editability for &lt;code&gt;system&lt;/code&gt; and &lt;code&gt;computed&lt;/code&gt; fields.&lt;/li&gt;
&lt;li&gt;Core MUST maintain consistency of all &lt;code&gt;computed&lt;/code&gt; fields.&lt;/li&gt;
&lt;li&gt;On creation, &lt;code&gt;status&lt;/code&gt; SHOULD be auto-set to &lt;code&gt;inbox&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On creation, &lt;code&gt;priority&lt;/code&gt; SHOULD be empty by default unless explicitly provided.&lt;/li&gt;
&lt;li&gt;Status changes SHOULD update &lt;code&gt;status_changed_at&lt;/code&gt; and SHOULD NOT update &lt;code&gt;updated_at&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Favorite flag changes SHOULD NOT update &lt;code&gt;updated_at&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Archived flag changes SHOULD NOT update &lt;code&gt;updated_at&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;rating&lt;/code&gt; is provided, value MUST be in range &lt;code&gt;1..10&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;User-editable fields other than &lt;code&gt;content_type&lt;/code&gt; and &lt;code&gt;status&lt;/code&gt; are optional at creation time and may be filled later.&lt;/li&gt;
&lt;li&gt;Type-specific fields are non-mandatory by baseline and become required only when user-defined schema marks them required.&lt;/li&gt;
&lt;li&gt;Implementations MAY add extra fields in any class as implementation-defined extensions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="related-sections"&gt;Related Sections&lt;a class="anchor" href="#related-sections"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="field-types/"&gt;Field Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="type-specific-fields/"&gt;Type-Specific Fields&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>game</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/game/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/game/</guid><description>&lt;h1 id="game"&gt;game&lt;a class="anchor" href="#game"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;platform&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary runtime platform/environment (e.g., PC, PlayStation, Xbox, Nintendo, board).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;release_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - initial release year.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;developer&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - game developer/studio.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;publisher&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - game publisher.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;distribution_source&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;enum&lt;/code&gt;) - source/store where game is available or owned (e.g., Steam, Epic Games Store, PS Store, Xbox Store, Nintendo eShop).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;genre&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;multi_enum&lt;/code&gt;) - genre classification (e.g., RPG, strategy, puzzle).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mode&lt;/code&gt; (&lt;code&gt;enum&lt;/code&gt; or &lt;code&gt;multi_enum&lt;/code&gt;) - gameplay mode (single-player, multiplayer, co-op).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playtime_hours&lt;/code&gt; (&lt;code&gt;decimal&lt;/code&gt;) - estimated or tracked playtime in hours.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;players_count&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;integer&lt;/code&gt;) - supported/typical number of players.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;edition&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - game edition/version label.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;region&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - regional version/availability scope.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Field Types</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/field-types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/field-types/</guid><description>&lt;h1 id="field-types"&gt;Field Types&lt;a class="anchor" href="#field-types"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="scope"&gt;Scope&lt;a class="anchor" href="#scope"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This section defines allowed &lt;code&gt;field_type&lt;/code&gt; values for user-defined fields.&lt;/li&gt;
&lt;li&gt;For all field types, &lt;code&gt;required&lt;/code&gt; is configurable (&lt;code&gt;true | false&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Default values are configurable when supported by the field type.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="allowed-field-types"&gt;Allowed Field Types&lt;a class="anchor" href="#allowed-field-types"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;text&lt;/code&gt; - short text value.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Validation: &lt;code&gt;min_length&lt;/code&gt; (optional), &lt;code&gt;max_length&lt;/code&gt; (optional), &lt;code&gt;pattern&lt;/code&gt; (optional), &lt;code&gt;trim_on_save&lt;/code&gt; (optional).&lt;/li&gt;
&lt;li&gt;Default: &lt;code&gt;default_value&lt;/code&gt; (optional string).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;long_text&lt;/code&gt; - long multiline text value.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Validation: &lt;code&gt;min_length&lt;/code&gt; (optional), &lt;code&gt;max_length&lt;/code&gt; (optional), &lt;code&gt;trim_on_save&lt;/code&gt; (optional).&lt;/li&gt;
&lt;li&gt;Default: &lt;code&gt;default_value&lt;/code&gt; (optional string).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;boolean&lt;/code&gt; - true/false value.&lt;/p&gt;</description></item><item><title>screen</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/screen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/screen/</guid><description>&lt;h1 id="screen"&gt;screen&lt;a class="anchor" href="#screen"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;release_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - release year.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;format&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;enum&lt;/code&gt;) - screen format context (e.g., film/series/anime/animation).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;original_title&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - title in original language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;country&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - production country.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;director&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - director.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;writers&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;long_text&lt;/code&gt;) - writers/screenwriters.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cast&lt;/code&gt; (&lt;code&gt;long_text&lt;/code&gt;) - main cast.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;studio_or_network&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - studio/network/platform.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;season_number&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - season number (especially for &lt;code&gt;screen/episode&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;episode_number&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - episode number (for &lt;code&gt;screen/episode&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;duration_minutes&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - runtime in minutes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;release_date&lt;/code&gt; (&lt;code&gt;date&lt;/code&gt;) - exact release date.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;age_rating&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - age rating/classification.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;imdb_id&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - IMDb identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;franchise&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - franchise/universe name.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;</description></item><item><title>video</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/video/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/video/</guid><description>&lt;h1 id="video"&gt;video&lt;a class="anchor" href="#video"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;creator_or_channel&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary creator, author, or channel.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;release_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - release/publication year.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;original_title&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - title in original language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;duration_minutes&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - video duration in minutes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;platform&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - hosting platform (e.g., YouTube, Vimeo, Twitch).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;series_name&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - series/show name if video belongs to a series.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;episode_label&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - episode/part label.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;language&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - spoken/content language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subtitles&lt;/code&gt; (&lt;code&gt;multi_enum&lt;/code&gt;) - subtitle languages/availability.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;published_at&lt;/code&gt; (&lt;code&gt;datetime&lt;/code&gt;) - exact publication timestamp.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;age_rating&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - age suitability marker.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;view_count_snapshot&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - optional captured view count.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;</description></item><item><title>quote</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/quote/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/quote/</guid><description>&lt;h1 id="quote"&gt;quote&lt;a class="anchor" href="#quote"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;quote_text&lt;/code&gt; (&lt;code&gt;long_text&lt;/code&gt;) - captured quote text or idea statement.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quoted_author&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - person/source author of the quote.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;source_title&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - title of the source work.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;source_locator&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - source pointer (page, timestamp, chapter, URL fragment).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;language&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - quote language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;original_text&lt;/code&gt; (&lt;code&gt;long_text&lt;/code&gt;) - original-language quote if translation is used.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;context_note&lt;/code&gt; (&lt;code&gt;long_text&lt;/code&gt;) - context/interpretation note.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quote_date&lt;/code&gt; (&lt;code&gt;date&lt;/code&gt;) - date of saying/publication when known.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;quote/text&lt;/code&gt; usually uses &lt;code&gt;source_locator&lt;/code&gt; and &lt;code&gt;quoted_author&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quote/dialogue&lt;/code&gt; usually uses &lt;code&gt;source_title&lt;/code&gt; and context notes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quote/idea&lt;/code&gt; usually uses &lt;code&gt;context_note&lt;/code&gt; with concise source linkage.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Tags</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/tags/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/tags/</guid><description>&lt;h1 id="tags"&gt;Tags&lt;a class="anchor" href="#tags"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="position-in-model"&gt;Position in Model&lt;a class="anchor" href="#position-in-model"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Tag&lt;/code&gt; is a dedicated library-scoped entity and is NOT a &lt;code&gt;field_type&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Content entries are linked to tags via many-to-many association.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tag-entity"&gt;Tag Entity&lt;a class="anchor" href="#tag-entity"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt;) - immutable tag identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;library_id&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt;) - owning library scope.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;key&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt; or managed) - stable internal key.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;label&lt;/code&gt; (&lt;code&gt;user_editable&lt;/code&gt;) - user-visible tag name.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;color&lt;/code&gt; (&lt;code&gt;user_editable&lt;/code&gt;, optional) - visual color marker.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;icon&lt;/code&gt; (&lt;code&gt;user_editable&lt;/code&gt;, optional) - visual icon marker.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;created_at&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt;) - creation timestamp.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;updated_at&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt;) - update timestamp.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="content-association"&gt;Content Association&lt;a class="anchor" href="#content-association"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Content-tag relation MUST support multiple tags per content entry.&lt;/li&gt;
&lt;li&gt;Core MUST support assigning existing tags to content entries and unassigning tags from content entries.&lt;/li&gt;
&lt;li&gt;Core SHOULD support creating tags and assigning them in one logical operation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="editing-rules"&gt;Editing Rules&lt;a class="anchor" href="#editing-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Renaming a tag updates &lt;code&gt;label&lt;/code&gt; without requiring content rewrites.&lt;/li&gt;
&lt;li&gt;Removing a tag MUST remove links from content entries but MUST NOT remove content.&lt;/li&gt;
&lt;li&gt;Merging tags MAY be supported and SHOULD preserve content links.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="importexport-and-sync"&gt;Import/Export and Sync&lt;a class="anchor" href="#importexport-and-sync"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Tag taxonomy MUST travel with library export/import.&lt;/li&gt;
&lt;li&gt;Tag data and tag-content links MUST be synchronized in sync-enabled mode.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Library Actions</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/library-actions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/library-actions/</guid><description>&lt;h1 id="library-actions"&gt;Library Actions&lt;a class="anchor" href="#library-actions"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="scope"&gt;Scope&lt;a class="anchor" href="#scope"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;These actions define baseline operations for library entries and library tags.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="entry-actions"&gt;Entry Actions&lt;a class="anchor" href="#entry-actions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;create&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starts with selecting &lt;code&gt;content_type&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Core auto-fills system fields (&lt;code&gt;id&lt;/code&gt;, &lt;code&gt;library_id&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;Core sets default &lt;code&gt;status=inbox&lt;/code&gt; and default empty &lt;code&gt;priority&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;edit&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Updates user-editable fields.&lt;/li&gt;
&lt;li&gt;Updates &lt;code&gt;updated_at&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;set-subtype&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sets or clears &lt;code&gt;content_subtype&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;MUST NOT change &lt;code&gt;content_type&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Updates &lt;code&gt;updated_at&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;set-status&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sets &lt;code&gt;status&lt;/code&gt; from allowed status set.&lt;/li&gt;
&lt;li&gt;Free transition model (no hard state machine).&lt;/li&gt;
&lt;li&gt;MUST update &lt;code&gt;status_changed_at&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;MUST NOT update &lt;code&gt;updated_at&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;set-priority&lt;/code&gt;&lt;/p&gt;</description></item><item><title>person</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/person/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/person/</guid><description>&lt;h1 id="person"&gt;person&lt;a class="anchor" href="#person"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary person name.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;full_name&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - full legal/full public name.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aliases&lt;/code&gt; (&lt;code&gt;long_text&lt;/code&gt;) - alternative names/aliases.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;born_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - birth year.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;died_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - death year when applicable.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nationality&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - nationality/country identity marker.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;roles&lt;/code&gt; (&lt;code&gt;multi_enum&lt;/code&gt;) - roles/professions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;known_for&lt;/code&gt; (&lt;code&gt;long_text&lt;/code&gt;) - short note about what person is known for.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;official_site&lt;/code&gt; (&lt;code&gt;url&lt;/code&gt;) - official website/profile URL.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;external_ids&lt;/code&gt; (&lt;code&gt;json&lt;/code&gt;) - external identifiers (e.g., ORCID, Wikidata, IMDb).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;</description></item><item><title>resource</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/resource/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/resource/</guid><description>&lt;h1 id="resource"&gt;resource&lt;a class="anchor" href="#resource"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;resource_name&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary resource title/name.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;resource_kind&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;enum&lt;/code&gt;) - resource kind descriptor inside subtype context.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;provider&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - provider/owner organization.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;official_url&lt;/code&gt; (&lt;code&gt;url&lt;/code&gt;) - primary resource URL.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;access_model&lt;/code&gt; (&lt;code&gt;enum&lt;/code&gt;) - access mode (free/paid/freemium/private).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;license&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - license/usage model.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pricing_note&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - pricing model summary.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api_available&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;) - API availability marker.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;repo_host&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - host platform for repositories (e.g., GitHub, GitLab).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;language&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary language of content/interface.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;last_checked_at&lt;/code&gt; (&lt;code&gt;datetime&lt;/code&gt;) - last verification/check timestamp.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;</description></item><item><title>Schema Actions</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/schema-actions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/schema-actions/</guid><description>&lt;h1 id="schema-actions"&gt;Schema Actions&lt;a class="anchor" href="#schema-actions"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="scope"&gt;Scope&lt;a class="anchor" href="#scope"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;These actions define lifecycle operations for library-scoped schema entities: custom types, custom subtypes, and custom fields.&lt;/li&gt;
&lt;li&gt;Schema entities use internal stable &lt;code&gt;key&lt;/code&gt; values that are unique within one library scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="type-actions"&gt;Type Actions&lt;a class="anchor" href="#type-actions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;create-type&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creates a custom content type in current library.&lt;/li&gt;
&lt;li&gt;Internal &lt;code&gt;key&lt;/code&gt; MUST be unique within library.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;edit-type&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Updates editable type properties.&lt;/li&gt;
&lt;li&gt;Internal &lt;code&gt;key&lt;/code&gt; MUST remain immutable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;archive-type&lt;/code&gt; / &lt;code&gt;unarchive-type&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Disables/enables type for active usage in new entries.&lt;/li&gt;
&lt;li&gt;Existing entries using this type remain valid.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;delete-type&lt;/code&gt;&lt;/p&gt;</description></item><item><title>music</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/music/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/music/</guid><description>&lt;h1 id="music"&gt;music&lt;a class="anchor" href="#music"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;artist&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary artist/composer.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;original_title&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - original track/release title.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;album_title&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - parent album title.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;release_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - release year.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;duration_seconds&lt;/code&gt; (&lt;code&gt;duration&lt;/code&gt;) - track/runtime duration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;genre&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt; or &lt;code&gt;multi_enum&lt;/code&gt;) - music genre.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;label&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - record label.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isrc&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - ISRC identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;platform&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - listening platform/service.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;track_number&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - track order in album/EP.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;disc_number&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - disc number for multi-disc releases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;music/track&lt;/code&gt; usually uses &lt;code&gt;duration_seconds&lt;/code&gt;, &lt;code&gt;album_title&lt;/code&gt;, &lt;code&gt;track_number&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;music/melody&lt;/code&gt; usually uses concise metadata with optional source linkage.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;music/album&lt;/code&gt; and &lt;code&gt;music/ep&lt;/code&gt; usually use &lt;code&gt;release_year&lt;/code&gt;, &lt;code&gt;label&lt;/code&gt;, and high-level notes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;music/playlist&lt;/code&gt; usually uses platform/source and curation notes.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>audio</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/audio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/audio/</guid><description>&lt;h1 id="audio"&gt;audio&lt;a class="anchor" href="#audio"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;speaker_or_author&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - primary speaker/author/host.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;original_title&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - title in original language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;release_year&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;) - release/publication year.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;duration_seconds&lt;/code&gt; (&lt;code&gt;duration&lt;/code&gt;) - audio duration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;language&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - spoken language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;publisher_or_show&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - publisher/show/network name.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;episode_label&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - episode/chapter label.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;narrator&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - narrator/voice performer.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;platform&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - distribution/listening platform.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isbn_or_external_id&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - external identifier when applicable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;audio/audiobook&lt;/code&gt; usually uses &lt;code&gt;narrator&lt;/code&gt;, &lt;code&gt;publisher_or_show&lt;/code&gt;, &lt;code&gt;isbn_or_external_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;audio/podcast_episode&lt;/code&gt; usually uses &lt;code&gt;episode_label&lt;/code&gt;, &lt;code&gt;publisher_or_show&lt;/code&gt;, &lt;code&gt;platform&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;audio/podcast_show&lt;/code&gt; usually uses show-level publisher/platform metadata.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;audio/lecture_audio&lt;/code&gt; and &lt;code&gt;audio/interview_audio&lt;/code&gt; usually use &lt;code&gt;speaker_or_author&lt;/code&gt;, &lt;code&gt;duration_seconds&lt;/code&gt;, &lt;code&gt;language&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;audio/voice_note&lt;/code&gt; usually uses minimal metadata and creation context notes.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Presets</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/search-presets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/search-presets/</guid><description>&lt;h1 id="presets"&gt;Presets&lt;a class="anchor" href="#presets"&gt;#&lt;/a&gt;&lt;/h1&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;&lt;code&gt;Preset&lt;/code&gt; is a saved search definition in library scope.&lt;/li&gt;
&lt;li&gt;Preset stores search conditions only.&lt;/li&gt;
&lt;li&gt;Preset MUST NOT store sorting or displayed field layout.&lt;/li&gt;
&lt;li&gt;Preset MAY be nested using &lt;code&gt;parent_preset_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Preset MAY define &lt;code&gt;inherit_query&lt;/code&gt; (&lt;code&gt;true|false&lt;/code&gt;) for parent query inheritance.&lt;/li&gt;
&lt;li&gt;Preset MAY include visual metadata (&lt;code&gt;color&lt;/code&gt;, &lt;code&gt;icon&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="operations"&gt;Operations&lt;a class="anchor" href="#operations"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;create-preset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update-preset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rename-preset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete-preset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;run-preset&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="hierarchy-rules"&gt;Hierarchy Rules&lt;a class="anchor" href="#hierarchy-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Preset hierarchy cycles are forbidden.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;inherit_query=true&lt;/code&gt;, resulting query is combined with parent query using baseline &lt;code&gt;AND&lt;/code&gt; composition.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;inherit_query=false&lt;/code&gt;, parent relation is organizational only.&lt;/li&gt;
&lt;li&gt;On parent preset deletion, child presets SHOULD be moved to root level.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="user-control"&gt;User Control&lt;a class="anchor" href="#user-control"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;User can define and edit preset names.&lt;/li&gt;
&lt;li&gt;User can define preset order.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Collections</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/collections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/collections/</guid><description>&lt;h1 id="collections"&gt;Collections&lt;a class="anchor" href="#collections"&gt;#&lt;/a&gt;&lt;/h1&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;&lt;code&gt;Collection&lt;/code&gt; is a manual library-scoped grouping of content entries.&lt;/li&gt;
&lt;li&gt;Collection does NOT store search conditions.&lt;/li&gt;
&lt;li&gt;One content entry MAY belong to multiple collections.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="collection-fields"&gt;Collection Fields&lt;a class="anchor" href="#collection-fields"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt;) - immutable collection identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;library_id&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt;) - owning library scope.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; (&lt;code&gt;user_editable&lt;/code&gt;) - collection name.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;description&lt;/code&gt; (&lt;code&gt;user_editable&lt;/code&gt;, optional) - collection description.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;color&lt;/code&gt; (&lt;code&gt;user_editable&lt;/code&gt;, optional) - visual color marker.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;icon&lt;/code&gt; (&lt;code&gt;user_editable&lt;/code&gt;, optional) - visual icon marker.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;parent_collection_id&lt;/code&gt; (&lt;code&gt;user_editable&lt;/code&gt;, optional) - parent collection for hierarchy.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;created_at&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt;) - creation timestamp.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;updated_at&lt;/code&gt; (&lt;code&gt;system&lt;/code&gt;) - update timestamp.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="operations"&gt;Operations&lt;a class="anchor" href="#operations"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;create-collection&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rename-collection&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete-collection&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;add-to-collection&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;remove-from-collection&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reorder-collections&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="hierarchy-rules"&gt;Hierarchy Rules&lt;a class="anchor" href="#hierarchy-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Parent collection MAY have multiple child collections.&lt;/li&gt;
&lt;li&gt;One collection MAY have at most one parent.&lt;/li&gt;
&lt;li&gt;Collection hierarchy cycles are forbidden.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>misc</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/misc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/type-specific-fields/misc/</guid><description>&lt;h1 id="misc"&gt;misc&lt;a class="anchor" href="#misc"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kind_note&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - short note describing what this entry represents.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;external_id&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;) - optional external identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;extra_metadata&lt;/code&gt; (&lt;code&gt;json&lt;/code&gt;) - advanced custom metadata object.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subtype notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;misc&lt;/code&gt; has no default subtypes.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Execution Model</title><link>https://rekeeply.github.io/spec/en/core-api/execution-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/execution-model/</guid><description>&lt;h1 id="execution-model"&gt;Execution Model&lt;a class="anchor" href="#execution-model"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="execution-modes"&gt;Execution Modes&lt;a class="anchor" href="#execution-modes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;embedded&lt;/code&gt; (default): core runs in the same process as a client application for minimum latency.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;service&lt;/code&gt;: core runs as a separate local process and is accessed by clients via local IPC.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;remote&lt;/code&gt;: client connects to a remote core backend over a secure network channel.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="common-rules"&gt;Common Rules&lt;a class="anchor" href="#common-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;same core domain logic;&lt;/li&gt;
&lt;li&gt;authentication is mandatory;&lt;/li&gt;
&lt;li&gt;one active session is bound to one account;&lt;/li&gt;
&lt;li&gt;library-scoped operations work with only one active library;&lt;/li&gt;
&lt;li&gt;clients use the core contract, not direct DB file access.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="session-lifecycle"&gt;Session Lifecycle&lt;a class="anchor" href="#session-lifecycle"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;init&lt;/code&gt;: initial local vault setup and first library creation;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unlock&lt;/code&gt;: user authentication and opening a working session;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;active&lt;/code&gt;: command execution in active session context (library-scoped or account-scoped);&lt;/li&gt;
&lt;li&gt;&lt;code&gt;switch-library&lt;/code&gt;: explicit active library switch inside a session;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;auto-lock&lt;/code&gt;: automatic lock on inactivity timeout;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;manual lock/logout&lt;/code&gt;: explicit lock or session termination.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sync-model-high-level"&gt;Sync Model (High-Level)&lt;a class="anchor" href="#sync-model-high-level"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;local DB is the default source of user operations;&lt;/li&gt;
&lt;li&gt;synchronization is asynchronous and does not block user actions;&lt;/li&gt;
&lt;li&gt;synchronization supports both library-scoped data and account-scoped data;&lt;/li&gt;
&lt;li&gt;in offline mode, core continues to operate and sync is deferred;&lt;/li&gt;
&lt;li&gt;conflicts are resolved by a deterministic policy (defined in a separate section);&lt;/li&gt;
&lt;li&gt;sync data transfer must use a secure channel.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Search Behavior</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/search-behavior/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/search-behavior/</guid><description>&lt;h1 id="search-behavior"&gt;Search Behavior&lt;a class="anchor" href="#search-behavior"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-rule"&gt;Core Rule&lt;a class="anchor" href="#core-rule"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Search&lt;/code&gt; and &lt;code&gt;Preset&lt;/code&gt; MUST use the same query engine and semantics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="search-vs-preset"&gt;Search vs Preset&lt;a class="anchor" href="#search-vs-preset"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Search&lt;/code&gt; is ephemeral by default and is not persisted unless explicitly saved.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Preset&lt;/code&gt; is an explicitly persisted search definition.&lt;/li&gt;
&lt;li&gt;When current search is changed or library session is restarted, previous ephemeral search result is discarded.&lt;/li&gt;
&lt;li&gt;Only explicitly saved presets remain available across sessions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="searchable-dimensions"&gt;Searchable Dimensions&lt;a class="anchor" href="#searchable-dimensions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Search MUST support structured conditions by &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;priority&lt;/code&gt;, &lt;code&gt;rating&lt;/code&gt;, &lt;code&gt;recommendation&lt;/code&gt;, &lt;code&gt;favorite&lt;/code&gt;, &lt;code&gt;archived&lt;/code&gt;, &lt;code&gt;content_type&lt;/code&gt;, and &lt;code&gt;content_subtype&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Authentication Boundary</title><link>https://rekeeply.github.io/spec/en/core-api/authentication-boundary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/authentication-boundary/</guid><description>&lt;h1 id="authentication-boundary"&gt;Authentication Boundary&lt;a class="anchor" href="#authentication-boundary"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;authentication rules are defined by core;&lt;/li&gt;
&lt;li&gt;credential validation and session issuance are performed by core;&lt;/li&gt;
&lt;li&gt;clients only submit auth data through the core contract and store client-side session artifacts;&lt;/li&gt;
&lt;li&gt;data access without an active valid session is forbidden.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Library Lifecycle</title><link>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/library-lifecycle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/storage-model/library-model/library-lifecycle/</guid><description>&lt;h1 id="library-lifecycle"&gt;Library Lifecycle&lt;a class="anchor" href="#library-lifecycle"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="library-attributes"&gt;Library Attributes&lt;a class="anchor" href="#library-attributes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt; - unique immutable identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; - editable library name.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;icon&lt;/code&gt; - editable visual marker.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="lifecycle-operations"&gt;Lifecycle Operations&lt;a class="anchor" href="#lifecycle-operations"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;create-library&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creates new library with &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, and &lt;code&gt;icon&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rename-library&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Updates &lt;code&gt;name&lt;/code&gt; only.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt; remains immutable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;update-library-icon&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Updates &lt;code&gt;icon&lt;/code&gt; only.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;archive-library&lt;/code&gt; / &lt;code&gt;unarchive-library&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Archived library MUST NOT be selected as active until restored.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;delete-library&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hard delete requires explicit confirmation.&lt;/li&gt;
&lt;li&gt;Before delete, system SHOULD show related data volume summary.&lt;/li&gt;
&lt;li&gt;If deleted library is active:
&lt;ul&gt;
&lt;li&gt;switch active library to fallback when available;&lt;/li&gt;
&lt;li&gt;otherwise clear active library until next selection/creation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="invariants"&gt;Invariants&lt;a class="anchor" href="#invariants"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Lifecycle operations are account-scoped.&lt;/li&gt;
&lt;li&gt;Cross-account lifecycle operations are forbidden.&lt;/li&gt;
&lt;li&gt;Library &lt;code&gt;id&lt;/code&gt; is stable and never reused in same account scope.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Account Model</title><link>https://rekeeply.github.io/spec/en/core-api/account-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/account-model/</guid><description>&lt;h1 id="account-model"&gt;Account Model&lt;a class="anchor" href="#account-model"&gt;#&lt;/a&gt;&lt;/h1&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;Account&lt;/code&gt; as a first-class domain entity.&lt;/li&gt;
&lt;li&gt;One account MUST own zero or more libraries; each library MUST belong to exactly one account.&lt;/li&gt;
&lt;li&gt;One active session MUST be bound to exactly one account.&lt;/li&gt;
&lt;li&gt;Library-scoped operations in one active session MUST operate on exactly one active library.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="account-attributes"&gt;Account Attributes&lt;a class="anchor" href="#account-attributes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt; MUST exist and MUST be immutable.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt; MUST exist and represent lock boundary (&lt;code&gt;locked&lt;/code&gt;/&lt;code&gt;unlocked&lt;/code&gt; or equivalent).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;security_policy_ref&lt;/code&gt; MUST exist and MUST NOT contain plaintext secrets.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;default_library_id&lt;/code&gt; MAY exist; when present it MUST reference a library owned by the same account.&lt;/li&gt;
&lt;li&gt;Additional metadata MAY exist and is implementation-defined.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="lifecycle"&gt;Lifecycle&lt;a class="anchor" href="#lifecycle"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;init&lt;/code&gt; MUST create exactly one local account in a new vault.&lt;/li&gt;
&lt;li&gt;Repeated &lt;code&gt;init&lt;/code&gt; on an initialized vault MUST be rejected unless an explicit reset/force flow is used.&lt;/li&gt;
&lt;li&gt;Runtime state machine MUST be equivalent to &lt;code&gt;uninitialized -&amp;gt; locked -&amp;gt; unlocked -&amp;gt; locked&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="session-and-access-rules"&gt;Session and Access Rules&lt;a class="anchor" href="#session-and-access-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;After &lt;code&gt;unlock&lt;/code&gt;, session context MUST be bound to one &lt;code&gt;account_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Raw-scoped operations MAY run without selecting an active library.&lt;/li&gt;
&lt;li&gt;Cross-account operations in one active session MUST be rejected.&lt;/li&gt;
&lt;li&gt;Write operations on domain entities MUST be rejected while session is locked.&lt;/li&gt;
&lt;li&gt;Export/import operations MUST run in the active account context.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-goals"&gt;Non-Goals&lt;a class="anchor" href="#non-goals"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;No email/username/avatar requirements.&lt;/li&gt;
&lt;li&gt;No OAuth or social identity requirements.&lt;/li&gt;
&lt;li&gt;No client/device UI settings in core account schema.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Library Transfer Format</title><link>https://rekeeply.github.io/spec/en/core-api/library-transfer-format/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/library-transfer-format/</guid><description>&lt;h1 id="library-transfer-format"&gt;Library Transfer Format&lt;a class="anchor" href="#library-transfer-format"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="baseline"&gt;Baseline&lt;a class="anchor" href="#baseline"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Library export/import MUST use the &lt;code&gt;*.rkl&lt;/code&gt; file extension.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;*.rkl&lt;/code&gt; container MUST use &lt;code&gt;tar.zst&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Text datasets inside &lt;code&gt;*.rkl&lt;/code&gt; MUST use UTF-8 encoding.&lt;/li&gt;
&lt;li&gt;Baseline library export scope includes library-scoped data only.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; data is excluded from baseline library export/import scope.&lt;/li&gt;
&lt;li&gt;Transfer package MUST include manifest metadata, format version, and integrity data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="package-structure-baseline"&gt;Package Structure Baseline&lt;a class="anchor" href="#package-structure-baseline"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;manifest.json&lt;/code&gt; (required)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;library.json&lt;/code&gt; (required)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;taxonomy.json&lt;/code&gt; (required)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content.ndjson&lt;/code&gt; (required)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tags.json&lt;/code&gt; (required)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tag_links.ndjson&lt;/code&gt; (required)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;attachments.ndjson&lt;/code&gt; (required)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;progress.ndjson&lt;/code&gt; (optional)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;notes.ndjson&lt;/code&gt; (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="manifest-baseline"&gt;Manifest Baseline&lt;a class="anchor" href="#manifest-baseline"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;manifest.json&lt;/code&gt; MUST include: &lt;code&gt;format&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;encoding&lt;/code&gt;, &lt;code&gt;container&lt;/code&gt;, &lt;code&gt;exported_at&lt;/code&gt;, &lt;code&gt;library&lt;/code&gt;, &lt;code&gt;datasets&lt;/code&gt;, &lt;code&gt;integrity&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;format&lt;/code&gt; MUST be &lt;code&gt;rkl&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;encoding&lt;/code&gt; MUST be &lt;code&gt;utf-8&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;container&lt;/code&gt; MUST be &lt;code&gt;tar.zst&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;library&lt;/code&gt; MUST include &lt;code&gt;id&lt;/code&gt; and &lt;code&gt;name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datasets&lt;/code&gt; MUST include dataset path and checksum for each included dataset.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrity&lt;/code&gt; MUST include checksum algorithm and manifest checksum.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dataset-baselines"&gt;Dataset Baselines&lt;a class="anchor" href="#dataset-baselines"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;library.json&lt;/code&gt; MUST include &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;icon&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;taxonomy.json&lt;/code&gt; MUST include type/subtype taxonomy and field schema definitions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content.ndjson&lt;/code&gt; rows MUST include &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;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;code&gt;status_changed_at&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tags.json&lt;/code&gt; MUST include tag metadata.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tag_links.ndjson&lt;/code&gt; rows MUST include &lt;code&gt;content_id&lt;/code&gt;, &lt;code&gt;tag_id&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="taxonomy-transfer-rule"&gt;Taxonomy Transfer Rule&lt;a class="anchor" href="#taxonomy-transfer-rule"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Taxonomy MUST travel with library during export/import.&lt;/li&gt;
&lt;li&gt;Taxonomy scope includes: content types, content subtypes, field schema definitions, tags, and tag-content links.&lt;/li&gt;
&lt;li&gt;Import MUST restore taxonomy before or together with content datasets so content references remain valid.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dataset-note"&gt;Dataset Note&lt;a class="anchor" href="#dataset-note"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Library transfer SHOULD support attachment datasets (attachment metadata and content links).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="attachment-dataset-baseline"&gt;Attachment Dataset Baseline&lt;a class="anchor" href="#attachment-dataset-baseline"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Attachment metadata dataset file name: &lt;code&gt;attachments.ndjson&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Each attachment row MUST include: &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;content_id&lt;/code&gt;, &lt;code&gt;uri&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Optional attachment row fields: &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;mime&lt;/code&gt;, &lt;code&gt;size&lt;/code&gt;, &lt;code&gt;created_at&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content_id&lt;/code&gt; in &lt;code&gt;attachments.ndjson&lt;/code&gt; MUST reference an existing content entry.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="validation-and-safety-rules"&gt;Validation and Safety Rules&lt;a class="anchor" href="#validation-and-safety-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Import MUST reject package if any required dataset is missing.&lt;/li&gt;
&lt;li&gt;Import MUST reject package if any dataset checksum validation fails.&lt;/li&gt;
&lt;li&gt;Import MUST reject path traversal entries (&lt;code&gt;../&lt;/code&gt;, absolute paths, or equivalent unsafe archive paths).&lt;/li&gt;
&lt;li&gt;Import MUST validate schema and references before final commit.&lt;/li&gt;
&lt;li&gt;Import MUST be atomic: on critical validation error, no partial final state is committed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="import-order-baseline"&gt;Import Order Baseline&lt;a class="anchor" href="#import-order-baseline"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Validate package container and &lt;code&gt;manifest&lt;/code&gt; integrity first.&lt;/li&gt;
&lt;li&gt;Restore library metadata (&lt;code&gt;library.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Restore taxonomy datasets before content datasets.&lt;/li&gt;
&lt;li&gt;Restore content datasets.&lt;/li&gt;
&lt;li&gt;Restore tags and tag-content links.&lt;/li&gt;
&lt;li&gt;Restore &lt;code&gt;attachments.ndjson&lt;/code&gt; after content datasets.&lt;/li&gt;
&lt;li&gt;Run final referential validation and commit import atomically.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Settings Model</title><link>https://rekeeply.github.io/spec/en/core-api/settings-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/core-api/settings-model/</guid><description>&lt;h1 id="settings-model"&gt;Settings Model&lt;a class="anchor" href="#settings-model"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="scope-groups"&gt;Scope Groups&lt;a class="anchor" href="#scope-groups"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;account-scoped&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;library-scoped&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="library-scoped-settings"&gt;Library-Scoped Settings&lt;a class="anchor" href="#library-scoped-settings"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;default_status_on_create&lt;/code&gt; (&lt;code&gt;enum&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;default_priority_on_create&lt;/code&gt; (&lt;code&gt;enum|null&lt;/code&gt;, default &lt;code&gt;null&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;allow_parent_links&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;, default &lt;code&gt;true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;archived_visible_by_default&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="account-scoped-settings"&gt;Account-Scoped Settings&lt;a class="anchor" href="#account-scoped-settings"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;default_library_id&lt;/code&gt; (optional)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;last_active_library_restore&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;, default &lt;code&gt;true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;auto_lock_timeout_minutes&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;, default &lt;code&gt;15&lt;/code&gt;, &lt;code&gt;0&lt;/code&gt; means disabled)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;require_unlock_on_start&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;, default &lt;code&gt;true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sync_enabled&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;, default &lt;code&gt;false&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sync_mode&lt;/code&gt; (&lt;code&gt;enum: manual|auto&lt;/code&gt;, default &lt;code&gt;manual&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sync_interval_minutes&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;, default &lt;code&gt;15&lt;/code&gt;, used for &lt;code&gt;sync_mode=auto&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;export_compression_enabled&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;, default &lt;code&gt;true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;backup_enabled&lt;/code&gt; (&lt;code&gt;boolean&lt;/code&gt;, default &lt;code&gt;false&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;backup_interval_hours&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;, default &lt;code&gt;24&lt;/code&gt;, used when backup is enabled)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;backup_retention_count&lt;/code&gt; (&lt;code&gt;integer&lt;/code&gt;, default &lt;code&gt;10&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;timezone&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;, default system timezone)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;locale&lt;/code&gt; (&lt;code&gt;text&lt;/code&gt;, default account locale or client/system fallback)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fallback-rules"&gt;Fallback Rules&lt;a class="anchor" href="#fallback-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If &lt;code&gt;default_library_id&lt;/code&gt; is invalid or removed, fallback is &lt;code&gt;last_active&lt;/code&gt; when available, otherwise explicit library selection.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>TODO</title><link>https://rekeeply.github.io/spec/en/clients/cli/todo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/clients/cli/todo/</guid><description>&lt;h1 id="todo"&gt;TODO&lt;a class="anchor" href="#todo"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;TODO: CLI commands;&lt;/li&gt;
&lt;li&gt;TODO: CLI session lifecycle;&lt;/li&gt;
&lt;li&gt;TODO: configuration and local storage;&lt;/li&gt;
&lt;li&gt;TODO: errors and exit codes;&lt;/li&gt;
&lt;li&gt;TODO: client-side security requirements.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Glossary</title><link>https://rekeeply.github.io/spec/en/appendices/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/appendices/glossary/</guid><description>&lt;h1 id="glossary"&gt;Glossary&lt;a class="anchor" href="#glossary"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fixed canonical terms used across the specification.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Account&lt;/code&gt; — top-level user domain context in core.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Session&lt;/code&gt; — authenticated runtime context bound to one &lt;code&gt;account_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Library&lt;/code&gt; — structured storage domain for organized work.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt; — account-scoped unstructured capture domain.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;active_library_id&lt;/code&gt; — selected library for library-scoped operations.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;library-scoped&lt;/code&gt; — operation/data requiring an active library context.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;account-scoped&lt;/code&gt; — operation/data requiring only account session context.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unlock&lt;/code&gt; — session opening after credential validation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sync&lt;/code&gt; — asynchronous data synchronization between local and remote runtimes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;promote&lt;/code&gt; — explicit transfer from &lt;code&gt;Raw&lt;/code&gt; into &lt;code&gt;Library&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Versioning Policy</title><link>https://rekeeply.github.io/spec/en/appendices/versioning-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/appendices/versioning-policy/</guid><description>&lt;h1 id="versioning-policy"&gt;Versioning Policy&lt;a class="anchor" href="#versioning-policy"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="scope"&gt;Scope&lt;a class="anchor" href="#scope"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This policy defines versioning rules for specification, core API, and project repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="version-domains"&gt;Version Domains&lt;a class="anchor" href="#version-domains"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Spec Version&lt;/code&gt; - version of this specification.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Core API Version&lt;/code&gt; - version of runtime contract between clients and core.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Project Version&lt;/code&gt; - version of each concrete repository/package (&lt;code&gt;core&lt;/code&gt;, &lt;code&gt;cli&lt;/code&gt;, other clients).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scheme"&gt;Scheme&lt;a class="anchor" href="#scheme"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;All version domains MUST use Semantic Versioning: &lt;code&gt;MAJOR.MINOR.PATCH&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="semver-rules"&gt;SemVer Rules&lt;a class="anchor" href="#semver-rules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MAJOR&lt;/code&gt;: breaking contract change.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MINOR&lt;/code&gt;: backward-compatible feature addition.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PATCH&lt;/code&gt;: backward-compatible fix/editorial correction.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="compatibility-baseline"&gt;Compatibility Baseline&lt;a class="anchor" href="#compatibility-baseline"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Clients MUST declare supported &lt;code&gt;Core API Version&lt;/code&gt; range.&lt;/li&gt;
&lt;li&gt;Core runtime MUST expose current &lt;code&gt;Core API Version&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On startup/handshake, client-core compatibility MUST be validated before normal operations.&lt;/li&gt;
&lt;li&gt;Incompatible versions MUST fail with explicit compatibility error.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="release-mapping"&gt;Release Mapping&lt;a class="anchor" href="#release-mapping"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Spec Version&lt;/code&gt; MAY evolve independently of project package versions.&lt;/li&gt;
&lt;li&gt;Breaking changes in spec core contract SHOULD increment both &lt;code&gt;Spec Version&lt;/code&gt; and &lt;code&gt;Core API Version&lt;/code&gt; major versions.&lt;/li&gt;
&lt;li&gt;Project package versions SHOULD map to internal release cadence but MUST not bypass API compatibility checks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rkl-format-versioning"&gt;RKL Format Versioning&lt;a class="anchor" href="#rkl-format-versioning"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;*.rkl&lt;/code&gt; format version is independent and MUST be declared in &lt;code&gt;manifest&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Import MUST validate declared &lt;code&gt;rkl&lt;/code&gt; version before processing datasets.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Changelog</title><link>https://rekeeply.github.io/spec/en/changelog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rekeeply.github.io/spec/en/changelog/</guid><description>&lt;h1 id="changelog"&gt;Changelog&lt;a class="anchor" href="#changelog"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Specification change history.&lt;/p&gt;</description></item></channel></rss>