核心问题

系统中有哪些条件,无论什么时候都必须为真?

工程困境

银行转账里,A 给 B 转 30 元。最重要的不是 A 少 30、B 多 30,而是:

Total_Money = UserA_Balance + UserB_Balance

这个等式不能被并发、崩溃或重试打破。

思想模型

不变量是系统变化过程中必须始终为真的谓词:

P(system) = sum(all_balances) == total_money

好模型

课程平台里的不变量:

revoked grant 不能授予访问权。
refunded order 必须曾经 paid。
removed member 不能继续分配课程。
archived course 不能被新购买。

Atlas Action

选一个业务流程,列出 5 条“永远必须为真”的句子。然后标注它们由什么守护:类型、事务、断言、数据库约束、测试,还是人的记忆。

小结

代码会变,状态会变,流程会变;不变量不能变。