Stage 4 of 5 · Working · method is what gets graded
Method & repo
Every evaluation focus on the milestones page comes back to method, and method lives in two places: the agreements a pair writes down, and the repo that records everything else. This page is the operating manual for both, assembled from habits the course installed one week at a time, now running together.
Three agreements, in writing
In the repo's README, from Week 11 on, because pairs fail by silence, not by skill:
- Boards. Who carries which board between classes, and the handoff rule when plans change. A project whose hardware is "somewhere" is blocked by logistics, the one blocker no studio can fix.
- Split. How the work divides: by layer (one owns node and sensing, the other owns Pi and dashboard) or by feature (each owns rungs end to end). Both work; by layer needs the stubs from Week 12 so neither waits, by feature needs stricter contract discipline since both touch every layer. Choose one, write it down, renegotiate out loud if it stops fitting.
- Rhythm. A fixed sync: the ten-minute stand-up at each class's start, plus one mid-week check-in with a definite time. Done, next, blocked, one line each in the journal.
The repo's spine
One shared repository, the Week 1 promise at full scale: the project is replicable from the repo, meaning a stranger with the kit could rebuild it from what is committed. The documentation spine your project inherits and extends:
docs/topics.md is the contract file every stub and every half-split reads, and the brief's deliverable documents live beside it in docs/.The Git rhythm for two
The Week 1 collaboration stack, now load-bearing: a branch per person or per rung, small commits whose messages name causes and rungs, a pull-request review before merging to main, and the conflict ritual when it bites. One rule keeps main precious: main always walks, meaning anything merged has passed the end-to-end check, so main is always the branch a milestone could demo from. Tags mark the gates: d2-skeleton, d3-rung, d4, d5-final.
The verification table
The A2 habit at project scale, living in docs/requirements.md: one row per requirement, filled left to right as the project climbs.
| # | Requirement (five qualities) | How demonstrated | Disturbance caused | Milestone | Status |
|---|---|---|---|---|---|
| R1 | Reading on the dashboard is at most 3 s older than the sensor's measurement in normal operation | Stopwatch: shade sensor, time the page's change | Shading, by hand | D2 | green · Nov 23 |
| R2 | When the reading crosses the threshold, the actuator engages within 5 s | Cause crossing, observe actuator and its log line | Threshold crossing, caused | D3 | green · Nov 30 |
| R3 | The threshold is settable from the dashboard and takes effect without restarts | Set from a phone, re-run R2 at the new value | New threshold mid-run | D4 | open |
The example rows are a shape, not your content; the brief says which deliverables must include the table. Its honesty rule: a row goes green only when the demonstration has actually been run, dated, and any green row can be re-demonstrated on request.
The weekly cycle
- Monday, class: stand-up, studio or milestone work, the milestone's demonstration, exit with next week's rung named.
- In the week: each partner works their branch; every session ends with a commit, a push, and the two-minute end-to-end check; the mid-week check-in happens at its fixed time.
- Before next Monday: PRs reviewed and merged, old rungs re-verified, the verification table and journal updated, main walking.
Checklist
Check yourself
Defend "main always walks" against a partner who finds PRs slow and wants to commit straight to main.
Split by layer or by feature: which creates more pressure on docs/topics.md, and why does the other need stubs more?
mosquitto_pub and curl standing in, each is blocked whenever the other is mid-surgery. Both splits work precisely because the course provides the missing piece for each: a contract file for one, stubs for the other.