Architecture Choice Clinic
A 90-minute clinic where you turn your domain model into an architectural decision with evidence. You leave with a characteristics list, a style decision, and at least one running fitness function.
Retrieval Prompts
- Why do we pick top-3 characteristics instead of all characteristics?
- State the three architectural styles realistic for a capstone.
- What does a fitness function have that a unit test does not?
- Where does the top-3 characteristics list live in the design doc?
- Why must a non-goal characteristic be written down explicitly?
Compare and Distinguish
- driver versus supported versus non-goal characteristic
- monolith versus modular monolith versus services
- fitness function versus unit test versus integration test
- architectural style decision versus framework decision
- "scaled" versus "scalable"
Common Mistake Check
Identify the error:
- "All 10 characteristics are drivers for my capstone."
- "I'm using microservices because it's the modern choice."
- "I'll add fitness functions after the code is working."
- "Availability is always a top-3 characteristic."
- "My fitness function tests one function for correctness."
Mini Application: Three Artifacts
Artifact 1 -- Characteristics ranking
From a list of 10-15 candidate characteristics, filter (using the "would the user notice?" test), rank, and split into three columns: Drivers (top 3), Supported, Non-goals. For each driver, write the design implication in one sentence.
Commit to library/raw/architecture/characteristics.md.
Artifact 2 -- Style decision with three alternatives
Write the three-alternatives passage from concept 08. Present monolith, modular monolith, and services as alternatives with honest pro/con vs your top-3 characteristics. Pick one. Paragraph-justify the pick.
This passage goes into the design doc's Architecture section and becomes the core of ADR-001.
Commit updated library/raw/design-doc.md.
Artifact 3 -- One fitness function, running
Pick one top-3 characteristic. Translate it into the smallest possible check:
- A module-boundary test (if simplicity / modularity is your driver).
- A latency assertion on a load-test harness (if performance is a driver).
- A CI deploy-time health check (if operability is a driver).
Write it. Commit it. Wire it into CI. Make it fail once (deliberately break the claim) to verify the signal. Then revert.
Commit to tests/arch/ or equivalent path. Reference from library/raw/architecture/fitness-functions.md.
Evidence Check
- Exactly three characteristics are marked drivers; at least two non-goals are written down.
- The style decision names three alternatives and rejects two with a specific sentence per rejection.
- The style decision justification cites at least one top-3 characteristic and at least one risk-register row.
- At least one fitness function is committed to the repo and runs in CI.
- The fitness function has been observed failing (deliberately), confirming the signal works.
- You can name one design decision your characteristics forced, and one they prevented.