{
  "task_id": "task-2628",
  "captured_at": "2026-05-21T17:38:15.219015",
  "source": "memory/tasks/task-2628.md",
  "source_sha256": "7345b7627de97a97a4530cb8fc6df10f45c1e3b6a0b2ee26a1d3646fad675c37",
  "allowed_resources": {
    "paths": [
      "anu_v3/active_dispatch_scanner.py",
      "anu_v3/authoritative_verdict_selector.py",
      "anu_v3/callback_4tuple_registry.py",
      "anu_v3/callback_owner_validator.py",
      "anu_v3/dispatch_callback_contract.py",
      "anu_v3/executor_callback_contract.py",
      "anu_v3/runtime_batch_state_updater.py",
      "anu_v3/runtime_next_action_resolver.py",
      "anu_v3/runtime_reconcile_checkpoint.py",
      "anu_v3/runtime_reconcile_checkpoint_recovery_layer.py",
      "anu_v3/self_collector_guard.py",
      "anu_v3/task_artifact_detector.py",
      "anu_v3/__init__.py",
      "tests/regression/test_anu_v3_dependency_isolation_2628.py",
      "memory/events/task-2628.result.json",
      "memory/reports/task-2628.md",
      "memory/tasks/task-2628.md"
    ],
    "forbidden_paths": [
      "dispatch/normal_fallback_callback_helper.py",
      "dispatch/callback_owner_enforcer.py",
      "dispatch/cron_dispatch_guard.py",
      "dispatch/executor_completion_contract.py",
      "dispatch/spec_template_validator.py",
      "scripts/finish-task.sh",
      "prompts/DIRECT-WORKFLOW.md",
      "utils/replacement_pr_runner.py",
      "utils/merge_queue_executor.py",
      "anu_v2/**",
      "memory/tasks/task-2619.md",
      "memory/events/task-2625.*",
      ".github/**",
      ".env*",
      "*.pem",
      "*.key",
      "memory/capabilities/**"
    ],
    "commands": [
      "pytest",
      "python3 -m py_compile",
      "ruff",
      "git"
    ],
    "merge_policy": "manual",
    "ttl_hours": 24
  }
}