DISL — Diagram Specification Language
Contents of DISL 0.8
Specification, version 0.8 (Draft)
| Date | 2026-11-01 |
| Specification schema | disl.schema.json (JSON Schema, draft 2020-12), $defs/Specification |
| Definition language | DID, the Diagram Definition Language, in ../did/ |
| Expression language | CEL — Common Expression Language (https://cel.dev) |
| Media type (provisional) | application/vnd.disl.specification+json |
| File extension | .dis |
| Licence | Apache License 2.0 (Apache-2.0) |
This is a draft, version 0.8. It is complete enough to implement a conforming validator, a documentation generator and a reference runtime, but individual constructs may still change before version 1.0. DISL 0.1 continued the earlier combined format (DEDL became DISL and DID); section 18 lists the old identifiers that runtimes still read. DISL 0.2 adds declarative constructs to 0.1 (declared identity, findings that point at files, reasons the tool gives, derived elements, gestures and menus, view state, budgets, notation and time details). Every valid 0.1 specification is a valid 0.2 specification and keeps its meaning, except in the places listed in Changes from 0.1, where 0.1 was silent or ambiguous and 0.2 now says what it means. DISL 0.3 adds the constructs that the Gartner hype cycle graph and Agent Behavior Modelling tools needed and 0.2 could not state (neighbour-aware bounds, standard row and tree layouts, a type map for format bindings, part tooltips, form fields that parse their own text, per-case built-in codes, geometric drop placement, typed retyping fields and pointer bindings for connect gestures, and, by the ruling of 2026-10-06, menu groups, form row ids, a declared order of findings, one finding per group of duplicates and the case of an endpoint finding); every valid 0.2 specification is a valid 0.3 specification with the same meaning, apart from the clarifications in Changes from 0.2. DISL 0.4 adds what a diagram that agents write and a person arranges needs (items grouped inside a node with collapse defaults, a kept canvas filter, pinning as standard gestures, a layout in tiers, links that open, and view data kept in a format binding's body); every valid 0.3 specification is a valid 0.4 specification with the same meaning, apart from the clarifications in Changes from 0.3. DISL 0.5 adds a built-in person shape, a rounded box with a round head above it, which the C4 diagram tool type needs; every valid 0.4 specification is a valid 0.5 specification with the same meaning, apart from the clarification in Changes from 0.4. DISL 0.6 adds no construct and settles where a relation type's directed, allowSelfLoops and allowParallel come from: they are inherited along its C3 linearisation, else the section 4.9 default; a subtype may only narrow them; and supertypes whose values differ are a specification error unless the subtype states the flag (4.7). DISL 0.5 left this open, and two readings were in use, inheritance and the type's own declaration only; every valid 0.5 specification that neither widens a flag nor inherits two different values of one is a valid 0.6 specification, with the meaning of the first reading, apart from the clarifications in Changes from 0.5. DISL 0.7 adds two members to View, the scope the view is written with and its location, so that a rule about the model can say something about a view that it holds no element for (8.2, 12.2); every valid 0.6 specification is a valid 0.7 specification with the same meaning, as Changes from 0.6 says. DISL 0.8 adds no construct and lets a stored relation's end resolve to a derived node, so that a placeholder for what a relation names and nothing declares has its edge (4.9); every valid 0.7 specification is a valid 0.8 specification with the same meaning, apart from the clarification in Changes from 0.7. Sections and paragraphs marked (informative) explain intent and give guidance; everything else is normative.
The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY and OPTIONAL are to be interpreted as described in RFC 2119 and RFC 8174 when, and only when, they appear in bold capitals.