Exercise 1: A PARTIAL_ADR With Context but No Consequences — Possible Solution ==================================================================== THE NEW ADR ------------------------------ PARTIAL_ADR = ''' Title: ADR-003: Order/User Communication via Events, Not Direct Calls Status: Accepted Context: OrderService needs to award loyalty points and send confirmation emails when an order is placed. These actions require data from the User domain. Direct synchronous calls were considered, but risk cascading failures if UserService is slow or down. A shared database was also considered, but was rejected due to the coupling risk. Decision: OrderService will publish an OrderPlaced event via a shared EventBus. UserService and EmailService will subscribe independently. ''' This includes this chapter's own GOOD_ADR's Context and Decision sections verbatim, but deliberately omits the entire Consequences section. RUNNING THIS CHAPTER'S OWN FOUR-QUESTION TEST ------------------------------ Why not direct synchronous calls? -> answerable: True Why not a shared database? -> answerable: True What do we lose by doing this? -> answerable: False What was actually decided? -> answerable: True TOTAL: 3 of 4 PARTIAL_ADR answers 3 of 4 - strictly better than BAD_ADR's 1 of 4, but still worse than GOOD_ADR's 4 of 4. It correctly explains WHY the decision was made (both alternatives and their rejections are present), but a reader still can't learn what the decision actually COSTS. WHY THIS RESULT IS INFORMATIVE, NOT JUST EXPECTED ------------------------------ This confirms the four-question test genuinely measures independent gaps rather than one overall "good or bad" score - PARTIAL_ADR proves it's possible to explain a decision's REASONING thoroughly while still leaving a reader unable to predict its real-world impact (the eventual- consistency window this chapter's own Chapter 6 measured directly). A team reading only PARTIAL_ADR might correctly understand why events were chosen over direct calls, and still be surprised in production when a user's loyalty points don't appear immediately. WHY THIS WORKS AS AN ANSWER ------------------------------ The new ADR is built by deliberately removing exactly one section from this chapter's own GOOD_ADR (rather than writing something new and untested), and the result is verified against the exact same four- question test this chapter used, with the specific unanswered question identified rather than just the total count reported.