2.2 KiB
2.2 KiB
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 | every request | Devise (username) → Pundit → admin gate |
| place-and-execute-order | student, then cron */15 * * * * |
Order → OrderExecutionJob → ExecuteOrder → fees |
| finalize-gradebook-earnings | admin clicks Finalize | verified! → DistributeEarnings → deposits |
| refresh-market-data | cron nightly + weekly | Alpha Vantage → Stock |
| snapshot-portfolio-worth | cron month-end | Portfolio → PortfolioSnapshot |
| import-students | 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
- Copy
../_templates/process.md. - Write Input → Movement → Output in three sentences before writing any steps.
- Number the steps and cite
path:lineon each. Do not restate what the source says — point at it. - Fill
consumes:/produces:with links to object cards. Those links are the graph; there is no separate edge list to maintain. - 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.