/**
 * Permanent Exclusions — things aikit intentionally will NOT do.
 *
 * Each exclusion includes rationale grounded in the Bitter Lesson:
 * systems should leverage computation over hand-crafted features.
 * These exclusions are injected into copilot-instructions.md.
 */

export const PERMANENT_EXCLUSIONS = [
  {
    name: 'Hard-coded lint rules',
    rationale:
      'Project-specific linting belongs in ESLint or Biome config, not baked into agent instructions. Configurable tooling and automated checks scale better than hand-crafted rules embedded in prompts.',
    bitterLessonSafe: true,
  },

  {
    name: 'Framework-specific boilerplate generation',
    rationale:
      'Framework CLIs and IDE scaffolds already generate boilerplate from evolving upstream knowledge. Delegating to those computational systems is safer than freezing hand-written templates into aikit instructions.',
    bitterLessonSafe: true,
  },

  {
    name: 'Git workflow enforcement',
    rationale:
      'Branch policies, commit formatting, and merge gates belong in git hooks and CI where they can be enforced automatically. Reliable computation beats informal agent-side reminders and hand-crafted behavior rules.',
    bitterLessonSafe: true,
  },

  {
    name: 'IDE-specific keybinding and config guidance',
    rationale:
      'Editor shortcuts, panel layouts, and workspace settings are IDE concerns that change across clients and teams. Runtime tooling and local editor config are the right computational layer, not static agent instructions.',
    bitterLessonSafe: true,
  },

  {
    name: 'Package manager lock file manipulation',
    rationale:
      'Lock files should be produced by the package manager and verified in CI or release pipelines, not manually curated by agent policy. Deterministic tool execution is more robust than hand-crafted lockfile guidance.',
    bitterLessonSafe: true,
  },

  {
    name: 'Hard-coded file naming conventions',
    rationale:
      'Naming rules vary by repository and should live in project generators, linters, or review automation. Letting configurable computation enforce conventions scales better than embedding brittle file-name doctrine in prompts.',
    bitterLessonSafe: true,
  },

  {
    name: 'Runtime environment variable validation',
    rationale:
      'Environment validation belongs in application startup code, schemas, and deployment checks where real runtime state is available. Computed validation with executable code outperforms hand-crafted agent assumptions about env shape.',
    bitterLessonSafe: true,
  },
];
