Maintain DomoDomo’s local data flows, IndexedDB, SQLite, unified memory, synchronization, imports, exports, and schema evolution. Use when changing localMemory, unifiedMemory, backend database models, sync routes, or data tools.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Instruções da origem · Visualização somente leitura
name
domodomo-data-persistence
description
Maintain DomoDomo’s local data flows, IndexedDB, SQLite, unified memory, synchronization, imports, exports, and schema evolution. Use when changing localMemory, unifiedMemory, backend database models, sync routes, or data tools.
DomoDomo Data and Persistence
Maintain Local persistence and data transformations that must preserve privacy, integrity, recoverability, and backward compatibility.
Operating contract
Scope: Local persistence and data transformations that must preserve privacy, integrity, recoverability, and backward compatibility.
Primary files: src/utils/localMemory.ts, src/utils/unifiedMemory.ts, backend/database.py, backend/models.py, backend/routers/memory.py, backend/routers/sync.py, and data tools.
Before changing code: Read the full read/write flow, existing schema, serialization shape, migration implications, and export format before modifying stored data.
01. data ownership boundaries
For data ownership boundaries, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For data ownership boundaries, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For data ownership boundaries, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For data ownership boundaries, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For data ownership boundaries, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For data ownership boundaries, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For data ownership boundaries, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For data ownership boundaries, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For data ownership boundaries, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For data ownership boundaries, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For data ownership boundaries, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For data ownership boundaries, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For data ownership boundaries, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For data ownership boundaries, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For data ownership boundaries, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For data ownership boundaries, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
For data ownership boundaries, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For data ownership boundaries, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For data ownership boundaries, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For data ownership boundaries, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For data ownership boundaries, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
02. browser storage selection
For browser storage selection, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For browser storage selection, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For browser storage selection, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For browser storage selection, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For browser storage selection, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For browser storage selection, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For browser storage selection, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For browser storage selection, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For browser storage selection, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For browser storage selection, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For browser storage selection, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For browser storage selection, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For browser storage selection, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For browser storage selection, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For browser storage selection, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For browser storage selection, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
03. IndexedDB key design
For IndexedDB key design, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For IndexedDB key design, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For IndexedDB key design, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For IndexedDB key design, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For IndexedDB key design, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For IndexedDB key design, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For IndexedDB key design, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For IndexedDB key design, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For IndexedDB key design, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For IndexedDB key design, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For IndexedDB key design, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For IndexedDB key design, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For IndexedDB key design, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For IndexedDB key design, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For IndexedDB key design, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For IndexedDB key design, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
04. SQLite schema design
For SQLite schema design, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For SQLite schema design, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For SQLite schema design, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For SQLite schema design, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For SQLite schema design, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For SQLite schema design, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For SQLite schema design, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For SQLite schema design, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For SQLite schema design, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For SQLite schema design, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For SQLite schema design, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For SQLite schema design, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For SQLite schema design, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For SQLite schema design, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For SQLite schema design, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For SQLite schema design, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
05. record validation
For record validation, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For record validation, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For record validation, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For record validation, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For record validation, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For record validation, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For record validation, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For record validation, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For record validation, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For record validation, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For record validation, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For record validation, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For record validation, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For record validation, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For record validation, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For record validation, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
For record validation, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
06. serialization formats
For serialization formats, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For serialization formats, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For serialization formats, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For serialization formats, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For serialization formats, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For serialization formats, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For serialization formats, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For serialization formats, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For serialization formats, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For serialization formats, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For serialization formats, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For serialization formats, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For serialization formats, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For serialization formats, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For serialization formats, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For serialization formats, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
07. versioned migrations
For versioned migrations, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For versioned migrations, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For versioned migrations, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For versioned migrations, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For versioned migrations, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For versioned migrations, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For versioned migrations, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For versioned migrations, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For versioned migrations, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For versioned migrations, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For versioned migrations, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For versioned migrations, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For versioned migrations, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For versioned migrations, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For versioned migrations, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For versioned migrations, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
08. backward compatibility
For backward compatibility, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For backward compatibility, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For backward compatibility, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For backward compatibility, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For backward compatibility, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For backward compatibility, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For backward compatibility, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For backward compatibility, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For backward compatibility, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For backward compatibility, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For backward compatibility, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For backward compatibility, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For backward compatibility, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For backward compatibility, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For backward compatibility, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For backward compatibility, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
09. transaction consistency
For transaction consistency, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For transaction consistency, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For transaction consistency, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For transaction consistency, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For transaction consistency, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For transaction consistency, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For transaction consistency, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For transaction consistency, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For transaction consistency, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For transaction consistency, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For transaction consistency, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For transaction consistency, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For transaction consistency, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For transaction consistency, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For transaction consistency, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For transaction consistency, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
10. write-ahead logging behavior
For write-ahead logging behavior, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For write-ahead logging behavior, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For write-ahead logging behavior, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For write-ahead logging behavior, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For write-ahead logging behavior, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For write-ahead logging behavior, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For write-ahead logging behavior, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For write-ahead logging behavior, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For write-ahead logging behavior, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For write-ahead logging behavior, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For write-ahead logging behavior, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For write-ahead logging behavior, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For write-ahead logging behavior, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For write-ahead logging behavior, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For write-ahead logging behavior, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For write-ahead logging behavior, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
11. memory timeline data
For memory timeline data, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For memory timeline data, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For memory timeline data, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For memory timeline data, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For memory timeline data, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For memory timeline data, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For memory timeline data, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For memory timeline data, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For memory timeline data, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For memory timeline data, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For memory timeline data, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For memory timeline data, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For memory timeline data, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For memory timeline data, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For memory timeline data, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For memory timeline data, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
12. semantic vector data
For semantic vector data, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For semantic vector data, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For semantic vector data, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For semantic vector data, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For semantic vector data, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For semantic vector data, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For semantic vector data, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For semantic vector data, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For semantic vector data, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For semantic vector data, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For semantic vector data, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For semantic vector data, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For semantic vector data, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For semantic vector data, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For semantic vector data, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For semantic vector data, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
13. sync route contracts
For sync route contracts, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For sync route contracts, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For sync route contracts, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For sync route contracts, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For sync route contracts, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For sync route contracts, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For sync route contracts, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For sync route contracts, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For sync route contracts, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For sync route contracts, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For sync route contracts, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For sync route contracts, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For sync route contracts, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For sync route contracts, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For sync route contracts, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For sync route contracts, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
14. import validation
For import validation, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For import validation, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For import validation, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For import validation, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For import validation, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For import validation, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For import validation, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For import validation, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For import validation, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For import validation, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For import validation, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For import validation, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For import validation, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For import validation, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For import validation, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For import validation, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
For import validation, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
15. export portability
For export portability, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For export portability, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For export portability, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For export portability, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For export portability, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For export portability, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For export portability, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For export portability, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For export portability, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For export portability, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For export portability, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For export portability, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For export portability, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For export portability, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For export portability, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For export portability, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
For , inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
16. data retention controls
For data retention controls, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For data retention controls, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For data retention controls, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For data retention controls, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For data retention controls, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For data retention controls, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For data retention controls, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For data retention controls, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For data retention controls, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For data retention controls, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For data retention controls, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For data retention controls, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For data retention controls, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For data retention controls, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For data retention controls, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For data retention controls, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
17. corruption recovery
For corruption recovery, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For corruption recovery, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For corruption recovery, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For corruption recovery, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For corruption recovery, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For corruption recovery, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For corruption recovery, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For corruption recovery, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For corruption recovery, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For corruption recovery, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For corruption recovery, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For corruption recovery, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For corruption recovery, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For corruption recovery, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For corruption recovery, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For corruption recovery, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
18. sensitive field handling
For sensitive field handling, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For sensitive field handling, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For sensitive field handling, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For sensitive field handling, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For sensitive field handling, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For sensitive field handling, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For sensitive field handling, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For sensitive field handling, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For sensitive field handling, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For sensitive field handling, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For sensitive field handling, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For sensitive field handling, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For sensitive field handling, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For sensitive field handling, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For sensitive field handling, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For sensitive field handling, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
19. persistence test coverage
For persistence test coverage, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For persistence test coverage, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For persistence test coverage, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For persistence test coverage, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For persistence test coverage, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For persistence test coverage, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For persistence test coverage, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For persistence test coverage, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For persistence test coverage, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For persistence test coverage, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For persistence test coverage, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For persistence test coverage, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For persistence test coverage, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For persistence test coverage, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For persistence test coverage, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For persistence test coverage, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
20. data change completion
For data change completion, establish the exact user-facing outcome and explicitly state which behavior is intentionally out of scope.
For data change completion, read the nearest existing implementation before creating files, types, helpers, or a second pattern for the same job.
For data change completion, map every caller, consumer, and persisted or exported output affected by this area before changing a contract.
For data change completion, prefer the smallest local implementation that fits the established DomoDomo architecture and preserves offline behavior.
For data change completion, use explicit TypeScript or Python types at boundaries; reject malformed values early and explain recovery to the user.
For data change completion, keep user files, prompts, tokens, metadata, and derived artifacts on the device unless a documented local service is required.
For data change completion, avoid adding a remote dependency, analytics call, credential requirement, or hidden network transfer to solve a local workflow.
For data change completion, design empty, invalid, loading, cancellation, permission-denied, and failure states before treating the happy path as complete.
For data change completion, release resources deterministically: revoke object URLs and terminate workers, listeners, streams, timers, and subscriptions.
For data change completion, bound memory, CPU, and rendering work for large inputs; provide progress and a clear limit instead of freezing the interface.
For data change completion, reuse DomoDomo visual patterns, semantic controls, labels, focus behavior, responsive rules, and accessible feedback.
For data change completion, keep identifiers stable and align names, categories, descriptions, paths, exports, and documentation across all affected surfaces.
For data change completion, record non-obvious browser, model, file-format, hardware, or platform limitations where agents and users will encounter them.
For data change completion, treat logs, exception messages, generated artifacts, and command output as potentially sensitive; minimize what is retained or shown.
For data change completion, verify that retries and repeated actions are safe and do not duplicate records, leak handles, or leave stale UI state.
For data change completion, test the narrowest realistic scenario first, then test a large or slow input and a user interruption before declaring success.
Completion standard
Confirm every changed surface follows this playbook and its local-first constraints.
Confirm applicable documentation, About metrics, technical records, and blog content accurately describe the final behavior.
Confirm the handoff records the commands run, validation outcome, known limits, and intentionally deferred work.
For browser storage selection, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For browser storage selection, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For browser storage selection, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For browser storage selection, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For browser storage selection, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For IndexedDB key design, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For IndexedDB key design, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For IndexedDB key design, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For IndexedDB key design, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For IndexedDB key design, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For SQLite schema design, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For SQLite schema design, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For SQLite schema design, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For SQLite schema design, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For SQLite schema design, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For record validation, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For record validation, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For record validation, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For record validation, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For serialization formats, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For serialization formats, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For serialization formats, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For serialization formats, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For serialization formats, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For versioned migrations, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For versioned migrations, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For versioned migrations, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For versioned migrations, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For versioned migrations, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For backward compatibility, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For backward compatibility, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For backward compatibility, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For backward compatibility, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For backward compatibility, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For transaction consistency, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For transaction consistency, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For transaction consistency, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For transaction consistency, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For transaction consistency, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For write-ahead logging behavior, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For write-ahead logging behavior, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For write-ahead logging behavior, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For write-ahead logging behavior, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For write-ahead logging behavior, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For memory timeline data, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For memory timeline data, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For memory timeline data, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For memory timeline data, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For memory timeline data, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For semantic vector data, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For semantic vector data, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For semantic vector data, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For semantic vector data, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For semantic vector data, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For sync route contracts, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For sync route contracts, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For sync route contracts, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For sync route contracts, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For sync route contracts, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For import validation, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For import validation, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For import validation, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For import validation, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
export portability
For export portability, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For export portability, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For export portability, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For export portability, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For data retention controls, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For data retention controls, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For data retention controls, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For data retention controls, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For data retention controls, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For corruption recovery, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For corruption recovery, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For corruption recovery, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For corruption recovery, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For corruption recovery, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For sensitive field handling, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For sensitive field handling, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For sensitive field handling, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For sensitive field handling, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For sensitive field handling, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For persistence test coverage, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For persistence test coverage, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For persistence test coverage, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For persistence test coverage, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For persistence test coverage, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.
For data change completion, inspect the final diff for accidental generated files, credentials, databases, model data, unrelated refactors, and false claims.
For data change completion, run the applicable project command and report its result; do not infer correctness from a visual inspection alone.
For data change completion, update product-facing documentation, technical records, metrics, and blog content whenever this area changes a public capability.
For data change completion, preserve unrelated working-tree changes and do not rewrite another contributor’s implementation without explicit scope.
For data change completion, finish with a concise handoff that identifies changed files, verification evidence, limitations, and remaining follow-up work.