Index
checks
¶
Validation check implementations.
This module contains all the built-in validation checks organized by category: - jinja: Template syntax and undefined variable checks - paths: File and directory existence checks - config: Configuration structure and value checks
Classes¶
FanOutWithoutDependenciesCheck
¶
Check fan-out configs have dependencies (V206).
When fan-out stages are configured without dependencies, stages may execute out of order.
Functions¶
check
¶
Fire when fan-out is configured without dependencies.
Source code in src/marianne/validation/checks/best_practices.py
FanOutWithoutParallelCheck
¶
Check fan-out configs enable parallel execution (V207).
Fan-out instances are designed to run concurrently, but will execute sequentially if parallel mode is disabled.
Functions¶
check
¶
Fire when fan-out is configured without parallel.
Source code in src/marianne/validation/checks/best_practices.py
FileExistsOnlyCheck
¶
Check for file_exists-only validations (V205).
file_exists alone cannot detect stale files left from a
previous run. Adding file_modified or content checks is
recommended.
Functions¶
check
¶
Fire when every validation is file_exists.
Source code in src/marianne/validation/checks/best_practices.py
FormatSyntaxInTemplateCheck
¶
Check for format-string syntax in Jinja templates (V202).
Prompt templates use Jinja ({{ name }}), not Python format strings
({name}). Only flags known built-in names to avoid false positives.
Functions¶
check
¶
Scan prompt template for {builtin_name} patterns.
Source code in src/marianne/validation/checks/best_practices.py
JinjaInValidationPathCheck
¶
Check for Jinja syntax in validation paths (V201).
Validation paths use Python .format() syntax ({workspace}),
not Jinja ({{ workspace }}). Using Jinja syntax causes paths to
render literally with braces intact.
Functions¶
check
¶
Check validation paths for {{ markers.
Source code in src/marianne/validation/checks/best_practices.py
MissingDisableMcpCheck
¶
Check that disable_mcp is enabled for Claude CLI (V209).
MCP servers can cause deadlocks in unattended orchestration. Disabling MCP provides faster, more reliable execution.
Functions¶
check
¶
Fire when Claude CLI backend lacks disable_mcp.
Source code in src/marianne/validation/checks/best_practices.py
MissingSkipPermissionsCheck
¶
Check that skip_permissions is enabled for Claude CLI (V204).
Claude CLI will prompt for permission approval, which hangs in unattended mode.
Functions¶
check
¶
Fire when Claude CLI backend lacks skip_permissions.
Source code in src/marianne/validation/checks/best_practices.py
NoValidationsCheck
¶
Check that at least one validation rule exists (V203).
Without validations, sheets always "pass" and you learn nothing about execution quality.
Functions¶
check
¶
Fire when no validations are configured.
Source code in src/marianne/validation/checks/best_practices.py
SkipWhenSheetRangeCheck
¶
Check that skip_when and skip_when_command keys are in-range (V212).
Each key in skip_when/skip_when_command must satisfy 1 ≤ k ≤ total_sheets. Out-of-range keys are silently ignored at runtime — they will never fire. This is a WARNING (non-blocking) because the config is executable, just suspicious.
Functions¶
check
¶
Warn when skip_when or skip_when_command keys are out of range.
Source code in src/marianne/validation/checks/best_practices.py
VariableShadowingCheck
¶
Check for user variables that shadow built-ins (V208).
User-defined prompt variables that share names with Marianne's built-in variables will override the real values, causing unexpected behavior.
Functions¶
check
¶
Fire when prompt.variables shadows a built-in name.
Source code in src/marianne/validation/checks/best_practices.py
EmptyPatternCheck
¶
Check for empty patterns in validations (V106).
Functions¶
check
¶
Check for empty patterns.
Source code in src/marianne/validation/checks/config.py
InstrumentFallbackCheck
¶
Check that instrument_fallbacks references resolve to known profiles (V211).
Warns when a fallback instrument name doesn't match any loaded instrument profile or score-level instrument alias. Same severity as V210 — the conductor may have instruments the validator doesn't know about.
Checks:
- Score-level instrument_fallbacks
- movements.N.instrument_fallbacks per-movement fallbacks
- sheet.per_sheet_fallbacks per-sheet fallback overrides
Functions¶
check
¶
Check all instrument fallback references against the loaded profile registry.
Source code in src/marianne/validation/checks/config.py
InstrumentNameCheck
¶
Check that instrument names resolve to known profiles (V210).
Warns when an instrument name doesn't match any loaded instrument profile. This catches typos (e.g., 'clause-code' instead of 'claude-code') at validation time rather than runtime.
Severity is WARNING (not ERROR) because the conductor may have instruments the validator doesn't know about — profiles loaded from other directories, dynamic instruments, etc. The warning is informational, not blocking.
Checks:
- Top-level instrument: field
- sheet.per_sheet_instruments per-sheet overrides
- sheet.instrument_map batch assignments
- movements.N.instrument per-movement overrides
Functions¶
check
¶
Check all instrument references against the loaded profile registry.
Source code in src/marianne/validation/checks/config.py
RegexPatternCheck
¶
Check that regex patterns in validations compile (V007).
Invalid regex patterns will cause runtime errors during validation.
Functions¶
check
¶
Check regex patterns in validations and rate limit detection.
Source code in src/marianne/validation/checks/config.py
TimeoutRangeCheck
¶
Check timeout values are reasonable (V103/V104).
Warns about very short timeouts (may cause failures) or very long timeouts (may waste resources).
Functions¶
check
¶
Check timeout values.
Source code in src/marianne/validation/checks/config.py
ValidationTypeCheck
¶
Check that validation rules have required fields (V008).
Ensures validations have the fields needed for their type.
Functions¶
check
¶
Check validation rules have required fields.
Source code in src/marianne/validation/checks/config.py
VersionReferenceCheck
¶
Check that evolved scores don't reference previous version paths (V009).
When a score evolves (e.g., v20 → v21), the new score file should have all references updated to the new version. This catches cases where the name, workspace, or other paths still reference the old version.
Functions¶
check
¶
Check for stale version references in evolved scores.
Source code in src/marianne/validation/checks/config.py
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 | |
JinjaSyntaxCheck
¶
Check for Jinja template syntax errors (V001).
Attempts to parse templates and reports syntax errors with line numbers and context. This catches issues like: - Unclosed blocks ({% if ... without {% endif %}) - Unclosed expressions ({{ ... without }}) - Invalid syntax inside blocks
Functions¶
check
¶
Check Jinja syntax in templates.
Source code in src/marianne/validation/checks/jinja.py
JinjaUndefinedVariableCheck
¶
Check for undefined template variables (V101).
Warns about variables used in templates that aren't defined in the config's variables section or the built-in sheet context. Uses fuzzy matching to suggest corrections for typos.
Functions¶
check
¶
Check for undefined variables in templates.
Source code in src/marianne/validation/checks/jinja.py
PreludeCadenzaFileCheck
¶
Check that prelude/cadenza files exist when paths are static (V108).
Only checks non-templated paths (no Jinja {{). Templated paths
are resolved at execution time and cannot be validated statically.
This is a WARNING because files might be created before execution.
Functions¶
check
¶
Check prelude and cadenza file/directory paths.
Source code in src/marianne/validation/checks/paths.py
SkillFilesExistCheck
¶
Check that files referenced in validation commands exist (V107).
This is a WARNING because skill files might be optional.
Functions¶
check
¶
Check files referenced in validations.
Source code in src/marianne/validation/checks/paths.py
SystemPromptFileCheck
¶
Check that system_prompt_file exists if specified (V004).
Functions¶
check
¶
Check system_prompt_file exists.
Source code in src/marianne/validation/checks/paths.py
TemplateFileExistsCheck
¶
Check that template_file exists if specified (V003).
Functions¶
check
¶
Check template_file exists.
Source code in src/marianne/validation/checks/paths.py
WorkingDirectoryCheck
¶
Check that working_directory is valid if specified (V005).
Functions¶
check
¶
Check working_directory is valid.
Source code in src/marianne/validation/checks/paths.py
WorkspaceParentExistsCheck
¶
Check that workspace parent directory exists (V002).
The workspace itself will be created, but its parent must exist. This is auto-fixable by creating the parent directories.
Functions¶
check
¶
Check workspace parent exists.