2.1 KiB
2.1 KiB
objects — the nouns
One job: hold one card per durable noun in the app, so an editor can answer what is this and what else moves without reading the model tree.
Inputs
- Reference (every read):
../CONTEXT.md— universes and traps - Reference (every write):
../_meta/schema.md,../_templates/object.md - Working: the app tree —
app/models/,db/schema.rb,app/services/
Clusters
Clustered by how an editor asks, not by where the files sit.
| Cluster | The question it answers | Cards |
|---|---|---|
identity/ |
who is this person and what may they do | user, student, teacher |
org/ |
how are school, time, and roster shaped | school, year, school-year, quarter, classroom, classroom-enrollment, grade-level |
gradebook/ |
how is earning recorded | grade-book, grade-entry |
money/ |
where do SIF dollars live | portfolio, portfolio-transaction, earnings-summary |
trading/ |
what is bought and held | stock, order, portfolio-stock, portfolio-position, portfolio-snapshot |
announcement.md |
site-wide notices (singleton, unclustered) | announcement |
Pure join tables with no behaviour of their own — teacher_classrooms,
classroom_grades — do not get cards. They are described inside the parents they join.
classroom-enrollment does get a card: it carries primary/unenroll behaviour.
Process
- Copy
../_templates/object.md. Never start from a blank page. - Fill Shape from the source, citing
path:line. Preferdb/schema.rbfor columns and the model for behaviour. - Fill If you change this as Hits / Does not hit, first-order only. "Does not hit" must name the obvious next noun that is the wrong one — that line is the whole value of the card.
- Set
status: verifiedonly with a date, a commit, and citations in the body. - Run
../_meta/build-index.sh.
Outputs
- One card per noun, in its cluster folder
_index.md— regenerated, never hand-edited
Human check
Pick one card you did not write. Follow its first citation into the app tree. If the line it lands on does not state the claim, the card is wrong — fix the card, not the citation.