Skip to main content

Validation, audit, and CI safety

APS has two different verification layers:

  • aps lint parses plan files and reports structural errors or drift warnings.
  • aps audit compares plan claims with project state and can execute validation commands.

That distinction is a security boundary.

Lint a plan

aps lint

Errors produce a non-zero exit. Warnings do not, unless a separate project policy promotes them. Use JSON for automation:

aps lint plans --json

Error codes

CodeMeaning
E001A module has no Purpose section.
E002A module has no Work Items section.
E003A module has no ID or status metadata table.
E004An index has no Modules section.
E005An active work item lacks intent, expected outcome, or validation.
E010An issues file has no Issues section.
E011An issues file has no Questions section.
R001R004A release file has an invalid name or lacks required release sections.

Warning codes

CodeMeaning
W001A work-item ID does not use PREFIX-NNN.
W002A conductor references a work item that cannot be found.
W003A dependency cannot be resolved.
W004A required planning section is empty.
W005A ready module has no work items.
W006A crosscutting index entry does not identify a conductor module.
W010W013An issue or question has missing or malformed metadata.
W017An active module has no recent review date.
W018A completed item cannot be audited because validation is missing.
W019An index links to a module file that does not exist.
W020W021Federated child plans contain ambiguous work-item or module IDs.
W022A package tag does not resolve to a package or application directory.

Enforce the CLI pin

By default APS warns when .aps/config.yml expects another CLI version. Use strict mode in CI when drift must fail:

aps --strict lint

Audit plan claims

The safe pull-request form is:

aps audit --no-run

Without --no-run, aps audit executes validation commands stored in completed work items with shell semantics. Only do that for plan content you trust. Never run untrusted pull-request validation fields with execution enabled.

Audit findings cover:

  • completed work whose validation fails;
  • draft work whose named files already exist;
  • ready work in stale modules; and
  • broken module links.

Minimal CI job

- name: Validate APS plans
run: aps --strict lint
- name: Check plan drift without executing plan commands
run: aps audit --no-run

Use the CLI reference for command options.