Day 3 wrap-up

Day 3: Choose your adventure · Wrap-up · 10 min

Today you ran a vague brief through a framework built for a team, pushed a late change through it, and wrote a card someone else can read.

What you learned

Review

Answer from memory; a question you cannot answer names the page to re-read.

  1. Name the four things a spec framework standardizes and one thing people expect it to fix that it does not touch. (Lesson 1)
  2. Which file makes a permission rule the team's rather than yours, and which file does don't ask again write to? (Lesson 5)
  3. In OpenSpec, which delta header should a late change to a shipped requirement use, and what does archiving it do to that requirement in openspec/specs/, compared with an ADDED requirement under a new name? (Exercise 3)
  4. Where does a LID @spec annotation belong, and why not on every helper function? (Lesson 3)
  5. What do BMAD's six spec status values do that a folder of Markdown files does not? (Lesson 3)
  6. Explain living specs versus expiring specs with one framework as the example. Which does your team need? (Lesson 2)
  7. Your framework went green but resolved an ambiguity without telling you. Which step today catches that? (Exercise 2)
  8. Day 3's brief had no acceptance criteria on purpose. Whose job was producing them, and what would writing them yourself first have broken? (Exercise 2)
  9. Which of Lesson 4's questions does we changed this and did not know what depended on it land on, and what does the answer point at? (Lesson 4)
  10. You are adopting on a module with no tests. What do you build first, and why does the framework have to wait? (Lesson 5)

Challenges

Homework beyond the day's three hours, with no reveals or solutions; one is enough. Challenges 1 and 3 start from a fresh day3-work.

1. A second track, and a recommendation

Take the third track, neither yours nor the one whose reference card Exercise 3 showed you, through Exercises 1 to 3, fill a second card from that run, and write your team the paragraph recommending one of the two: the failure it fixes, and when you will count its signal again. If you ran OpenSpec, that is LID; if LID, BMAD; if BMAD, OpenSpec.

A new map and card start only where none exists, so work in this order: from inside day3-work, move your first ones aside with the line below, then run the reset in Before you close the laptop, then re-run Exercise 1's setup and the new track's install-and-init.

mv ../work/map.md ../work/map-first.md && mv ../work/comparison-card.md ../work/comparison-card-first.md && mv ../work/ambiguities.md ../work/ambiguities-first.md

If your first track was OpenSpec, there is nothing to turn off: its commands and skills sit in day3-work/.claude/, which the reset replaces.

If your first track was LID, its plugins, installed at user scope, would load beside the second, so disable both in the shell tab before you start the second track:

claude plugin disable linked-intent-dev@jszmajda-lid
claude plugin disable arrow-maintenance@jszmajda-lid

Afterwards, run the same lines with enable. If you loaded LID through Exercise 1's Network blocked? box instead, nothing was installed: skip both lines and start claude without --plugin-dir.

If your first track was BMAD, there is nothing to turn off: its skills sit in day3-work/.claude/skills/, which the reset replaces.

2. The smallest-subset adoption note

Write the adoption note for your chosen framework: the three commands your team will run, the artifacts you will commit, the parts you deliberately skip, and the one line of CLAUDE.md it may cost, paid for by removing another. Keep it in ../work/.

3. Port Change C on the artifacts alone

Port Change C to the other lane from your framework's artifacts alone: no reading your implementation, no copying code. Where they fall short, note which line of which artifact was missing. The check is the other lane's acceptance suite, copied in as in Exercise 2's step 9; it needs that lane's toolchain from Setup: Swift 6.2, or a JDK 17 or later.

From inside day3-work, run your track's first line before the reset and its second after the reset and install-and-init (on LID, skip the mapping run); it deletes the brief, so the port reads only the artifacts. On OpenSpec, the first line also drops the late change Exercise 3 left unarchived, so the port does not see a half-done change.

OpenSpec, where openspec list names the late change: put that name for <late-change>, or drop the last rm if it prints No active changes found.

rm -rf ../work/openspec && cp -R openspec ../work/ && rm -rf ../work/openspec/changes/<late-change>
cp -R ../work/openspec/. openspec/ && rm change-c-brief.md

LID, whose ## LID section ends CLAUDE.md:

rm -rf ../work/docs && cp -R docs ../work/ && sed -n '/^## LID$/,$p' CLAUDE.md > ../work/lid-section.md
cp -R ../work/docs . && cat ../work/lid-section.md >> CLAUDE.md && rm change-c-brief.md

BMAD:

rm -rf ../work/_bmad-output && cp -R _bmad-output ../work/
cp -R ../work/_bmad-output/. _bmad-output/ && rm change-c-brief.md
Before you close the laptop

Save. Your map, card and ambiguities list sit in ../work/, which no reset touches. Those are the keepers.

Reset, for another attempt. Quit Claude Code, then from inside day3-work run your lane's line; for challenge 3, first switch the lane toggle at the top to the other lane.

Swift lane
cd .. && rm -rf day3-work && cp -R sandbox/swift day3-work && cd day3-work
Kotlin lane
cd .. && rm -rf day3-work && cp -R sandbox/kotlin day3-work && cd day3-work

Then re-run the copy lines of Exercise 1's setup block (everything after its cd day3-work), or for challenge 3 those of Exercise 2's setup block, which also copy the cycle fixture, and the challenge track's install-and-init steps: BMAD's installer runs again, and /bmad-build halts without uv. OpenSpec on your PATH and the LID plugins at user scope survive.

Done for good. Copy the keepers out of work/, Day 2's included, then quit Claude Code and, from the course root, remove both folders:

rm -rf day3-work work

That leaves what was installed outside them. OpenSpec stays on your PATH until you run npm uninstall -g @fission-ai/openspec (nothing to remove if you used the npx form). If you ran LID, disable its plugins with Challenge 1's two disable lines: on the build machine the two added about 1,090 tokens to every session.

That is the course. Take your card to your team with one sentence naming the failure it fixes; no reference card exists for your own track, so yours is the first.

Sources

Framework documentation accessed 2026-09-22. Versions pinned for Day 3: OpenSpec 1.13.1, LID commit 831c1959, BMAD 6.12.0. Entries marked observed were recorded on the build machine on 2026-09-22.