What a House Finch nesting cycle actually looks like, in data — as it unfolds. This page covers Day 1 (2026-05-29) → Day 36 (2026-07-03), from a pair returning to the wall sconce through fledging. Every chart below regenerates from the same daily-metrics JSON the journal entries are built from. As of Day 36 (Jul 3), the four nestlings are ~16 days post-hatch and in the 11–19-day fledge window (mode 12–15) — fully feathered and branching out of the cup. The first full daylight with an empty cup is fledge.
20 fully-observed days + 12 partial across a 36-day span (4 dark days, no footage) · 14,948 motion clips · 179 two-bird frames · current phase: Fledging.
Phase timeline
Each bar is one day, sized by motion-clip volume and colored by the biological phase the nest is in. As the cycle moves from building → laying → incubation → hatching → brooding → fledging, the colors shift; the heights tell you how busy the cup was on each day. Translucent bars are partial-coverage days; the blank slots (Days 30–33) are the outage.
Motion volume
How many motion clips the Tapo captured each day, split by what the classifier saw. Bird-in-frame and no-bird stack over an “unclassified” band for the early days (before the classifier came online or while the GCP project was in billing dunning), so every bar’s full height is real motion. Translucent bars are partial-coverage days; blank slots are the outage.
Cup contents
Two things at once. The faint lines are the classifier’s floor — the most eggs and the most chicks the camera could clearly count in any single open-cup frame that day. A brooding adult hides the cup most of the time, so those undercount badly: the chick floor never gets past 3 even though the brood was five. The bold confirmed brood line is the eye-verified truth from data/brood.toml — five nestlings from the Jun 17 hatch, dropping to four when one was ejected on Jun 22, and holding at four since. That four is the number fledging watches: the day the cup goes empty in daylight, all four have gone.
What the cup held
Every classified clip sorted into one state of the cup: an adult brooding with the contents hidden, an adult beside visible eggs or chicks, eggs or chicks alone with no adult, or a truly empty cup. The stack shows the daily mix — adult-on-cup dominates incubation; the chick bands grow in after the hatch.
Who’s on the nest
Clips per day sorted by which adult the classifier saw at the cup. House Finch incubation is female-only, and it shows — the female line towers over everything from Day 11 on. The male appears mostly at the rim (see courtship feeding), and the “both adults” line is the tell: it spikes around Day 19 as the pair synchronise for the hatch, then holds up through provisioning when both feed the brood.
Courtship-feeding pulse
House Finch males don’t incubate — they provision the female at the rim of the cup with food. This line counts the frames each day where both adults appear together: the male’s arrival, the food transfer, his departure. It climbs across incubation, spikes just before the hatch (Day 19), then settles as the male shifts from feeding the female to feeding the chicks. The line breaks across the outage rather than connecting Day 29 to Day 34.
Nest care & provisioning
Feeding is the behavior that separates incubation from brooding. Three signals here: clips with food visible in the beak, clips where an adult perches on the cup edge (the feeding posture), and the classifier’s feeding-visit flag. All three sit near zero while the female is incubating eggs, jump at the Day 19–20 hatch, and stay elevated as both parents provision — the clearest data signature of the brooding→provisioning crossover.
Quiet cup
Frames where the camera fired but no bird was in view — the cup as the camera sees it without an adult on it. During building these are short windows between material-carrying trips. During laying they get rarer as the female commits more. During incubation they collapse to nothing. Once the chicks fledge, the cup goes quiet for good — so this is the chart to watch for the empty-cup day that marks fledging.
Weather
What the camera was filming through. Lafayette, California — daily high and low temperature with the diurnal swing shaded between, max wind on the right axis, precipitation marked as bars when it falls. Useful when reading the visit-frequency charts back: hot afternoons drop activity, rain compresses it into the dry windows.
Phase details
Where the cycle has been, where it is, where it’s going. The status column updates from data/stages.toml — the moment Casey edits that file (or the classifier flips a stage), the page re-renders.
| Phase | Status | Start | End | What it is |
|---|---|---|---|---|
| Nest-building | complete | 2026-05-29 | 2026-06-01 | Female pressing material into the rim of the wall sconce. Male tracking, courtship-feeding at the cup. Cup read as finished on Day 4 (2026-06-01). |
| Laying | complete | 2026-06-02 | 2026-06-06 | First egg confirmed in cup at 09:06 PT 2026-06-02 (Day 5). One egg per morning; clutch complete at 5 eggs on 2026-06-06 (Day 9). |
| Incubation | complete | 2026-06-07 | 2026-06-17 | Female-only. Began Day 10 (2026-06-07) on the complete 5-egg clutch — delayed onset for a synchronous hatch. Ran 11 days; the female brooded tight through the final night (Jun 16→17) and the first chick was out by dawn on the 17th — a few days ahead of the marked June 19–21 window. |
| Hatching | complete | 2026-06-17 | 2026-06-18 | Began before dawn on Day 20 (2026-06-17). The full five-egg clutch was intact at 01:18 PT; the first hatchling was out by 04:45 PT (four eggs + one chick, confirmed from the top-down camera). The rest of the clutch followed through the day; by Day 21 all five had hatched — a brood of five, confirmed by eye. Synchronous hatch on a 5-egg clutch, a few days ahead of the marked June 19–21 window. (Note: the classifier's wide-frame egg counts undercounted the occluded cup.) |
| Brooding → Provisioning | complete | 2026-06-19 | 2026-07-01 | Five eggs hatched Jun 17–18 (Days 20–21). One nestling was lost on Jun 22 — worked out of the cup and ejected from the nest — leaving four; cause undetermined. The four nestlings passed the brooding→provisioning crossover (days 7–9 post-hatch) in the last week of June: the female now broods only intermittently and both adults provision at pace. By Jul 1 (~14 days post-hatch) the chicks are feathered and near-fledging — inside the 11–19-day fledge window. A five-day capture outage (Jun 27–30) fell across this stretch, so the late-brooding data has a gap; footage resumed Jul 1. |
| Fledging | active (now) | 2026-07-02 | — | Underway. As of Jul 2 (~15 days post-hatch) all four nestlings are fully feathered and have branched out of the cup onto the sconce ledge — the last stage before they leave. House Finch young fledge 11–19 days post-hatch (mode 12–15), so this brood's window runs Jun 28 → Jul 6. Exact branching onset is uncertain: the Jun 27–30 capture outage sits inside the window and footage only resumed Jul 1. Fledge itself is the first full daylight with an empty cup — watch the live stream and the Quiet-cup chart; the finale could happen on camera any day now. |
Raw data
Each chart on this page is built from a small JSON file per day. The journal entries are built from the same files. They’re plain JSON; the camera saw what it saw. Days marked partial filmed less than 20 hours; the four dark days have no file at all.
- Day 1 (May 29):
2026-05-29.jsonpartial · 0h - Day 2 (May 30):
2026-05-30.jsonpartial · 9h - Day 3 (May 31):
2026-05-31.jsonpartial · 13h - Day 4 (Jun 1):
2026-06-01.jsonpartial · 17h - Day 5 (Jun 2):
2026-06-02.json - Day 6 (Jun 3):
2026-06-03.json - Day 7 (Jun 4):
2026-06-04.json - Day 8 (Jun 5):
2026-06-05.json - Day 9 (Jun 6):
2026-06-06.json - Day 10 (Jun 7):
2026-06-07.json - Day 11 (Jun 8):
2026-06-08.json - Day 12 (Jun 9):
2026-06-09.jsonpartial · 12h - Day 13 (Jun 10):
2026-06-10.jsonpartial · 8h - Day 14 (Jun 11):
2026-06-11.json - Day 15 (Jun 12):
2026-06-12.json - Day 16 (Jun 13):
2026-06-13.json - Day 17 (Jun 14):
2026-06-14.json - Day 18 (Jun 15):
2026-06-15.json - Day 19 (Jun 16):
2026-06-16.json - Day 20 (Jun 17):
2026-06-17.jsonpartial · 15h - Day 21 (Jun 18):
2026-06-18.jsonpartial · 15h - Day 22 (Jun 19):
2026-06-19.json - Day 23 (Jun 20):
2026-06-20.json - Day 24 (Jun 21):
2026-06-21.json - Day 25 (Jun 22):
2026-06-22.json - Day 26 (Jun 23):
2026-06-23.json - Day 27 (Jun 24):
2026-06-24.json - Day 28 (Jun 25):
2026-06-25.json - Day 29 (Jun 26):
2026-06-26.jsonpartial · 3h - Day 30: no capture (Jun 27–30 outage)
- Day 31: no capture (Jun 27–30 outage)
- Day 32: no capture (Jun 27–30 outage)
- Day 33: no capture (Jun 27–30 outage)
- Day 34 (Jul 1):
2026-07-01.jsonpartial · 1h - Day 35 (Jul 2):
2026-07-02.jsonpartial · 15h - Day 36 (Jul 3):
2026-07-03.jsonpartial · 15h