# processes — the movements One job: hold one card per movement that **actually runs**. Six do. Nothing here is aspirational; if a card describes something that no scheduler, controller, or human triggers, it does not belong in this folder. ## Inputs - Reference (every read): `../CONTEXT.md` — universes and traps - Reference (every write): `../_meta/schema.md`, `../_templates/process.md` - Working: `config/recurring.yml`, `app/jobs/`, `app/services/`, `app/controllers/` ## The six movements | Card | Trigger | Runs | |---|---|---| | [authenticate-authorize](authenticate-authorize.md) | every request | Devise (username) → Pundit → admin gate | | [place-and-execute-order](place-and-execute-order.md) | student, then cron `*/15 * * * *` | `Order` → `OrderExecutionJob` → `ExecuteOrder` → fees | | [finalize-gradebook-earnings](finalize-gradebook-earnings.md) | **admin** clicks Finalize | `verified!` → `DistributeEarnings` → deposits | | [refresh-market-data](refresh-market-data.md) | cron nightly + weekly | Alpha Vantage → `Stock` | | [snapshot-portfolio-worth](snapshot-portfolio-worth.md) | cron month-end | `Portfolio` → `PortfolioSnapshot` | | [import-students](import-students.md) | admin uploads CSV | `BulkStudentImportService` → `Student` + `Portfolio` | Four of the six are scheduled, not user-driven. The schedule is one file — `config/recurring.yml` — and it is the fastest way to see what this app does on its own. ## Process 1. Copy `../_templates/process.md`. 2. Write Input → Movement → Output in three sentences before writing any steps. 3. Number the steps and cite `path:line` on each. Do not restate what the source says — point at it. 4. Fill `consumes:` / `produces:` with links to object cards. Those links are the graph; there is no separate edge list to maintain. 5. Fill Hits / Does not hit, first-order only. ## Outputs - One card per movement, in this folder ## Human check Read the Steps aloud against the source file open beside you. If a step describes a behaviour the code does not have — or skips a guard clause that changes the outcome — fix it now. A wrong movement card sends an agent to the wrong file.