Related:
Planner generates executable task sets from requirement/issue and persists them without duplication.
To avoid duplicate plans, operation assumes a single instance.
Out of scope:
- Task execution (code changes, verification command execution)
- Run artifact judge decisions
- Requirement content/file
- Existing backlog and dependency info
- Judge feedback / failure hints
- Repository inspection results
- Policy recovery hints (from past events)
- Research query/job (
--research-job <id>)
- Requirement parsing and validation
- Load existing context (feedback/hints)
- Run inspection (LLM)
- Task generation (LLM + fallback path)
- Dependency normalization
- Apply role / allowedPaths / command policy
- Verification command augmentation
- Hot-file overlap detection against active backlog (
queued/running/blocked) - Save plan (with dedupe lock)
- Link to issue when needed
- Init task injection for uninitialized repositories
- Cycle/redundancy removal in dependency index
- Automatic lockfile path allowance
- Command-driven allowedPaths completion
- Doc gap detection and docser task injection
- Reflect policy recovery hints into future tasks
- Attach backlog-overlap dependencies before persistence to reduce hot-file collisions
- Save plan summary in
planner.plan_createdevent
Research mode behavior:
- Run planner-first decomposition from
research_jobs.query - Generate atomic claims with fallback when decomposition fails
- Persist
research_claims - Enqueue initial
collecttasks (tasks.kind=research) - Update orchestrator metadata (
plannedAt,claimCount, warnings)
Planner can augment verification commands at task generation time.
PLANNER_VERIFY_COMMAND_MODE=off|fallback|contract|llm|hybrid(default:hybrid)- Verify contract:
.opentiger/verify.contract.json(path configurable) - On LLM planning failure, leaves warning and delegates to Worker auto-strategy
Planner start is blocked when the following backlogs exist:
- local task backlog
- issue task backlog
- PR/judge backlog
This is by design for backlog-first operation.
Exception:
- Planner started with
researchJobIdbypasses normal requirement preflight gating.
- Inspection runs with retry + quota-aware execution
- Fallback planning attempted even if inspection/task generation fails
- On hard failure, exits without corrupting existing tasks
- Startup and overall control:
apps/planner/src/main.ts,apps/planner/src/planner-runner.ts - Task persistence and plan event:
apps/planner/src/planner-tasks.ts - Task policy / allowedPaths adjustment:
apps/planner/src/task-policies.ts - Verification command augmentation:
apps/planner/src/planner-verification.ts - Issue-based task creation:
apps/planner/src/strategies/from-issue.ts
PLANNER_MODELPLANNER_TIMEOUTPLANNER_INSPECT_TIMEOUTPLANNER_INSPECT_MAX_RETRIESPLANNER_INSPECT_QUOTA_RETRY_DELAY_MSPLANNER_DEDUPE_WINDOW_MSPLANNER_USE_REMOTEPLANNER_REPO_URLPLANNER_VERIFY_COMMAND_MODEPLANNER_VERIFY_CONTRACT_PATHPLANNER_VERIFY_MAX_COMMANDSPLANNER_VERIFY_PLAN_TIMEOUT_SECONDS