Skip to content

octoform plan

plan loads configuration, discovers repositories, resolves effective policy, observes requested state, and reports executable and blocked differences. It never mutates GitHub.

octoform plan --config octoform.yml
octoform plan --config octoform.yml --repo octoform
octoform plan --config octoform.yml --type npm-package

Selection

--repo selects one exact discovered repository. --type selects every repository with one resolved type. Supplying neither evaluates the complete managed set after exclusions. Use a narrow selector for initial rollout and incident diagnosis.

Plan categories

Result Meaning
Executable change Current state is readable, differs from policy, and the operation is available.
Warning The change can execute but has a consequence requiring attention, such as workflow references during branch rename.
Blocked change Desired and current state cannot be reconciled safely or the capability is unavailable. It will never reach the applier.
No change The field matches or is not managed.

Blocked changes remain visible with their reason. Unreadable state is not converted into a guessed current value.

Consistency boundary

The plan is a point-in-time comparison, not a stored artifact. Octoform 0.3 has no serializable plan format and cannot apply a plan produced by an earlier process. apply invokes the same planning implementation, shows that invocation's changes, and retains them in memory for confirmation.

Exit and output

A successful plan exits 0 even when blocked operations are present. Invalid configuration, authentication failure, or an unhandled GitHub read failure exits 1. Output is human-oriented text; do not depend on its layout as a stable machine API.