Psychology
Did the user request what they intended?
Does the software understand the intent of the user?
a.k.a. Can the developer predict intent ahead of time?
Maturity Levels
# User: "create 100 servers"
choochoo deploy --server-count 100
Do as they say. Every time.
Want 100 servers? Sure.
Guess desired state.
There's already 10 servers, so I'll just add 90 more.
Protect from extreme values.
❯ choochoo deploy --server-count 100 warning[W02]: High server count. ┌─ command:1:16 │ 1 │ choochoo deploy --server-count 100 │ ^^^^^^^^^^^^^^^^^^ specified here │ = This can incur high costs. = Specify the `--allow-high-server-count` flag to bypass this check.
🚂 Please type `pancakes` to proceed: ❯ pancakes_
API Implications
- Provide types with value limit checking.
- Detect long elapsed time, and support graceful interrupt handling.
- Design for dry run – show what the software would do.
choochoo
doesn't do this yet.