Markdown To

SpecificationsnormativeSheet 07 of 18

gantt@0.1

A project schedule you can read in any editor and see as an elegant workstream timeline — inclusive dates, visible progress, and dependency edges with no hidden scheduler.

File
*.gantt.md
##
a workstream
Task
start · end · progress
Codes
MDTO700–799
Read agent skill · authoring and editorial guide

§ 01

The schedule, without a scheduling database

Every bar begins and ends at dates written on its task line. The renderer derives only the window and geometry; it never moves a deadline or invents duration.

Fig. 1Workstreams, progress, and dependency-aware tasksread-only view
observatory.gantt.md
---
markdownto: [email protected]
title: Observatory opening
---

# Observatory opening

## Site

- [x] Survey the ridge [start:: 2026-09-01] [end:: 2026-09-03] [progress:: 100] ^survey
- [ ] Pour foundations [start:: 2026-09-04] [end:: 2026-09-18] [progress:: 65] [depends:: ^survey] ^foundations

## Instrument

- [ ] Align the primary mirror [start:: 2026-09-12] [end:: 2026-09-22] [owner:: Mira] [depends:: ^foundations] ^mirror
- [ ] First light [start:: 2026-09-23] [end:: 2026-09-23] [depends:: ^mirror]
rendered · project timelinederived axis

Observatory opening

1 completeof 4 scheduled tasksSep 1, 2026 — Sep 23, 2026

Workstream / task

Site

2 tasks
Survey the ridge2026-09-01 → 2026-09-03
100%
Pour foundations2026-09-04 → 2026-09-18 · after ^survey
65%

Instrument

2 tasks
Align the primary mirror2026-09-12 → 2026-09-22 · after ^foundations
0%
First light2026-09-23 → 2026-09-23 · after ^mirror
0%

§ 02

Four fields, one honest schedule

today-line:
A boolean, true by default. Draws the viewer’s current date in red when it falls inside the schedule.
[start:: date]
Required inclusive full-date.
[end:: date]
Required inclusive full-date, never before start.
[progress:: n]
Optional integer 0–100; 100 and the checked marker agree.
[depends:: ^id]
Optional ordered pinned-id edges; dangling, self, and cyclic relations are surfaced.

§ 03

Typed, atomic verbs

Verb

Meaning

Smallest edit

add

Insert a fully scheduled task.

One line.

schedule

Replace start and end as one operation.

Two field values, one validation boundary.

progress

Set progress and couple the checkbox.

Field plus one marker.

depend · move · rm

Edit edges, relocate a block verbatim, or remove it.

Only the addressed spans.

§ 04

Invalid schedules fail loudly

broken.gantt.md
---
markdownto: [email protected]
---

## Build
- [ ] Missing start [end:: 2026-09-03]
- [ ] Missing end [start:: 2026-09-03]
- [ ] Impossible date [start:: 2026-02-30] [end:: 2026-03-02]
- [ ] Backwards [start:: 2026-09-10] [end:: 2026-09-01]
- [x] Bad progress [start:: 2026-09-01] [end:: 2026-09-02] [progress:: 55.5]
- [ ] Mismatch [start:: 2026-09-01] [end:: 2026-09-02] [progress:: 100]

mdto validate

  • MDTO705 error line 6

    - [ ] Missing start [end:: 2026-09-03]

    Task has no start field.

  • MDTO706 error line 7

    - [ ] Missing end [start:: 2026-09-03]

    Task has no end field.

  • MDTO707 error line 8

    - [ ] Impossible date [start:: 2026-02-30] [end:: 2026-03-02]

    Start 2026-02-30 is not a real YYYY-MM-DD full-date.

  • MDTO708 error line 9

    - [ ] Backwards [start:: 2026-09-10] [end:: 2026-09-01]

    End 2026-09-01 is before start 2026-09-10.

  • MDTO709 error line 10

    - [x] Bad progress [start:: 2026-09-01] [end:: 2026-09-02] [progress:: 55.5]

    Progress 55.5 must be an integer from 0 through 100.

  • MDTO713 warning line 11

    - [ ] Mismatch [start:: 2026-09-01] [end:: 2026-09-02] [progress:: 100]

    Unchecked task writes 100 percent progress.

Read gantt.md or run mdto spec gantt for the complete contract.