Document format reference
APS uses Markdown headings, tables, and labelled list fields. It is not a JSON file format; the CLI parser is the executable contract.
Index
An index file is named index.aps.md and requires a Modules section. A useful
index also states the overview, problem, success criteria, constraints, risks,
and decisions.
# Project name
## Problem & Success Criteria
**Problem:** The problem to solve.
**Success Criteria:**
- [ ] An observable result.
## Modules
| Module | ID | Status | Dependencies |
| ----------------------------- | ---- | ------ | ------------ |
| [auth](./modules/auth.aps.md) | AUTH | Ready | — |
Module
A module needs an ID and status metadata table, a Purpose section, and a
Work Items section.
# Authentication
| ID | Owner | Priority | Status |
| ---- | ----- | -------- | ------ |
| AUTH | @team | high | Ready |
## Purpose
Own user authentication.
## Work Items
In Scope, Out of Scope, Interfaces, Constraints, review date, decisions,
and notes are optional but useful when they remove ambiguity.
Work item
The heading ID uses an uppercase prefix, a hyphen, and three digits. Every
active item requires Intent, Expected Outcome, and Validation.
### AUTH-001: Add login
- **Status:** Ready
- **Intent:** Allow registered users to authenticate.
- **Expected Outcome:** Valid credentials create a session.
- **Validation:** `npm test -- auth`
- **Dependencies:** CORE-001
- **Confidence:** medium
- **Non-scope:** Password recovery.
- **Files:** src/auth, test/auth.test.ts
- **Packages:** api, core
The status, dependencies, confidence, non-scope, files, and package fields are optional to the basic parser, but orchestration requires a meaningful status.
Action plan
# Action Plan: AUTH-001
| Field | Value |
| --------- | -------- |
| Work Item | AUTH-001 |
| Status | Draft |
## Actions
### Action 1 — Add the login endpoint
**Purpose** Expose the authorised login behaviour.
**Produces** A tested endpoint.
**Checkpoint** Valid credentials create a session.
**Validate** `npm test -- auth`
Status handling
The orchestration lifecycle is Draft → Ready → In Progress → Complete,
with Blocked available when a named condition prevents progress. Proposed
and Done are accepted aliases. Lint also recognises imported historical items
labelled merged, released, or shipped as terminal.
Release file
Files under plans/releases/ use v<version>.md and require a metadata table
with target and status, plus Release Theme and What Ships sections.
See copyable fragments and the validation rules.