/** * Core task tables: tasks, task_dependencies, task_relations, sessions, * session_handoff_entries, task_work_history, external_task_links. * * @epic T4454 */ import type { ArchiveReasonValue, TaskKind, TaskScope, TaskSeverity } from '@cleocode/contracts'; import { ARCHIVE_REASONS, TASK_KINDS, TASK_RELATION_TYPES, TASK_SCOPES, TASK_SEVERITIES, TASK_SIZES } from '@cleocode/contracts/enums'; /** Task priorities matching DB CHECK constraint on tasks.priority. */ export declare const TASK_PRIORITIES: readonly ["critical", "high", "medium", "low"]; /** * Task types matching DB CHECK constraint on tasks.type. * * Per ADR-083 §2.5, `'saga'` is a first-class tier discriminator above * Epic. The contracts SSoT (`packages/contracts/src/task.ts` line 45) * was widened to include `'saga'` by T10328; this constant mirrors it * so Drizzle's row-type narrowing stays aligned across the codebase. * * The DB-layer CHECK constraint enforcing this enum (plus the ADR-073 * §1.2 I5 invariant `CHECK (type != 'saga' OR parent_id IS NULL)`) is * installed by `20260523213708_t10277-saga-tasktype/migration.sql` * (T10329, Saga T10326 W1.B). * * @adr ADR-083 §2.5 * @adr ADR-073 §1.2 I5 * @saga T10326 * @task T10328 * @task T10329 */ export declare const TASK_TYPES: readonly ["saga", "epic", "task", "subtask"]; /** * Union types for the promoted task-axis constants — re-exported here so * existing `import { TaskKind, … } from '@cleocode/core/store/tasks-schema'` * consumers keep working. Canonical declarations live in * `packages/contracts/src/task.ts` (re-routed through `enums.ts` constants). */ export type { TaskKind, TaskScope, TaskSeverity }; /** * Task kind, scope, severity, and size axes — promoted to * `@cleocode/contracts/enums` in Phase 0c of the SG-ARCH-SOLID Saga * (T9955). Re-exported here so that Drizzle's `text({ enum: ... })` * row-type narrowing keeps using the same identifier and every * `import * as schema from './tasks-schema.js'` consumer preserves * byte-identical access. * * @task T944 * @task T9072 * @task T9073 * @task T9955 */ /** Task relation types — re-exported for Drizzle row-type narrowing. */ /** * Truth-grade archive reason values — promoted to * `@cleocode/contracts/enums` in Phase 0c of the SG-ARCH-SOLID Saga * (T9955). * * @task T1408 * @epic T1407 * @task T9955 */ export { ARCHIVE_REASONS, TASK_KINDS, TASK_RELATION_TYPES, TASK_SCOPES, TASK_SEVERITIES, TASK_SIZES, }; /** * Union type for {@link ARCHIVE_REASONS}. * * T1409: re-exported from `@cleocode/contracts` as the SSoT. */ export type ArchiveReason = ArchiveReasonValue; /** External task link types matching DB constraint on external_task_links.link_type. */ export declare const EXTERNAL_LINK_TYPES: readonly ["created", "matched", "manual", "transferred"]; /** Sync direction types matching DB constraint on external_task_links.sync_direction. */ export declare const SYNC_DIRECTIONS: readonly ["inbound", "outbound", "bidirectional"]; export declare const tasks: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "tasks"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; title: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; description: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; status: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string enum"; data: "pending" | "active" | "archived" | "proposed" | "done" | "blocked" | "cancelled"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["pending", "active", "blocked", "done", "cancelled", "archived", "proposed"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; priority: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string enum"; data: "medium" | "low" | "high" | "critical"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["critical", "high", "medium", "low"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; type: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string enum"; data: "task" | "epic" | "saga" | "subtask"; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["saga", "epic", "task", "subtask"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string enum"; data: "work" | "research" | "experiment" | "bug" | "spike" | "release"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["work", "research", "experiment", "bug", "spike", "release"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; scope: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string enum"; data: "project" | "feature" | "unit"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["project", "feature", "unit"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; severity: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string enum"; data: "P0" | "P1" | "P2" | "P3"; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["P0", "P1", "P2", "P3"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; parentId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; phase: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; size: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string enum"; data: "small" | "medium" | "large"; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["small", "medium", "large"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; position: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "number int53"; data: number; driverParam: number; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; positionVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "number int53"; data: number; driverParam: number; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; labelsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; notesJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; acceptanceJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; filesJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; origin: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; blockedBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; epicLifecycle: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; noAutoComplete: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "boolean"; data: boolean; driverParam: number; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; completedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; cancelledAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; cancellationReason: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; archivedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; archiveReason: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; cycleTimeDays: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "number int53"; data: number; driverParam: number; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; verificationJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; createdBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; modifiedBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; pipelineStage: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; assignee: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; ivtrState: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "tasks"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; /** * Acceptance criteria stored as first-class rows (one row per AC clause), * replacing the legacy JSON-array `tasks.acceptanceJson` column for new * writes per ADR-079-r1 §2.1 + §2.2 (Saga T10377 SG-IVTR-AC-BINDING, * Epic T10381 E-AC-MIGRATION, Task T10502 Wave 2a). * * Identity model: * - `id` is a canonical UUID-shaped AC id generated at creation. Legacy rows may be UUIDv4; * new rows are deterministic UUIDv5-shaped ids derived from task id + source key. * Immutable across edits; binds Validator verdicts, `satisfies:` evidence * atoms, and CI gate references. * - `ordinal` is the 1-based positional alias (`AC`) for human + agent * display. Monotonic per-task insertion order, **never reused** when an * AC is deleted (per §2.2: deletion leaves a gap, never back-fills). * * The UNIQUE INDEX on (taskId, ordinal) guarantees no two ACs on the same * task share an ordinal — protecting the alias-resolution path used by * spawn prompts and `cleo show`. * * `contentHash` is an optional sha256(text) snapshot used by the future * `_history` companion table (§2.3) for drift detection on text edits. * Writers MAY leave it NULL; readers MUST treat NULL as "drift detection * unavailable" rather than as "text unchanged". * * Subsequent waves in T10381 add `task_acceptance_criteria_history` * (T10503) and `evidence_ac_bindings` (T10504) — this PR establishes the * canonical AC table the others reference via FK. * * @adr ADR-079-r1 §2.1 §2.2 §4.2 * @saga T10377 * @epic T10381 * @task T10502 * @decision D013 */ export declare const taskAcceptanceCriteria: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "task_acceptance_criteria"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; ordinal: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "number int53"; data: number; driverParam: number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string enum"; data: "text" | "child_task" | "evidence_bound"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["text", "child_task", "evidence_bound"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; sourceKey: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; targetTaskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; projection: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; text: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; contentHash: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; /** Projection freshness status values for derived acceptance row materializations. */ export declare const ACCEPTANCE_PROJECTION_STATUSES: readonly ["fresh", "stale", "rebuilding"]; /** Dirty queue reason values for acceptance projection invalidation. */ export declare const ACCEPTANCE_PROJECTION_DIRTY_REASONS: readonly ["task_acceptance_changed", "task_reparented", "child_completion_changed", "manual_rebuild"]; /** * Per-projection freshness state for PM-Core V2 acceptance projections. * * `schemaVersion` stores the projection contract version so future rebuilders can * detect stale rows after a projection-shape change. The timestamp fields are * indexed by the hand-authored T10570 SQL migration for rebuild scheduling. * * @saga T10538 * @task T10570 */ export declare const acceptanceProjectionState: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "acceptance_projection_state"; schema: undefined; columns: { projectionKey: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_state"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; schemaVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_state"; dataType: "number int53"; data: number; driverParam: number; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; status: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_state"; dataType: "string enum"; data: "fresh" | "stale" | "rebuilding"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["fresh", "stale", "rebuilding"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; lastProjectedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_state"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; lastSourceUpdatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_state"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; sourceFingerprint: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_state"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_state"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_state"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; /** * Per-task dirty queue for acceptance projection rebuilds. * * The `(projection_key, task_id)` primary key coalesces repeated invalidations; * writers update reason/timestamps rather than enqueue unbounded duplicate work. * * @saga T10538 * @task T10570 */ export declare const acceptanceProjectionDirty: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "acceptance_projection_dirty"; schema: undefined; columns: { projectionKey: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_dirty"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_dirty"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; reason: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_dirty"; dataType: "string enum"; data: "task_acceptance_changed" | "task_reparented" | "child_completion_changed" | "manual_rebuild"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["task_acceptance_changed", "task_reparented", "child_completion_changed", "manual_rebuild"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; sourceUpdatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_dirty"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; queuedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_dirty"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; payloadJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "acceptance_projection_dirty"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; export declare const taskDependencies: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "task_dependencies"; schema: undefined; columns: { taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_dependencies"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; dependsOn: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_dependencies"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; /** * Denormalized task → label membership edge. * * Replaces fragile `labels_json LIKE '%label%'` filters that matched across * JSON array boundaries (e.g. `'tier2'` matched `'sentient-tier2-stale'`) and * could not use an index. Membership filtering now joins this junction. * * `tasks.labels_json` is RETAINED as the legacy whole-array compatibility * column (read by converters and many display paths); the junction is the * membership-query SSoT and is kept in sync on every task write. Mirrors the * shape of {@link taskDependencies} / {@link taskRelations}. `(task_id, label)` * is the natural composite identity — a label appears at most once per task. * * @task T11356 * @epic T11286 * @saga T11283 */ export declare const taskLabels: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "task_labels"; schema: undefined; columns: { taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_labels"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; label: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_labels"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; export declare const taskRelations: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "task_relations"; schema: undefined; columns: { taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_relations"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; relatedTo: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_relations"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; relationType: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_relations"; dataType: "string enum"; data: "extends" | "supersedes" | "blocks" | "related" | "duplicates" | "absorbs" | "fixes" | "groups"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["related", "blocks", "duplicates", "absorbs", "fixes", "extends", "supersedes", "groups"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; reason: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_relations"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; export declare const sessions: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "sessions"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; name: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; status: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string enum"; data: "orphaned" | "active" | "ended" | "suspended"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["active", "ended", "orphaned", "suspended"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; scopeJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; currentTask: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; taskStartedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; agent: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; notesJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; tasksCompletedJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; tasksCreatedJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; handoffJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; startedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; endedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; previousSessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; nextSessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; parentSessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; agentIdentifier: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; handoffConsumedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; handoffConsumedBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; debriefJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; providerId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; statsJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; resumeCount: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "number int53"; data: number; driverParam: number; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; gradeMode: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "number int53"; data: number; driverParam: number; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; ownerAuthToken: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; agentHandle: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; scopeKind: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; scopeId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; lastActivity: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "sessions"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; /** * Write-once handoff log for sessions. * * Each session may have AT MOST ONE handoff entry (UNIQUE on session_id). * * @task T1609 */ export declare const sessionHandoffEntries: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "session_handoff_entries"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "session_handoff_entries"; dataType: "number int53"; data: number; driverParam: number; notNull: true; hasDefault: true; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "session_handoff_entries"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; handoffJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "session_handoff_entries"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "session_handoff_entries"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; export declare const taskWorkHistory: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "task_work_history"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_work_history"; dataType: "number int53"; data: number; driverParam: number; notNull: true; hasDefault: true; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_work_history"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_work_history"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; setAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_work_history"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; clearedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_work_history"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; /** * Recognised values for {@link taskAcceptanceCriteriaHistory.reason}. * * Treated as an enum-ish discriminator at the application layer — NOT * enforced by a SQL CHECK constraint. The history table is forward-only, * and locking new reason codes behind a migration would block legitimate * future event kinds (e.g. saga-merge, evidence-rebind) without buying * any storage-level safety. * * @see {@link taskAcceptanceCriteriaHistory} * @task T10504 */ export declare const AC_HISTORY_REASONS: readonly ["drift", "edit", "backfill", "cancel", "restore"]; /** Union type for {@link AC_HISTORY_REASONS}. */ export type AcHistoryReason = (typeof AC_HISTORY_REASONS)[number]; /** * Append-only retention log of acceptance-criterion text changes. * * Each row captures the AC body that was REPLACED by an edit (or wiped * by a cancel, restored on un-cancel, etc.). The current AC text always * lives on the live `task_acceptance_criteria` row (added by sibling * task T10502 — `task_acceptance_criteria`). This table answers: * * - "Show me the most recent drift event for AC X" (idx + LIMIT 1) * - "Was this AC text ever in the form recorded by evidence atom Y?" * - "How many times has this AC drifted since the bound atom was recorded?" * * ## Why no FK on acId * * `acId` is INTENTIONALLY NOT declared `REFERENCES task_acceptance_criteria(id)`. * AC rows can be deleted (e.g. when their parent task is cancelled and the * task-level cascade fires, or when an entire AC is removed by an explicit * edit). The drift forensics use-case requires the history to outlive the * AC row — a deleted AC's history must remain queryable so we can answer * "did this AC ever exist?" after the live row is gone. * * Per T10494 / decision D013 (research doc `ac-history-model-decision`), * this is a deliberate denormalisation: orphan rows are accepted as the * cost of unbounded auditability. * * ## Why INTEGER AUTOINCREMENT primary key * * High-volume append-only log. Sequential integer PKs are ~2× faster than * UUIDs for the dominant access pattern (sequential insert, scan by acId). * The PK is opaque — no consumer is expected to address rows by `id`; the * `(acId, recordedAt DESC)` index drives the only read path. * * @adr ADR-079-r1 §D6 (drift detection model) * @task T10504 * @epic T10381 * @saga T10377 * @decision D013 */ export declare const taskAcceptanceCriteriaHistory: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "task_acceptance_criteria_history"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria_history"; dataType: "number int53"; data: number; driverParam: number; notNull: true; hasDefault: true; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}>; acId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria_history"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; recordedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria_history"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; previousText: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria_history"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; reason: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "task_acceptance_criteria_history"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; /** * Tracks links between CLEO tasks and external system tasks (Linear, Jira, GitHub, etc.). * Used by the reconciliation engine to match external tasks to existing CLEO tasks, * detect updates, and maintain bidirectional traceability. */ export declare const externalTaskLinks: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{ name: "external_task_links"; schema: undefined; columns: { id: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; providerId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; externalId: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; externalUrl: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; externalTitle: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; linkType: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string enum"; data: "manual" | "created" | "matched" | "transferred"; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["created", "matched", "manual", "transferred"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; syncDirection: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string enum"; data: "inbound" | "outbound" | "bidirectional"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["inbound", "outbound", "bidirectional"]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; metadataJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; linkedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; lastSyncAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{ name: string; tableName: "external_task_links"; dataType: "string"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}>; }; dialect: "sqlite"; }>; export type TaskRow = typeof tasks.$inferSelect; export type NewTaskRow = typeof tasks.$inferInsert; export type SessionRow = typeof sessions.$inferSelect; export type NewSessionRow = typeof sessions.$inferInsert; export type TaskDependencyRow = typeof taskDependencies.$inferSelect; /** Row type for task_labels SELECT queries (T11356). */ export type TaskLabelRow = typeof taskLabels.$inferSelect; /** Row type for task_labels INSERT operations (T11356). */ export type NewTaskLabelRow = typeof taskLabels.$inferInsert; export type TaskRelationRow = typeof taskRelations.$inferSelect; export type WorkHistoryRow = typeof taskWorkHistory.$inferSelect; export type ExternalTaskLinkRow = typeof externalTaskLinks.$inferSelect; export type NewExternalTaskLinkRow = typeof externalTaskLinks.$inferInsert; export type TaskAcceptanceCriteriaHistoryRow = typeof taskAcceptanceCriteriaHistory.$inferSelect; export type NewTaskAcceptanceCriteriaHistoryRow = typeof taskAcceptanceCriteriaHistory.$inferInsert; //# sourceMappingURL=tasks.d.ts.map