/**
 * Current-code invariants asserted (2026-04-21, ses_006 Phase 1):
 *
 *   - `claim(path, owner)` on an unowned file creates ownership, emits
 *     `ownership_claimed`, returns `{claimed: true, ownership}`.
 *   - `claim(path, owner)` by the same owner is idempotent — returns
 *     `{claimed: true, ownership}` WITHOUT re-emitting.
 *   - `claim(path, owner)` by a different owner is denied — emits
 *     `ownership_denied`, returns `{claimed: false, currentOwner, filePath}`.
 *   - `release(path, owner)` on the current owner deletes + emits; returns
 *     true. On mismatch or missing entry: returns false; no emit.
 *   - `transfer(path, from, to)` requires the current owner to equal
 *     `from`. Success replaces the entry with a new `claimedAt`, emits
 *     `ownership_transferred`; no intervening `ownership_released` or
 *     `ownership_claimed` events. Failure returns false; no emit.
 *   - `releaseAll(owner)` sweeps every ownership for `owner`, emits
 *     `ownership_released` per entry, returns the count. Other owners'
 *     entries are untouched.
 *   - File paths are normalised via `path.resolve` before keying —
 *     `./foo/bar` and the absolute resolution of the same path collide
 *     into one ownership slot.
 *   - Ownership is not per-tenant; only per-`RunId`. There is no tenant
 *     isolation at this layer (design.md §2.1 aspirational; see §2.7).
 */
export {};
//# sourceMappingURL=ownership.test.d.ts.map