The Standup Mirror
What did we leave unfinished, and how stale is it — answered from the repo, not from memory.
The ingredients 3 gifts
The idea
Every standup, someone asks 'where did we leave off?' and the answer comes from memory, which is exactly the thing that fails. These three gifts answer it from the bytes instead. census walks the tree and counts your markers — TODO, FIXME, whatever you define — and says which ones are still open. worklog folds the git history into 'what actually got done.' reltime turns every timestamp into a short human 'when' — 3h ago, Jun 20. Bolt them together and you get a mirror your team looks into before standup: the open work, when it was last touched, in words a person reads at a glance.
The parts + how they wire
census walks the working tree and emits one record per open marker (file, line, the marker text, and the commit that introduced it) → worklog reads the same repo's git log and folds it into per-author, per-window 'what shipped' rows → reltime is the finishing pass over both streams: every raw timestamp becomes '3h ago' or 'Tue' or 'Jun 20' so the readout is scannable. The output is a single page: open items on the left with a staleness word beside each, recent completions on the right. Nothing here needs a server or a database — it is three small tools reading a checkout you already have.
The one piece you build
The join and the layout. census gives you open markers, worklog gives you completions, and you write the ~40 lines that key them together (by file, by author, by window) and render the two columns. reltime does the humanizing so you never format a date yourself.
The technical breakdown
census's marker set is declared, not hard-coded — you hand it the list of tokens that count as 'open' (TODO, FIXME, HACK, or your own), so the mirror reflects your team's actual conventions rather than a tool author's guess. It reports the introducing commit for each marker, which is what lets reltime say how long a TODO has been sitting: staleness is 'now minus the marker's birth commit date,' not 'now minus last file edit' — a file can be touched daily while a TODO in it rots. worklog's window is a parameter (last-week, last-sprint), so the completions column matches the cadence you actually stand up on. All three are pure over their inputs: same checkout in, same page out, so the mirror is diffable day to day — you can literally see which TODO aged another day.
The honest edge
This reflects markers and commits, not intent. A TODO that someone quietly deleted without doing the work drops off the mirror and looks 'done' — census counts what is present, it cannot count what was abandoned. worklog's effort read is derived from commit spacing, an estimate, not a timesheet. The mirror is honest about the repo's surface; it does not know whether the surface tells the truth. That is a feature for standup — it shows exactly what the bytes claim, and the disagreement between the mirror and someone's memory is usually the useful part.
These are ingredients, not instructions you have to follow. If you cook something from them — or something stranger — we want to see it.