{
  "task_id": "task-2571+2",
  "captured_at": "2026-05-14T13:54:41.702231",
  "source": "memory/tasks/task-2571+2.md",
  "source_sha256": "bd28acc0d2706f468733b339429308bd46800457c98747f2d15d4a5a51877154",
  "allowed_resources": {
    "paths": [
      "scripts/finish-task.sh",
      "tests/regression/test_task_2571_plus_2_*.py",
      "tests/regression/test_stash_lifecycle_fail_stop_bash.py",
      "tests/regression/test_stash_audit_file_check.py",
      "memory/plans/tasks/task-2571+2/**",
      "memory/reports/task-2571+2.md",
      "memory/events/task-2571+2.*"
    ],
    "forbidden_paths": [
      "anu_v2/**",
      ".github/workflows/**",
      "scripts/pre_push_guard.py",
      "scripts/task_scope.py",
      "scripts/cleanup-stale-tasks.sh",
      "scripts/cleanup-workspace.py",
      "scripts/file_cleanup.py",
      "scripts/git-hooks/**",
      "scripts/worktree_manager.py",
      "scripts/taskctl_start*",
      "scripts/guard.sh",
      "scripts/start_task_guard.py",
      "scripts/stash_audit.py",
      "scripts/finish-task.sh.bak*",
      "memory/specs/stash-lifecycle.md",
      "memory/specs/stash-origin-audit.md",
      "memory/specs/protection-list.*",
      "memory/specs/task-lock-format.md",
      "tests/regression/test_stash_lifecycle_classification.py",
      "tests/regression/test_stash_lifecycle_dryrun.py",
      "tests/regression/test_stash_lifecycle_legacy.py",
      "tests/regression/test_stash_lifecycle_quarantine.py",
      "tests/regression/test_guard7_local_operational_patch.py",
      "dispatch/**",
      "memory/task-timer.py",
      "memory/tasks/task-2568*",
      "memory/tasks/task-2569.md",
      "memory/tasks/task-2569+1.md",
      "memory/tasks/task-2569+2.md",
      "memory/tasks/task-2570.md",
      "memory/tasks/task-2571.md",
      "memory/tasks/task-2571+1.md",
      "memory/tasks/task-2572.md",
      "memory/tasks/task-2573.md",
      "memory/tasks/task-2574.md",
      "memory/events/task-2568*",
      "memory/events/task-2569.*",
      "memory/events/task-2569+1.*",
      "memory/events/task-2569+2.*",
      "memory/events/task-2570.*",
      "memory/events/task-2571.*",
      "memory/events/task-2571+1.*",
      "memory/reports/task-2568*",
      "memory/reports/task-2569.md",
      "memory/reports/task-2569+1.md",
      "memory/reports/task-2569+2.md",
      "memory/reports/task-2570.md",
      "memory/reports/task-2571.md",
      "memory/reports/task-2571+1.md",
      "memory/reports/stash-origin-audit-*.md",
      ".tasks/locks/**",
      "memory/capabilities/**",
      ".env*",
      "**/*.pem",
      "secrets/**",
      "dist/**",
      "node_modules/**",
      ".worktrees/task-2571-dev4/**",
      ".worktrees/task-2571+1-dev4/**"
    ],
    "commands": [
      "pytest",
      "python3 -m py_compile",
      "python3 -c",
      "git",
      "gh",
      "bash -n",
      "shellcheck"
    ],
    "merge_policy": "tiered",
    "pr_base": "origin/main",
    "worktree_base": "origin/main",
    "worktree_path": ".worktrees/task-2571+2-dev4",
    "forbid_worktree_base_local_main": true,
    "forbid_reuse_existing_worktree": true,
    "dispatch_dependency": "task-2570 merged into origin/main (PR #122 @ 06494794)",
    "pr_predecessor_chain": "PR #123 (attempt-1, BLOCKED) → PR #124 (attempt-2, BLOCKED) → PR #<new> (attempt-3, target merge)",
    "attempt_number": 3,
    "attempt_n_hard_limit_for_this_task": 3,
    "forbid_automatic_attempt_4": true,
    "ttl_hours": 8
  }
}