doc/tutorial/basics: add basics tutorial
Change-Id: I350244d6db5e20be4ab3913dc864f61923b2738f
diff --git a/doc/tutorial/basics/defaults.md b/doc/tutorial/basics/defaults.md
new file mode 100644
index 0000000..145057e
--- /dev/null
+++ b/doc/tutorial/basics/defaults.md
@@ -0,0 +1,30 @@
+# Default Values
+
+If at the time of evaluation a sum type still has more than one possible
+value, the first error-free value is taken.
+A value is error free if it is not an error, it is a list with only error-free
+elements, or it is a struct where all field values are error-free.
+The default value must also not be ambiguous.
+
+In the example, `replicas` defaults to `1`.
+In the case of `protocol`, however, there are multiple definitions with
+different, mutually incompatible defaults.
+It is still possible to resolve this error by explicitly setting the value
+for protocol.
+Try it!
+<!-- CUE editor -->
+```
+// any positive number, 1 is the default
+replicas: 1 | uint
+
+// the default value is ambiguous
+protocol: "tcp" | "udp"
+protocol: "udp" | "tcp"
+```
+
+<!-- result -->
+```
+replicas: 1
+
+protocol: _|_
+```
\ No newline at end of file