Skip to main content

Module validate

Module validate 

Source
Expand description

Invariant checks for a loaded Compose tree.

Errors are collected rather than returned on first failure so the CLI can pretty-print the full list.

Enums§

ValidationError
ValidationWarning
Non-fatal findings: compose shapes that load and render fine but silently drop declared behavior. teamctl validate prints these without failing — the compose is still valid, the operator just isn’t getting what they wrote.

Constants§

DISPLAY_NAME_MAX_CHARS
T-160: max length for display_name. 64 is a sensible upper bound matching ratatui column widths in the TUI roster pane; longer names would force unsightly truncation downstream. Counted in Unicode scalar values (chars().count()), not grapheme clusters — most operator-typed labels are simple text where the two coincide, and the saved dependency on unicode-segmentation is not worth the fidelity gain for an at-most-64-cell rendering window.

Functions§

is_valid_id
T-310: charset rule for project.id and agent ids — both flow, unquoted, into shell-bound strings ({project}:{agent} in supervisor::build_up_command) and into tmux session names. A conservative ASCII allowlist keeps every downstream consumer safe at the boundary instead of forcing each call site to quote defensively. : is intentionally NOT allowed — it’s reserved as the canonical <project>:<agent> join separator everywhere in teamctl, and admitting it into an id would make id() parse ambiguous.
validate
validate_warnings
Capability-mismatch sweep, separate from validate so the errors-only contract (and every up / down / reload / bot call site) stays untouched. teamctl validate calls both and prints warnings without flipping the exit code.