# Timetables Dated plans for parallel tracks of work — a course, a design studio, any programme where groups rotate between streams and the schedule is measured in working sessions rather than calendar days. ## What the nouns mean - **timeline** — One dated plan: a calendar, its tracks, and everything scheduled on them. - **track** — A parallel lane of work that runs for some or all of the timeline. - **block** — A dated span of work inside one track (or across every track). - **milestone** — A point event pinned to a block on a single session. - **cohort** — A group of people who move through tracks together. - **session** — One working day that actually happens — the unit spans are measured in. Each timeline carries a *lexicon* that renames these for display — a block is a "Project" on a course and a "Sprint" in a studio — but the underlying data is always the neutral form above. ## The one thing to know Spans are authored as dates and measured in **sessions**: the days that actually happen, after the meeting pattern is applied and holidays are removed. A span crossing a break is shorter than its date range implies. Do not count days; read the session counts, which are already worked out for you. ## Endpoints - `GET https://timetables.aroughidea.com/api/timelines` — every published timeline - `GET https://timetables.aroughidea.com/api/timelines/{slug}` — the document, plus links to the rest - `GET https://timetables.aroughidea.com/api/timelines/{slug}?format=md` — the whole plan as prose; **start here** - `GET https://timetables.aroughidea.com/api/timelines/{slug}?format=facts` — every derivation done: session numbers, per-span session counts, each cohort's rotation, and any contradictions - `GET https://timetables.aroughidea.com/api/timelines/{slug}/revisions` — who changed what, when - `GET https://timetables.aroughidea.com/api/schema/timeline.v1.json` — JSON Schema for the document - `GET https://timetables.aroughidea.com/api/health` — deployment status Writes (`POST /api/timelines`, `PUT`/`DELETE /api/timelines/{slug}`) need a GitHub session on the editor allowlist. `PUT` takes a whole document: anything present is upserted by slug, anything absent is deleted. A document that does not add up still saves — the contradictions come back in `issues` rather than being refused. Without a session you get `403`; that is settled, not transient, so stop rather than retry. ## What you may do with this Read anything here, quote it, and ground an answer on it — that is what the machine-readable forms are for. Cite the timeline's own page, `https://timetables.aroughidea.com/t/{slug}`, so a reader can check you against the source. A timeline belongs to whoever published it rather than to this site, which is why `https://timetables.aroughidea.com/robots.txt` reserves the content from model training while leaving reading and grounding open. Reads are budgeted at 120 a minute per caller and writes at 30. Over the budget you get `429` with `Retry-After` in seconds. The budget refills continuously rather than resetting on a boundary, so pacing yourself works and retrying immediately does not. ## Reading a timeline Human view: `https://timetables.aroughidea.com/t/{slug}`. Editor: `https://timetables.aroughidea.com/edit/{slug}`. ## What is here now - [Studio — Q1 Rotation](https://timetables.aroughidea.com/api/timelines/studio-rotation?format=md): Strands × Teams, 2 tracks, 5 blocks. Updated 2026-08-11T22:14:39Z. - [TDF — Fall 2026](https://timetables.aroughidea.com/api/timelines/tdf-fall-2026?format=md): Projects × Groups, 2 tracks, 12 blocks. Updated 2026-08-11T22:14:39Z.