laws --json exposes two fields that look like they share a vocabulary, and do not.
| field |
values (law counts) |
stack |
typescript 15 · frontend 58 · python 37 · absent, i.e. universal 63 |
satisfiedBy keys |
typescript 71 · python 70 · angular 67 |
All 58 laws with stack: "frontend" carry satisfiedBy.angular. None carries
satisfiedBy.frontend. A consumer rendering a law card from the JSON therefore has to
know a mapping that the schema never states.
They are two different axes
stack is selection — which projects the law runs on at all (coarse: any frontend)
- a
satisfiedBy key is guidance — which technology the instructions are written
for (specific: Angular)
Read that way the data is consistent. Read as one vocabulary it looks broken.
Why we are not renaming angular → frontend
The guidance genuinely is Angular-specific: OnPush, standalone components, NgRx. A
React project with stack: "frontend" would be handed Angular instructions. The rename
would make the field lie — and a law that lies about how to satisfy it is worse than a
law with a gap.
The honest gap
No React or Vue guidance has been authored for those 58 frontend laws. That is a gap in
what we have written, not a naming mismatch. It deserves its own issue rather than being
hidden behind a rename.
Proposal
- Document both axes and the mapping in the README — a short "Law card schema" section
consumers can code against.
- Track the missing React/Vue
satisfiedBy guidance separately.
Raised by the site team, who render the law cards from this JSON.
laws --jsonexposes two fields that look like they share a vocabulary, and do not.stacktypescript15 ·frontend58 ·python37 · absent, i.e. universal 63satisfiedBykeystypescript71 ·python70 ·angular67All 58 laws with
stack: "frontend"carrysatisfiedBy.angular. None carriessatisfiedBy.frontend. A consumer rendering a law card from the JSON therefore has toknow a mapping that the schema never states.
They are two different axes
stackis selection — which projects the law runs on at all (coarse: any frontend)satisfiedBykey is guidance — which technology the instructions are writtenfor (specific: Angular)
Read that way the data is consistent. Read as one vocabulary it looks broken.
Why we are not renaming
angular→frontendThe guidance genuinely is Angular-specific: OnPush, standalone components, NgRx. A
React project with
stack: "frontend"would be handed Angular instructions. The renamewould make the field lie — and a law that lies about how to satisfy it is worse than a
law with a gap.
The honest gap
No React or Vue guidance has been authored for those 58 frontend laws. That is a gap in
what we have written, not a naming mismatch. It deserves its own issue rather than being
hidden behind a rename.
Proposal
consumers can code against.
satisfiedByguidance separately.Raised by the site team, who render the law cards from this JSON.