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.