# Tutorial 01 — Write and Check Your First VSL System

**Goal:** write the smallest VSL system that validates, and run the checker yourself.
**Prerequisites:** the Bootstrap glossary (terms: system, type, enum, field, maturity).
**Time:** ~10 minutes. **Source:** S3 (VSL reference), S4/S6/S7 (real examples).

## Step 1 — Create the file

Create `hello.varro` with a `system` block. A VSL system needs an identity, a
`mission`, an `authority` lane, a `domain`, and a `maturity`. To validate with **zero
warnings** it also needs a `context root`, at least one `compile` target, and a
`runtime` block. A worked copy lives at `verification/hello.varro`:

```varro
system tutorial.hello {
  mission "A first VSL system: the smallest thing that validates cleanly."
  authority lane "operator:local"
  domain software
  maturity draft

  context root = "helios://local/tutorial/hello?view=detail&tab=state&bind=auto"

  enum greeting-kind {
    value formal
    value casual
  }

  type Greeting {
    field id: string required
    field kind: greeting-kind required
    field message: markdown required
  }

  compile workspace-runtime -> varro

  runtime execution {
    host governed
    commit-mode host-only
  }
}
```

## Step 2 — Run the checker (the runnable verification path)

```bash
helios/agents/bin/varro --root helios check vsl path/to/hello.varro
```

## Step 3 — Read the result

A clean pass returns:

```
VSL validation passed for .../hello.varro with 0 warning(s).
valid: true   error_count: 0   warning_count: 0
```

This exact command and result were run to produce this tutorial — it is not
illustrative, it is the verification path the Bootstrap scorecard records.

## Step 4 — Break it on purpose (learn the failure mode)

Delete the `context root` line and re-run. The checker reports
`error_count: 1` with `system ... is missing context root`. **This is the lesson:**
constraints are enforced by the validator, not narrated — the failure is precise and
points at the line. Put the line back; confirm it returns to a clean pass.

## What you can now do

- Declare a `system`, an `enum`, and a `type` with typed fields.
- Run `varro check vsl` and read pass/fail honestly.
- Explain why a field referencing an `enum` removes entropy versus a `string` + comment.

**Next (Build 1+):** lower an `action` to a command, and write your first `workflow`.
