Story: Agile timeline: bucketed summaries of recent activity

Table of Contents

This page documents a story in Sprint 20. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

Goal

With several environments and LLM sessions working in parallel, it is hard to keep up with what happened and to catch problems as they arise. This story delivers a timeline: a compass timeline command that lists the documents changed in a period (e.g. "timeline now" → last 20 minutes); an LLM skill that buckets those changes and writes a snapshot per time window — "environment local1 worked on story X, tasks Y1, Y2; this is a new story not in the sprint; task Y1 had problem P0" — highlighting problems and suspicious LLM decisions; and a timeline view in the agile board showing event counts over time with click-through to each bucket's log.

Status

Field Value
State DONE
Parent sprint Sprint 20
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-06-10

Acceptance

  • compass timeline has two behaviours: generate — list stories/tasks/captures changed within a given window (with a "now" convenience for the recent past), what changed, and links: the input for the LLM snapshot; and view — show the last N buckets sourced purely from the sprint's timeline/ folder.
  • Documents record which environment touched them, so snapshots can attribute work per environment.
  • Snapshots are org files under the sprint's timeline/ folder, named <ISO-from>-<ISO-to>.org, bucketed (stories raised, tasks raised, worked on, problems, suspicious decisions) — tables over prose where possible, with id links to the documents.
  • The agile board has a timeline view: counts of events per time bucket as a clickable chart; clicking a bucket shows its snapshot; defaults to the latest bucket.

Tasks

Task State Start End Description
Scaffold story DONE 2026-06-07 2026-06-07 Create story, tasks, sprint wiring, scaffold PR.
Analyse temporal commands end-to-end for conceptual coherence DONE 2026-06-07 2026-06-07 Coherent model for fleet/journal/timeline; analysis doc gates implementation.
Add compass timeline command DONE 2026-06-07 2026-06-07 Generate LLM inputs (changed docs per window); view last N buckets.
Stamp the working environment on documents DONE 2026-06-10 2026-06-10 #+environment: from the .env label via compass task start/done.
Add LLM snapshot summarisation skill and storage DONE 2026-06-10 2026-06-10 Bucketed snapshot org files under the sprint's timeline/ folder.
Add timeline view to the agile board DONE 2026-06-07 2026-06-07 Event-count chart with click-through to bucket snapshots.
Add sprint velocity bar charts to agile board ABANDONED   2026-06-10 Blocked on end-date task; out of sprint scope.
Window the timeline chart with back/forward navigation DONE 2026-06-08 2026-06-08 Show the board timeline chart as a sliding window of N buckets (default 10, most-recent first) with ← earlier / later → paging instead of cramming every bucket, which made the x-axis unreadable. Realises the movable-time-window capture.

Decisions

One temporal model, two substrates
See the temporal command coherence investigation: temporal commands sit on a 2×2 grid (subject: me/everyone × time: now/past); timeline is the missing "everyone × past" quadrant. Now-views (fleet, journal) read the live substrate (worktree journals, branch/PR state); the timeline reads consistent data only — the agile docs on origin/main, their git history, and the gh PR record — so any environment reproduces the same timeline from a fresh checkout. Journals are never a timeline input; environment attribution comes from the document stamps; every snapshot carries a window-scoped audit section reporting bookkeeping drift.
Board timeline view needs no infrastructure extension
Verified: snapshot files carry :ID:=s, so =org-roam-db-sync indexes them and the existing graphdata.json export delivers their full org content to the browser — the board view consumes them exactly like stories and tasks. No changes to the export, the site build, or the data pipeline.
Bucket size is an experiment, not a constant
20 minutes was an arbitrary starting point. The real constraint is readability: a bucket must not hold more events than can be scanned at a glance. Window size is configurable in both the command and the skill; tune it with real data, and consider event-count-capped buckets (split a window when it exceeds N events) over fixed durations if busy periods overwhelm.

Out of scope

  • Real-time push/streaming updates — snapshots are written on demand or on a cadence, not live.
  • Timeline for non-agile documents (knowledge, manuals) — agile docs first; generalise later if useful.
  • Alerting/notifications — the timeline is a pull-based review tool.

Emacs 29.1 (Org mode 9.6.6)