/**
 * ThreadStore — canonical persistence contract for the Thread topic layer
 * (Project → **Thread** → Session → SubSession → Run).
 *
 * Threads are pure containers (Phase 0 decision B.1). They have no own
 * message stream and no fan-in `deriveStatus()` — status is owner-managed
 * (`'open' | 'archived'`). Every accessor takes explicit {@link TenantId};
 * cross-tenant access rejects with `TenantIsolationError` (Convention #17).
 *
 * Read accessors return `null` when the resource does not exist for the
 * supplied tenant (deny-by-default surface). Callers branch on missing
 * explicitly — no fallback substitution.
 *
 * `deleteThread` is intentionally a dumb record-delete at this layer:
 * it does NOT walk session ownership. The "reject when sessions attached"
 * precondition lives in {@link import('../../manager/thread/lifecycle.js').ThreadManager}
 * where both stores are in scope. Keeping ThreadStore free of cross-store
 * awareness preserves the single-boundary ownership boundary that Phase 2
 * has just introduced for this layer (Convention #0).
 */
export {};
//# sourceMappingURL=store.js.map