| ▲ | elendilm 19 hours ago | |
Types increases particular types of correctness. There are more types of correctness. Our apps are built on what we call features. Our own in house database Dip participates in the correctness enforcement exercise. We built what we call an architecture compiler arcc which is a glorified linter (intentionally underselling) but enforces CQRS violations and other architectural violations at compile time. Query features cannot invoke Command features by construction. Queries cannot even invoke a Dip insert/update/remove(). Our tooling now ensures all CRUD Dip.insert/update/query/remove() now accepts and returns appropriate schema types. It also ensures all Features.invoke() also accepts and returns appropriate handler types. arcc also enforces that a feature cannot even do Dip CRUD on an alien collection/table other than the feature leaf's owned collection. Pushing this further we are increasingly approaching a state where entire implementations compress to literal names of features and nothing else. The endgame is blank src/ for a massive ERP backend. Note: zero ai in code. Pure architecture. | ||