Retrospective

Round 1 in Five Lessons

Round 1 of the birbs project ran for thirty-one days, from April 25 through May 25, 2026 — one full House Finch nesting cycle, courtship feeding through fledge. Five eggs went in. Five chicks came out. The cup collapsed under the brood on Day 26. The fledge happened twice: four chicks in a fourteen-minute window on Sunday morning, the fifth that afternoon. By Day 31 the cup sat empty through a full daylight cycle and the saga was over.

Five things round 1 taught us. None of them are about House Finches, exactly. They’re about the gap between watching a thing happen and being able to say what happened.

1. The classifier’s middle bucket is the whole point

The temptation when you build an automated tagging pipeline is to demand a decision on every clip. Chicks present, or chicks not present? Pick. That bias killed us early — the classifier would call a tightly-tucked clutch of three sleeping chicks “empty cup” because the geometry hid them. So we added a third option: chicks_alone_occluded. I think there are chicks but I can’t see them clearly enough to confirm. That bucket — the admission of uncertainty — is the single most important design choice in the data. The post-hatch days went from looking like a series of impossible parental absences to looking like the normal, mostly-occluded shape of a busy nest. Build classifiers that can say “I don’t know” out loud. It’s not a hedge. It’s a category of data.

2. The interval clips made the data continuous

Camera motion-detection is great at catching events. It’s terrible at catching the long quiet stretches between them, which is most of the time. We added timed interval captures — a few seconds of video every two minutes regardless of whether anything moved — and the entire shape of the dataset changed. Motion clips alone gave us a spiky, eventful narrative; interval clips gave us presence. We could finally answer “was mum on the cup at 14:23?” with a yes or no, not a maybe. The interval clips outnumber the motion clips by an order of magnitude in the data and they’re what made the daily logs possible.

3. AI as the daily writer worked. AI as the prose writer worked better

We pointed Claude Sonnet 4.6 at the daily metrics JSON and the rolling working journal every morning and asked it to write the day. The daily logs that came back were good — accurate, observant, well-scoped. But the prose dispatches — written on days that earned them, with the full prior week’s context — were dramatically better. Hatch Day. Four Chicks, Maybe Five. Eye-Opening Across the Brood. Fledge Day. Those aren’t dailies that got polished; they were written as essays from the start, with permission to be long, to digress, to admit what the camera missed. The lesson: when an AI is given a recurring administrative task it does the recurring administrative task. When it’s given an essay-shaped prompt and a body of evidence and told to write something a reader will want to finish, it writes something different. We’re keeping both formats for round 2 but biasing harder toward the dispatch shape.

4. The most interesting variable was the human

incidents.human_events is a near-zero column in most daily-metrics files. The exceptions are the days Casey walked across the room to look at the cup in person. Every one of those visits is visible in the data — clip patterns shift, the female’s behavior changes for the next hour, sometimes the male stays away longer. We didn’t plan for human presence as a variable; it just showed up. For round 2, the human-presence column is being instrumented properly from day one. If you’re watching a wild animal in a setting it shares with humans, your own footsteps are part of the dataset whether you wanted them to be or not.

5. The story ended cleanly because we let the cameras decide when

There was a temptation, in the final week, to extend the run — keep the cameras up, see if the fledglings come back, see if mum starts a second clutch. We didn’t. The arc that began with the female settling onto a complete clutch on April 25 and ended with the cup empty through a full daylight cycle on May 25 is a closed arc. The data tells you that. Trying to extend it past Day 31 would have made it a different story — a worse one, because there’s no second-act structure on the other side. Round 2 starts when the cameras have a new clutch to point at, not before. The discipline to stop is the discipline that makes the archive worth reading.


The archive is open. The data is open. The pipeline source is open. The full round 1 cycle is at /the-story-so-far/. The dispatches are tagged /tags/prose/. Round 2 is being captured now and will publish to birbs.cje.io as it unfolds.