{
  "task_id": "task-2479",
  "captured_at": "2026-05-07T19:03:31.739559",
  "source": "memory/tasks/task-2479.md",
  "source_sha256": "e4f562ef7eb0a58068f133db4e4fff606f37207bb1bb3647cb4f83235e769888",
  "allowed_resources": {
    "paths": [
      ".github/workflows/**",
      ".github/workflows/ci.yml",
      ".github/workflows/diagnostic*.yml",
      "scripts/ci.sh",
      "memory/tasks/task-2479*",
      "memory/reports/task-2479*",
      "memory/plans/tasks/task-2479/**",
      "memory/events/task-2479*"
    ],
    "forbidden_paths": [
      "server/main.py",
      "server/scripts/keyword_pool_refresh.py",
      "server/tests/**",
      "src/app/keyword-analysis/**",
      "scripts/finish-task.sh",
      "scripts/done-watcher.sh",
      "utils/silent_corruption_guard.py",
      "scripts/taskctl.py",
      "memory/specs/allowed_bot_accounts.json",
      "memory/specs/allowed_approvers.json",
      "memory/orchestration-audit/admin-override.jsonl",
      ".env.keys",
      ".secrets/**",
      ".gitignore",
      "memory/capabilities/**"
    ],
    "forbidden_actions": [
      "PR #105/#106 fix 코드 포함 금지",
      "임시 xfail/skip 금지",
      "admin override 금지",
      "branch protection bypass 금지",
      "force merge 금지",
      "merge policy 변경 금지",
      "test 대상 자체 변경 금지",
      "git push --force 금지"
    ],
    "bot_authentication": [
      "BOT_GITHUB_TOKEN .env.keys 자동 로드 (50분 systemd timer 자동 갱신)",
      "PR author = jeon-jonghyuk-taskctl-bot[bot]"
    ],
    "merge_policy": "★ failure matrix PASS 시 머지 (사전 회귀 fail은 visibility 복구가 본질). branch protection 막히면 fallback-2479a로 전환",
    "ttl_hours": 4
  }
}