/** * T310-readiness gate: detect conduit.db vs legacy signaldock.db at project tier. * * T311 backup/restore code paths reference `.cleo/conduit.db` (project tier) and * `$XDG_DATA_HOME/cleo/signaldock.db` (global tier) per ADR-037. A project that * has not yet been migrated (still has `.cleo/signaldock.db` without a * `.cleo/conduit.db`) will confuse T311 export/import commands. This gate runs * as a precondition on every T311 CLI verb. * * @task T342 * @epic T311 * @why T311 export/import references .cleo/conduit.db (project tier) and * $XDG_DATA_HOME/cleo/signaldock.db (global tier) per ADR-037. * If the current project is still on the pre-T310 topology, T311 * commands must surface a clear error telling the user to run a * cleo command first to trigger migration. * @what Throws T310MigrationRequiredError with instructions if legacy * signaldock.db exists AND conduit.db does not. */ /** * Thrown by `assertT310Ready` when the current project is still on the * pre-T310 topology: `.cleo/signaldock.db` is present but `.cleo/conduit.db` * is absent. T311 commands cannot proceed until migration has run. * * @task T342 * @epic T311 */ export declare class T310MigrationRequiredError extends Error { readonly projectRoot: string; /** * @param projectRoot - Absolute path to the project root that needs migration. */ constructor(projectRoot: string); } /** * Asserts the current project is on the post-T310 topology. Does nothing * if conduit.db exists (migration already ran) OR if no legacy signaldock.db * exists (fresh install — no migration needed). * * Throws when legacy signaldock.db is present AND conduit.db is absent, * which indicates the project has not yet been migrated to the T310 topology * expected by T311 backup/restore commands. * * @param projectRoot - Absolute path to the project root. Defaults to * `getProjectRoot()` (walks ancestors for `.cleo/` sentinel). * @throws {T310MigrationRequiredError} if legacy signaldock.db exists * without conduit.db at the project tier. * * @task T342 * @epic T311 * * @example * ```typescript * // Precondition guard at the top of every T311 CLI verb handler: * assertT310Ready(); * ``` */ export declare function assertT310Ready(projectRoot?: string): void; /** * Returns true if T311 commands can safely run on the current project. * * This is the non-throwing companion to `assertT310Ready`. Returns false * only when the pre-T310 topology is detected (legacy signaldock.db exists * without conduit.db). All other states — fresh installs, fully-migrated * projects — return true. * * @param projectRoot - Absolute path to the project root. Defaults to * `getProjectRoot()` (walks ancestors for `.cleo/` sentinel). * @returns `true` if the project is on the post-T310 topology or is a fresh * install; `false` if migration is required. * * @task T342 * @epic T311 * * @example * ```typescript * if (!isT310Ready()) { * console.error('Run `cleo version` to trigger T310 migration first.'); * } * ``` */ export declare function isT310Ready(projectRoot?: string): boolean; //# sourceMappingURL=t310-readiness.d.ts.map