DWSD.md

Board DSL — Splits

A column can split into named sections. This page covers a column’s split: block and its per-section modifiers. See the reference index for the board header and the other constructs.

Split block (a column’s split:)

A column can split into sections. Each section keeps a required name (every addressable board unit stays addressable — split-sections are a future ref target).

columns:
  - name: Review
    split:
      direction: horizontal      # omit for the vertical default
      of:
        - { name: doing, status-category: waiting }
        - { name: done,  status-category: done }
Field (on the split block)Values / shapeDefaultDiagnostic on misuse
directionhorizontal | verticalvertical (omitted)board.invalid-split (unknown value → defaults to vertical)
oflist of section entries (each a bare string OR an object)[]per-section board.invalid-split
Field (on each of section)Values / shapeDefaultDiagnostic on misuse
namestring (required — D-09)—board.invalid-split (section skipped when missing)
status-categorysingle value, closed set to-do | in-progress | done | waiting | assess (→ section tag)(none)board.invalid-status-category (value dropped, no tint)
wipnumber → max only; OR [min, max](none)board.invalid-wip
agingstring(none)(none)
agreementsstring OR string list — per-section working agreements(none)tolerant
interactionsstring OR string list — per-section meeting / interaction pointers(none)tolerant

Note the per-section tint key is status-category: — a single closed-set value that maps to the section’s tag field (the parser takes element [0] of the validated category). The pre-D-12 singular status: key is removed; use status-category:. A split block with zero valid sections is dropped.

Per-section agreements: / interactions: render on the section surface. Each of section may carry its own agreements: / interactions:, and they render as the grouped agreements / interactions bucket on that section’s surface (the same chip → shared drawer mechanism described in Anchors, agreements & interactions) — not only via external markers. (The named-split production split <name> was retracted in Plan 13-10; a split block carries no label, only its sections carry a name.)

Like what you see? → Start — build your own org folder in ~2 min

splits.md
# Board DSL — Splits
A column can split into named sections. This page covers a column's `split:`
block and its per-section modifiers. See the [reference index](./index.md) for
the board header and the other constructs.
## Split block (a column's `split:`)
A column can split into sections. Each section keeps a **required `name`**
(every addressable board unit stays addressable — split-sections are a future
ref target).
```dwsd-board
columns:
- name: Review
split:
direction: horizontal # omit for the vertical default
of:
- { name: doing, status-category: waiting }
- { name: done, status-category: done }
```
| Field (on the split block) | Values / shape | Default | Diagnostic on misuse |
|----------------------------|----------------|---------|----------------------|
| `direction` | `horizontal` \| `vertical` | `vertical` (omitted) | `board.invalid-split` (unknown value → defaults to vertical) |
| `of` | list of section entries (each a bare string OR an object) | `[]` | per-section `board.invalid-split` |
| Field (on each `of` section) | Values / shape | Default | Diagnostic on misuse |
|------------------------------|----------------|---------|----------------------|
| `name` | string (**required** — D-09) | — | `board.invalid-split` (section skipped when missing) |
| `status-category` | single value, closed set `to-do` \| `in-progress` \| `done` \| `waiting` \| `assess` (→ section `tag`) | (none) | `board.invalid-status-category` (value dropped, no tint) |
| `wip` | number → max only; OR `[min, max]` | (none) | `board.invalid-wip` |
| `aging` | string | (none) | (none) |
| `agreements` | string OR string list — per-section working agreements | (none) | tolerant |
| `interactions` | string OR string list — per-section meeting / interaction pointers | (none) | tolerant |
Note the per-section tint key is **`status-category:`** — a single closed-set
value that maps to the section's `tag` field (the parser takes element `[0]` of
the validated category). The pre-D-12 singular `status:` key is **removed**; use
`status-category:`. A split block with zero valid sections is dropped.
**Per-section `agreements:` / `interactions:` render on the section surface.**
Each `of` section may carry its own `agreements:` / `interactions:`, and they
render as the grouped agreements / interactions bucket **on that section's
surface** (the same chip → shared drawer mechanism described in
[Anchors, agreements & interactions](./anchors.md#anchors-agreements--interactions)) — not
only via external markers. (The named-split production `split <name>` was
**retracted** in Plan 13-10; a split block carries no label, only its sections
carry a `name`.)
![Column split with per-section modifiers](../../images/split.png)
![Per-section split agreements on the section surface](../../images/split-agreements.png)