The second class of week 4. This is a
fifteen-minute opener before the main event: whole-class Phase 2 delivery,
five teams presenting, twelve minutes each (format slide at the end of this
deck). Several teams have already hit a conflict in real
life — multiple members editing the same rows of docs/team-agreement.md on
separate branches at once, and a run of "Merge branch 'main' into …"
commits. This clinic exists because of that, not as a hypothetical.
Say this plainly at the start so the room relaxes: nobody did anything
wrong by causing a conflict. It means two people were both making real
progress on the same file at the same time.
Name the pattern, not the team: several people editing that one table on
separate branches at once is exactly what produced this semester's
conflicts. No team named here or on any slide in this deck.
This is the same habit from the roles deck's mistakes slide, update from main before
review — today is what happens when the habit was skipped. Updating from main
before review means the reviewer reads what will actually land, and
conflicts surface while the branch is still small.
Point at each line: HEAD is your branch's version, the line of equal signs
is the split, main is what is already merged. All three marker lines get
deleted — none of them are real file content.
GitHub's web conflict editor changes its labels from time to time; follow what
the page shows. If the button is not offered, the conflict is not simple text and
belongs in GitHub Desktop instead.
This is the path for anything beyond a single simple line — most of what
the room will actually meet. Antigravity opens the same file Desktop is
pointing at; nothing needs re-locating.
An agent proposing a merge is a draft, not a decision. The failure mode to
name out loud: an agent that silently keeps its own branch's version and
drops the teammate's row entirely, without saying so.
The ruleset already requires one approving review before main, and nobody
approves their own — a resolved conflict does not skip that gate. The
reviewer is checking the merge itself, not just the original change.
Do this live in the browser, on the projector, before switching to
presentations. Two branches were prepared in advance editing the same row
of team-agreement.md so the conflict is guaranteed and small. Keep this
under three minutes — the room is here for Phase 2.
Close the clinic here. The tool did not fail; it is handing a decision to
the two people who made it, because it cannot make that call itself.
Order: team 1 to team 5 by number unless drawn at the start; the first team
was told in the previous class. Keep time strictly — 60 minutes for five teams leaves no
slack. A team of four spreads the rows; at four the Phase Lead carries the
ledger row. The format is on the course site under the deliverables page and is reused
at every delivery.
One slide, no numbers. The same rubric is used for Phase 3, 4, 5 and the
Phase 6 sprint — say that, so it is heard as a standing rule. Full text on
the course site, deliverables page. Then hand off to the first team.
Five teams present, whole class. Hand off to the first team.