What does a House Finch nesting cycle actually look like, in data? This page covers the full window the cameras ran for — Day 1 (2026-04-25) → Day 31 (2026-05-25), from the female settling onto a complete clutch to the cup sitting empty through a full daylight cycle. The first ~12 days are late incubation: female sitting tight on a complete clutch, male making courtship-feeding visits with food. Day 13 (2026-05-07) is hatch day. Days 14+ are the brooding → provisioning → fledge progression. Every chart below is regenerated from the same daily-metrics JSON the journal entries are built from.
This is the final day of the saga. Day 31 (2026-05-25) is the first calendar day with no adult presence in the cup at any daylight interval. A few brief overnight visits between 00:33 and 02:38 PT, a single re-occupancy at 21:16, and the rest of the day shows an empty cup. At 18 days post-hatch, that is fledge.
Last refresh: 2026-05-26 23:20:03 UTC · spans Day 1 → Day 31
Phase timeline
Each segment is one calendar day, colored by where the nest was in the cycle. Pre-hatch days are gray (early incubation) and slate (late incubation as hatch approached). Hatch day itself is green. Post-hatch warms from yellow → orange → red as the chicks feather and approach fledge; today’s segment is purple (fledged-or-post).
Key dates from the data:
- Journal Day 1: 2026-04-25 (first day of camera coverage)
- Hatch confirmed: 2026-05-07 · Day 13
- First eye-opening day: 2026-05-12 · Day 18
- Fully feathered: 2026-05-14 · Day 20
- Fledge window opens: 2026-05-19 · Day 25
- Fledged-or-post starts: 2026-05-23 · Day 29
- Final daylight-empty day: 2026-05-25 · Day 31 (this page’s last day)
- Peak chick count visible: 5 (matches confirmed clutch size of 5)
Courtship feeding — the pre-hatch story
House Finch males don’t incubate, but they DO provision the female while she’s on the cup. This chart counts the clips where the male was at the nest each day — alone (arrivals and departures) and together with the female (the actual food transfer). Watch the line climb across the pre-hatch days as the male visits more often, then spike on the hatching day and stay high through the early hatchling days.
Eggs visible — the incubation arc
How often the cameras could see eggs in the cup, as a share of all clips that day. Highest on Day 1 (the female hadn’t fully settled into tight sitting yet), low through proper incubation (she’s covering the cup most of the time), then collapses across hatch and post-hatch as the eggs are replaced by chicks.
The arc — from brooding to independence
This is the single chart that tells the story. Every clip the cameras captured is tagged by what’s in the cup: an adult sitting alone (heavy brooding), an adult with chicks visible (active provisioning), or chicks visible without an adult (the chicks are old enough that mum doesn’t need to sit on them anymore). As the chicks grow, the green line falls and the blue line rises.
The crossover happens around day 8–9 — the moment when the brood crossed from “needs brooding” to “needs feeding but not warming.” That’s exactly what the species literature predicts.
Cup state by day
Same data, raw counts instead of percentages. This shows the absolute volume of clips per day climbing as the chicks grew and triggered more motion events. The light-blue chicks_alone_occluded band post-hatch captures clips where the classifier reported “empty cup” but where the chicks were physically present (we know — the cup never actually emptied between hatch and Day 16). It’s a known classifier blind spot in IR / pile-geometry frames, surfaced honestly instead of mis-reported as truly empty.
Weather × behavior
Lafayette daily highs and lows from the Open-Meteo archive, plotted against the share of chick-visible clips where the chicks were alone (i.e. mum was off the cup). The hot days line up with the highest “chicks alone” share — when it’s warm, the chicks don’t need a brooding parent and mum spends more time off-cup.
The hottest day in the window was 90.1°F on 2026-05-21 (clear). Chicks-alone-share that day: 99%.
Parental provisioning
Visit counts per day, mum (female) versus dad (male). Mum dominates raw count because she also handles all the brooding shifts. Dad’s count rises sharply post-day-8 as the brood transitions to a feeding-only operation.
After the fledge
The last datapoint on every chart above is Day 31 (2026-05-25) — the first calendar day with no adult presence in the cup at any daylight interval. Day 1 we couldn’t have predicted the shape of this curve; Day 31 the curve tells us the saga is over. Five eggs went in. The chicks fledged. The cameras keep running, but the story this page tells is complete.
The daily journal continues in /posts/ for any tail-end observations — adults checking the cup, fledglings circling back, whatever the sunroom records. But the arc that begins with courtship feeding and ends with an empty cup at 18 days post-hatch — that arc is the one on this page, and it has now run its course.
How this page is made
A nightly TypeScript job (scripts/generate-blog-viz.ts) reads the daily-metrics JSON files from the birbs project and re-renders this page with embedded Chart.js. No build step, no API calls — the data is inlined in the HTML below.
If a chart isn’t rendering, the page failed to load Chart.js from the CDN; refresh once and it should appear.
Raw data
Everything the charts above are built from, plus the broader classifier output that powered the daily journal entries. Released as-is from the round-1 pipeline, frozen on the day the run closed.
The headline file — the same daily-metrics JSON the visualizations and journal entries are built from:
daily-metrics-all.json— one combined file, 31 days, ~155 KB/data/daily-metrics/— same data split per day (31 files)
Per-classifier outputs — each day yields one file per classifier:
/data/narratives/— the per-day prose narrative input the journal entries were written from/data/weather/— per-hour local weather pulled from the nest’s coordinates/data/sleep-wake/— daily sleep/wake transition timing/data/egg-brightness/— NIR brightness samples for pre-hatch egg tracking/data/baseline/— calibration baselines used by the classifiers
Clip-level classifier outputs — bundled, one entry per camera clip:
cup-state.tar.gz— what was in the cup at every clip (~480 KB compressed; 16,318 entries; expands to ~64 MB)descriptions.tar.gz— natural-language description of every clip (~915 KB compressed; 12,584 entries; expands to ~49 MB)
Supporting:
BIRD_JOURNAL.md— the working journal kept across the run (~225 KB markdown)/data/blog_assets/— the hand-picked image set used in blog postscalibration_female_on_nest_20260428.jpg— calibration frame used to seed the classifiers/data/clips-recovered/— clips recovered from the NAS after a brief pipeline interruption
The round-1 capture pipeline source — including the classifier code that produced these outputs — lives at github.com/yesnet0/birbs.