CLI stability policy

Holon is still pre-1.0, but not every CLI surface has the same change risk. This policy explains which command-line surfaces are safe for scripts, which ones are primarily human/debug aids, and what bar future command changes should meet.

Use this page with:

Stability levels

LevelIntended useSupport policy
stablePublic CLI contract that users and scripts may depend on.Avoid breaking changes. If a breaking change is unavoidable, keep a documented migration path and call it out in release notes.
experimentalPublicly reachable surface that is still being shaped.May change while Holon's runtime model stabilizes. Prefer warnings, aliases, or compatibility output before removal when practical.
internalDebug, fixture, local-development, or runtime-inspection surface.Not intended for external automation. May change with implementation details.
deprecatedCompatibility surface with a documented replacement.Keep working until the documented compatibility window or removal criteria are met. Do not add new automation against it.

When a command has mixed output modes, apply the level to the specific surface you consume. For example, a command path may be a stable candidate while its human-readable prose remains experimental.

Script-safe surfaces

Scripts should prefer surfaces that have all of these properties:

  1. A documented command path and flag set in the CLI reference or contract inventory.
  2. Machine-readable JSON output, preferably emitted through Holon's normalized JSON printing path rather than a raw HTTP response passthrough.
  3. A documented response owner, either in the CLI contract inventory or the HTTP/API inventory when the CLI mirrors a control-plane response.
  4. Explicit exit-code behavior from the CLI exit-code contract.

Current script-facing candidates include:

Scripts should avoid parsing exact help text, tracing logs, debug prose, or human summaries. Those outputs are for people and may change to improve clarity.

Human and diagnostic surfaces

The following surfaces are intentionally not primary automation contracts:

If a diagnostic surface becomes important for automation, promote the needed fields into a JSON response or a documented API/CLI contract instead of parsing debug text.

Deprecated holon control

holon control is deprecated. Use the agent lifecycle commands instead:

Deprecated commandReplacement
holon control start --agent <AGENT>holon agent start <AGENT>
holon control stop --agent <AGENT>holon agent stop <AGENT>
holon control abort --agent <AGENT>holon agent abort <AGENT>

Compatibility policy:

Change requirements

When changing CLI behavior:

  1. Update CLI reference when command paths, flags, or common workflows change.
  2. Update CLI contract inventory when stability classification, output mode, or script-safety changes.
  3. Update API contract inventory when CLI output mirrors a changed control-plane response.
  4. Add or update tests for stable and stable-candidate command shape, output, or exit-code behavior.
  5. Avoid introducing a new raw-output path for automation. If raw passthrough is necessary, document it as experimental until normalized.

Stable CLI surfaces should become boring: named explicitly, tested, and documented where users will look before writing scripts.