Files
kandev/apps/backend/internal/db/sqlguard/exemptions.json
T

133 lines
23 KiB
JSON

{
"exemptions": [
{"file": "internal/system/toolretention/scan.go", "symbol": "consumeRow", "rule": "sqlite-date-function", "reason": "Tool payload retention rejects non-SQLite engines before scanning; julianday validates legacy SQLite timestamp strings"},
{"file": "internal/task/repository/sqlite/tool_payload_retention_scan.go", "symbol": "payloadTaskEligibilityTemplate", "rule": "sqlite-date-function", "reason": "PayloadTaskEligible requires the sqlite3 driver before validating legacy timestamps with SQLite date functions"},
{"file": "internal/agent/settings/store/sqlite.go", "symbol": "migrateDropModelCheckConstraint", "rule": "sqlite-catalog", "reason": "SQLite-only migration for a legacy CHECK constraint"},
{"file": "internal/agent/settings/store/sqlite.go", "symbol": "recreateAgentProfilesWithoutModelCheck", "rule": "sqlite-catalog", "reason": "SQLite-only table-recreation migration"},
{"file": "internal/automation/store.go", "symbol": "createTablesSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/automation/store.go", "symbol": "createTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/azuredevops/store.go", "symbol": "createConfigTableSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/azuredevops/store.go", "symbol": "createConfigTableSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/azuredevops/store.go", "symbol": "createTaskPRTableSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/azuredevops/store.go", "symbol": "createTaskPRTableSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/azuredevops/store.go", "symbol": "createTaskWorkItemTableSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/azuredevops/store.go", "symbol": "createWatchTablesSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/azuredevops/store.go", "symbol": "createWatchTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/backendapp/e2e_reset.go", "symbol": "handleE2EReset", "rule": "raw-placeholder", "reason": "The E2E reset endpoint operates on the SQLite task repository"},
{"file": "internal/backendapp/e2e_reset.go", "symbol": "listE2ETaskIDs", "rule": "raw-placeholder", "reason": "The E2E reset endpoint operates on the SQLite task repository"},
{"file": "internal/backendapp/e2e_reset.go", "symbol": "deleteGitHubAuthForReset", "rule": "raw-placeholder", "reason": "The E2E reset endpoint operates on the SQLite task repository"},
{"file": "internal/backendapp/e2e_reset.go", "symbol": "handleE2ECreateAutomation", "rule": "raw-placeholder", "reason": "The E2E seed endpoint operates on the SQLite task repository"},
{"file": "internal/db/schema.go", "symbol": "tableExistsQuery", "rule": "sqlite-catalog", "reason": "This is the central dialect-aware schema inspection helper"},
{"file": "internal/db/schema.go", "symbol": "TableColumns", "rule": "sqlite-catalog", "reason": "This is the central dialect-aware schema inspection helper"},
{"file": "internal/db/schema.go", "symbol": "ColumnExistsContext", "rule": "sqlite-catalog", "reason": "This is the central dialect-aware schema inspection helper"},
{"file": "internal/delivery/store.go", "symbol": "tableExists", "rule": "sqlite-catalog", "reason": "The SQLite branch is the explicit dialect boundary for the schema probe"},
{"file": "internal/delivery/store.go", "symbol": "tableExists", "rule": "raw-placeholder", "reason": "The placeholder is in the explicit SQLite branch of the schema probe"},
{"file": "internal/github/store.go", "symbol": "createTablesSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/github/store.go", "symbol": "createTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/github/store.go", "symbol": "applyIdempotentSchemaColumns", "rule": "datetime-type", "reason": "This is a legacy SQLite migration guarded by the provider schema dialect"},
{"file": "internal/github/store.go", "symbol": "unpublishedGitHubAuthSchemaNeedsReset", "rule": "sqlite-catalog", "reason": "The reset detector intentionally inspects only legacy SQLite schemas"},
{"file": "internal/github/store.go", "symbol": "unpublishedGitHubAuthSchemaNeedsReset", "rule": "raw-placeholder", "reason": "The reset detector intentionally queries only legacy SQLite schemas"},
{"file": "internal/github/store.go", "symbol": "addTaskPRAgentAutomationColumns", "rule": "boolean-integer", "reason": "This legacy SQLite migration uses integer storage for SQLite booleans"},
{"file": "internal/github/store.go", "symbol": "addTaskPRAgentAutomationColumns", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/github/store.go", "symbol": "addTaskCIRoundColumns", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/github/store.go", "symbol": "addPRScopeMigrationColumn", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/github/store.go", "symbol": "migratePRTablesForMultiRepo", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/github/store.go", "symbol": "rebuildIfHasLegacyConstraint", "rule": "sqlite-catalog", "reason": "SQLite cannot alter this legacy constraint in place"},
{"file": "internal/github/store.go", "symbol": "rebuildIfHasLegacyConstraint", "rule": "raw-placeholder", "reason": "SQLite-only table rebuild migration"},
{"file": "internal/gitlab/store.go", "symbol": "createTablesSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/gitlab/store.go", "symbol": "createTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/gitlab/store.go", "symbol": "migrateMRWatchUniqueKey", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/gitlab/store.go", "symbol": "rebuildIfHasLegacyConstraint", "rule": "sqlite-catalog", "reason": "SQLite cannot alter this legacy constraint in place"},
{"file": "internal/gitlab/store.go", "symbol": "rebuildIfHasLegacyConstraint", "rule": "raw-placeholder", "reason": "SQLite-only table rebuild migration"},
{"file": "internal/gitlab/store_mr_automation.go", "symbol": "createMRAutomationTablesSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/gitlab/store_mr_automation.go", "symbol": "createMRAutomationTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/integrations/alertsource/store.go", "symbol": "alertWatchesColumns", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.RenderSchema"},
{"file": "internal/integrations/alertsource/store.go", "symbol": "alertWatchesColumns", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.RenderSchema"},
{"file": "internal/integrations/alertsource/store.go", "symbol": "alertReservationsColumnsFmt", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.RenderSchema"},
{"file": "internal/integrations/workspacescope/workspacescope.go", "symbol": "tableExists", "rule": "sqlite-catalog", "reason": "Legacy workspace migration currently probes the SQLite catalog"},
{"file": "internal/integrations/workspacescope/workspacescope.go", "symbol": "tableExists", "rule": "raw-placeholder", "reason": "Legacy workspace migration currently uses a SQLite-only probe"},
{"file": "internal/integrations/workspacescope/workspacescope.go", "symbol": "workspaceExists", "rule": "raw-placeholder", "reason": "Legacy workspace migration runs against the SQLite database"},
{"file": "internal/jira/store.go", "symbol": "createTablesSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/jira/store.go", "symbol": "createTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/jira/store.go", "symbol": "addConfigHealthColumns", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/jira/store.go", "symbol": "addIssueWatchLastErrorColumns", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/jira/store.go", "symbol": "addOAuthColumns", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/jira/store.go", "symbol": "migrateLegacySingletonTable", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/jira/store.go", "symbol": "migrateLegacySingletonTable", "rule": "raw-placeholder", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/linear/store.go", "symbol": "createTablesSQL", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/linear/store.go", "symbol": "createTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/linear/store.go", "symbol": "addConfigColumns", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/linear/store.go", "symbol": "addIssueWatchLastErrorColumns", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/linear/store.go", "symbol": "migrateLegacySingletonTable", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/linear/store.go", "symbol": "migrateLegacySingletonTable", "rule": "raw-placeholder", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/notifications/store/sqlite.go", "symbol": "migrateDeliveries", "rule": "sqlite-catalog", "reason": "SQLite-only notification migration"},
{"file": "internal/office/repository/sqlite/agent_summary.go", "symbol": "RunCountsByDayForAgent", "rule": "sqlite-date-function", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/agent_summary.go", "symbol": "TasksByPriorityByDayForAgent", "rule": "sqlite-date-function", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/agent_summary.go", "symbol": "TasksByStatusByDayForAgent", "rule": "sqlite-date-function", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/agent_summary.go", "symbol": "RecentRunCostsForAgent", "rule": "sqlite-date-function", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/base_migrations.go", "symbol": "migrateTaskFTS", "rule": "sqlite-catalog", "reason": "SQLite-only FTS migration"},
{"file": "internal/office/repository/sqlite/base_migrations.go", "symbol": "maybeDropLegacyExternalContentFTS", "rule": "sqlite-catalog", "reason": "SQLite-only FTS migration"},
{"file": "internal/office/repository/sqlite/base_migrations.go", "symbol": "backfillFTS", "rule": "conflict-syntax", "reason": "SQLite FTS backfill uses SQLite conflict semantics"},
{"file": "internal/office/repository/sqlite/base_migrations.go", "symbol": "runTaskPriorityRecreate", "rule": "sqlite-catalog", "reason": "SQLite-only table-recreation migration"},
{"file": "internal/office/repository/sqlite/base_migrations.go", "symbol": "tasksTableExists", "rule": "sqlite-catalog", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/catchup_migrations.go", "symbol": "routineTableExists", "rule": "sqlite-catalog", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/catchup_migrations.go", "symbol": "migrateRoutineDefaultPolicyRebuild", "rule": "sqlite-catalog", "reason": "SQLite-only table-recreation migration"},
{"file": "internal/office/repository/sqlite/dashboard.go", "symbol": "QueryRunActivity", "rule": "sqlite-date-function", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/labels.go", "symbol": "GetOrCreateLabel", "rule": "conflict-syntax", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/labels.go", "symbol": "AddLabelToTask", "rule": "conflict-syntax", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/loop_health.go", "symbol": "CountEligibleTriggers", "rule": "boolean-integer", "reason": "The Office SQLite schema stores trigger enabled as an INTEGER flag"},
{"file": "internal/office/repository/sqlite/loop_health.go", "symbol": "ListOverdueOrStrandedTriggers", "rule": "boolean-integer", "reason": "The Office SQLite schema stores trigger enabled as an INTEGER flag"},
{"file": "internal/office/repository/sqlite/tasks.go", "symbol": "hasFTSTable", "rule": "sqlite-catalog", "reason": "SQLite-only FTS inspection"},
{"file": "internal/office/repository/sqlite/tasks.go", "symbol": "CheckoutTask", "rule": "sqlite-date-function", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/tasks.go", "symbol": "CheckoutTaskForRun", "rule": "sqlite-date-function", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/tasks.go", "symbol": "ListUnstartedTasks", "rule": "sqlite-date-function", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/office/repository/sqlite/workspace_groups.go", "symbol": "AddWorkspaceGroupMember", "rule": "conflict-syntax", "reason": "The Office repository is explicitly SQLite-only"},
{"file": "internal/orchestrator/messagequeue/repository_sqlite.go", "symbol": "NewSQLiteRepository", "rule": "sqlite-catalog", "reason": "The SQLite message queue repository is explicitly SQLite-only"},
{"file": "internal/persistence/meta.go", "symbol": "hasUserTables", "rule": "sqlite-catalog", "reason": "This helper inspects a SQLite database candidate"},
{"file": "internal/persistence/provider.go", "symbol": "provideSQLite", "rule": "sqlite-catalog", "reason": "SQLite-only database cleanup runs PRAGMA optimize before close"},
{"file": "internal/persistence/sqlite_selection.go", "symbol": "inspectSQLiteCandidateWithMode", "rule": "sqlite-catalog", "reason": "This helper inspects a SQLite database candidate"},
{"file": "internal/sentry/store.go", "symbol": "sentryWatchesColumns", "rule": "boolean-integer", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/sentry/store.go", "symbol": "sentryWatchesColumns", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/sentry/store.go", "symbol": "createTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/sentry/store.go", "symbol": "migrateLegacySingletonTable", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/sentry/store.go", "symbol": "migrateLegacySingletonTable", "rule": "raw-placeholder", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/sentry/store.go", "symbol": "migrateConfigsTableToInstances", "rule": "raw-placeholder", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/sentry/store.go", "symbol": "addIssueWatchLastErrorColumns", "rule": "datetime-type", "reason": "This legacy SQLite migration is skipped for PostgreSQL"},
{"file": "internal/sentry/store.go", "symbol": "migrateWatchesAddInstanceColumn", "rule": "sqlite-catalog", "reason": "SQLite-only table-recreation migration"},
{"file": "internal/system/database/maintenance.go", "symbol": "runOptimize", "rule": "sqlite-catalog", "reason": "SQLite-only maintenance operation"},
{"file": "internal/system/database/stats.go", "symbol": "readSQLiteDBSize", "rule": "sqlite-catalog", "reason": "SQLite-only database size probe"},
{"file": "internal/system/database/reset.go", "symbol": "dropUserTables", "rule": "sqlite-catalog", "reason": "Database reset is explicitly a SQLite maintenance operation"},
{"file": "internal/system/settings/store.go", "symbol": "migrateLegacySystemSettings", "rule": "sqlite-catalog", "reason": "This legacy settings migration is SQLite-only"},
{"file": "internal/system/settings/store.go", "symbol": "migrateLegacySystemSettings", "rule": "conflict-syntax", "reason": "This legacy settings migration is SQLite-only"},
{"file": "internal/task/repository/sqlite/base_migrations.go", "symbol": "recreateTable", "rule": "sqlite-catalog", "reason": "SQLite cannot alter this legacy table in place"},
{"file": "internal/task/repository/sqlite/worktree_ownership_git_snapshot.go", "symbol": "prepareTaskWorktreeCutoverForeignKeys", "rule": "sqlite-catalog", "reason": "SQLite-only foreign-key cutover migration"},
{"file": "internal/task/repository/sqlite/base_migrations.go", "symbol": "recreateTable", "rule": "raw-placeholder", "reason": "SQLite-only table rebuild migration"},
{"file": "internal/task/repository/sqlite/base_migrations.go", "symbol": "backfillExecutorsRunningFromTaskSessions", "rule": "sqlite-catalog", "reason": "This backfill is a SQLite-only legacy migration"},
{"file": "internal/task/repository/sqlite/base_migrations.go", "symbol": "backfillExecutorsRunningFromTaskSessions", "rule": "raw-placeholder", "reason": "This backfill is a SQLite-only legacy migration"},
{"file": "internal/task/repository/sqlite/base_migrations.go", "symbol": "healDuplicateTaskEnvForTask", "rule": "raw-placeholder", "reason": "This repair is a SQLite-only legacy migration"},
{"file": "internal/task/repository/sqlite/session.go", "symbol": "DismissLastAgentError", "rule": "sqlite-date-function", "reason": "The task SQLite repository owns this SQLite date expression"},
{"file": "internal/task/repository/sqlite/worktree_ownership_targets.go", "symbol": "tableColumns", "rule": "sqlite-catalog", "reason": "SQLite-only worktree ownership migration"},
{"file": "internal/task/repository/sqlite/worktree_ownership_targets.go", "symbol": "tableColumns", "rule": "raw-placeholder", "reason": "SQLite-only worktree ownership migration"},
{"file": "internal/workflow/repository/phase2_sqlite.go", "symbol": "backfillParticipantsCreatedAtFromRowid", "rule": "sqlite-date-function", "reason": "Guarded by dialect.IsPostgres and returns before this statement on every non-SQLite driver"},
{"file": "internal/workflow/repository/sqlite.go", "symbol": "DeleteStep", "rule": "sqlite-catalog", "reason": "The workflow SQLite repository owns this catalog probe"},
{"file": "internal/workflowsync/store.go", "symbol": "createTablesSQL", "rule": "datetime-type", "reason": "The provider schema template is rendered by dialect.MustRenderSchema"},
{"file": "internal/agent/settings/store/sqlite.go", "symbol": "UpdateAgentProfileEnabled", "rule": "boolean-integer", "reason": "The agent settings schema stores user_modified as an INTEGER flag"},
{"file": "internal/office/configsync/store.go", "symbol": "UpsertConfigForWorkspace", "rule": "boolean-integer", "reason": "The Office config-sync schema stores last_ok as an INTEGER flag"},
{"file": "internal/office/repository/sqlite/routines.go", "symbol": "GetDueTriggers", "rule": "boolean-integer", "reason": "The Office SQLite schema stores trigger enabled as an INTEGER flag"},
{"file": "internal/office/repository/sqlite/routines.go", "symbol": "ListStrandedTriggers", "rule": "boolean-integer", "reason": "The Office SQLite schema stores trigger enabled as an INTEGER flag"},
{"file": "internal/office/repository/sqlite/routines.go", "symbol": "ReconcileTriggerNextRun", "rule": "boolean-integer", "reason": "The Office SQLite schema stores trigger enabled as an INTEGER flag"},
{"file": "internal/plugins/marketplace/sourcestore.go", "symbol": "EnsureBuiltin", "rule": "boolean-integer", "reason": "The marketplace source schema stores enabled and builtin as INTEGER flags"},
{"file": "internal/plugins/state/instance_store.go", "symbol": "List", "rule": "boolean-integer", "reason": "The plugin instance-state schema stores deleted as an INTEGER tombstone"},
{"file": "internal/plugins/state/instance_store.go", "symbol": "Set", "rule": "boolean-integer", "reason": "The plugin instance-state schema stores deleted as an INTEGER tombstone"},
{"file": "internal/plugins/state/instance_store.go", "symbol": "Delete", "rule": "boolean-integer", "reason": "The plugin instance-state schema stores deleted as an INTEGER tombstone"},
{"file": "internal/prompts/store/sqlite.go", "symbol": "refreshLegacyChangesWalkthroughPrompt", "rule": "boolean-integer", "reason": "The prompts SQLite schema stores builtin as an INTEGER flag"},
{"file": "internal/prompts/store/sqlite.go", "symbol": "refreshLegacyCIAutoFixPrompt", "rule": "boolean-integer", "reason": "The prompts SQLite schema stores builtin as an INTEGER flag"},
{"file": "internal/task/repository/sqlite/defaults.go", "symbol": "hideBuiltinWorkflows", "rule": "boolean-integer", "reason": "The task SQLite schema stores hidden as an INTEGER flag"},
{"file": "internal/utility/store/sqlite.go", "symbol": "initSchema", "rule": "boolean-integer", "reason": "The utility SQLite schema stores builtin and enabled as INTEGER flags"},
{"file": "internal/utility/store/sqlite.go", "symbol": "migrateTemplatePlaceholders", "rule": "boolean-integer", "reason": "The utility SQLite schema stores builtin as an INTEGER flag"},
{"file": "internal/utility/store/sqlite.go", "symbol": "NormalizeEmptyBuiltinBinding", "rule": "boolean-integer", "reason": "The utility SQLite schema stores builtin as an INTEGER flag"},
{"file": "internal/utility/store/sqlite.go", "symbol": "DeleteAgent", "rule": "boolean-integer", "reason": "The utility SQLite schema stores builtin as an INTEGER flag"},
{"file": "internal/workflowsync/store.go", "symbol": "UpsertConfigForWorkspace", "rule": "boolean-integer", "reason": "The workflow-sync schema stores last_ok as an INTEGER flag"}
]
}