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.