ЁЯПл The SchoolтА║ЁЯФМ MCPтА║ЁЯМН рдзрдбрд╛ 08 тАФ рдкрд╛рдЪ рдЦрд▒реНрдпрд╛ рдЬрдЧрд╛рддреАрд▓ use cases (sequence рдЖрдХреГрддреНрдпрд╛рдВрд╕рд╣)
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯМН рдзрдбрд╛ 08 тАФ рдкрд╛рдЪ рдЦрд▒реНрдпрд╛ рдЬрдЧрд╛рддреАрд▓ use cases (sequence рдЖрдХреГрддреНрдпрд╛рдВрд╕рд╣)

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 8 рдкреИрдХреА рдзрдбрд╛ 08 тАФ рд╢реЗрд╡рдЯрдЪрд╛ рдзрдбрд╛!


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рд╕рдВрдкреВрд░реНрдг рдХреЛрд░реНрд╕, рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдлрд│: production рд╕рд╛рд░рдЦреНрдпрд╛ рдкрд╛рдЪ рд░рдЪрдирд╛. Site рд╡рд░ рдкреНрд░рддреНрдпреЗрдХ рджреЛрдирджрд╛ рдХрд╛рдврд▓реЗрд▓реА рдЖрд╣реЗ тАФ рдПрдХ рдХреНрд░рдорд╛рдВрдХрд┐рдд flow рдЖрдХреГрддреА рдЖрдгрд┐ рдПрдХ рдкрд╛рдпрд░реА-рдкрд╛рдпрд░реАрдЪреА sequence рдЖрдХреГрддреА: ЁЯМР рд╕рдЪрд┐рддреНрд░ use-cases рдкрд╛рди тЖР рд╣рд╛ рдзрдбрд╛ рд╡рд╛рдЪрддрд╛рдирд╛ рддреЗ рд╢реЗрдЬрд╛рд░реА рдЙрдШрдбрд╛.

ЁЯзТ рдкрд╛рдЪ рд░рдЪрдирд╛, рд╢рд╛рд│реЗрдЪреНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд

1. ЁЯРЩ Coding assistant (IDE + GitHub server + filesystem server) "Issue #42 рджреБрд░реБрд╕реНрдд рдХрд░." рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдиреА рддрдХреНрд░рд╛рд░ рд╡рд╛рдЪрддреЗ (get_issue), code рд╡рд╛рдЪрддреЗ (read_file), рджреБрд░реБрд╕реНрддреА рд▓рд┐рд╣рд┐рддреЗ, tests рдЪрд╛рд▓рд╡рддреЗ (run_tests), PR рдЪрд╛ рдорд╕реБрджрд╛ рдмрдирд╡рддреЗ тАФ create_pr рддреБрдордЪреНрдпрд╛ click рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рддреЛ (L05 рдзреЛрд░рдг 3). MCP рдХрд╛: рддреЛрдЪ GitHub server рдкреНрд░рддреНрдпреЗрдХ IDE рдЖрдгрд┐ agent рдордзреНрдпреЗ рдЪрд╛рд▓рддреЛ тАФ рдПрдХрджрд╛ рд▓рд┐рд╣рд╛, рд╕рдЧрд│реАрдХрдбреЗ рдЬреЛрдбрд╛.

2. ЁЯОз Support desk (support app + orders-DB server + docs server) рдЧреНрд░рд╛рд╣рдХ: "рдорд╛рдЭрд╛ refund рдХреБрдареЗ рдЖрд╣реЗ?" тЖТ order рд╢реЛрдзрд╛ (read-only!), refund policy рдЖрдгрд╛ тЖТ рдкреБрд░рд╛рд╡реНрдпрд╛рдВрд╕рд╣ рдЖрдзрд╛рд░рд▓реЗрд▓реЗ рдЙрддреНрддрд░ тАФ RAG рдЪреА рдЦреБрд▓реНрдпрд╛ рдкреБрд╕реНрддрдХрд╛рдЪреА рдкрд░реАрдХреНрд╖рд╛ (AI рдХреЛрд░реНрд╕ L10) MCP plugs рдШрд╛рд▓реВрди. DB tool рдорд░реНрдпрд╛рджрд┐рдд account рджреНрд╡рд╛рд░реЗ рдлрдХреНрдд SELECT рдХрд░рддреЛ (AWS рдХреЛрд░реНрд╕ L03 рдЪрд╛ least privilege, рд╢рдмреНрджрд╢рдГ).

3. ЁЯУК Data analyst (chat app + SQL server + chart server) "рдорд╛рдЧрдЪреНрдпрд╛ рдорд╣рд┐рдиреНрдпрд╛рдд рдкреНрд░рддреНрдпреЗрдХ region рдордзреНрдпреЗ рдХреЛрдгрддреЗ product рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рд╡рд┐рдХрд▓реЗ рдЧреЗрд▓реЗ?" тЖТ query_db тЖТ make_chart тЖТ рдЪрд┐рддреНрд░рд╛рд╕рд╣ рдЖрдХрдбреЗ. Schema рдЪреА enum/read-only рд░рдЪрдирд╛ (L06) рд╣реАрдЪ "analyst" рд▓рд╛ "DROP TABLE" рдмрдирдгреНрдпрд╛рдкрд╛рд╕реВрди рд░реЛрдЦрддреЗ. ЁЯШЕ

4. ЁЯУЕ Meeting-prep butler (assistant + calendar + CRM + email) "3 pm рдЪреНрдпрд╛ рдмреИрдардХреАрд╕рд╛рдареА рдорд╛рдЭреА рддрдпрд╛рд░реА рдХрд░" тЖТ get_event тЖТ crm_lookup(company) тЖТ recent_threads(attendees) тЖТ рдПрдХ рдиреАрдЯрдиреЗрдЯрдХрд╛ brief. рддреАрди servers, рдПрдХ рдЦреЛрд▓реА, рдПрдХ рдмрд╛рдХ тАФ рдПрдХрд╛рдЪ request рдордзреНрдпреЗ N+M рдЪреЗ рдлрд│.

5. ЁЯУБ Report robot (agent + filesystem + Slack server) "рдпрд╛ folder рдордзреАрд▓ рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ reports рдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдХрд░реВрди #team рд╡рд░ post рдХрд░" тЖТ list_dir тЖТ read_file ├ЧN тЖТ summarize тЖТ slack_post рддреБрдордЪреНрдпрд╛ click рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рддреЛ тАФ рдкреБрдиреНрд╣рд╛ write-gate, рдХрд╛рд░рдг рдлрд╛рдЯрдХрд╛рд╢рд┐рд╡рд╛рдпрдЪреЗ automation рдореНрд╣рдгрдЬреЗ L05 рдЪрд╛ incident report.

ЁЯЧ║я╕П рдЖрдХреГрддреА (use case 1, рд╕рдЧрд│реНрдпрд╛рдВрдЪрд╛ рдЖрдХрд╛рд░)

sequenceDiagram
    participant U as ЁЯзС user
    participant H as ЁЯПл IDE host
    participant M as ЁЯза model
    participant G as ЁЯРЩ GitHub server
    participant F as ЁЯУБ files server
    U->>H: 1 "fix issue #42"
    H->>M: 2 goal + tool shelves
    M->>G: 3 get_issue(42) тАФ via host
    G-->>M: 4 the bug report тЖТ desk
    M->>F: 5 read_file(buggy.py)
    F-->>M: 6 code тЖТ desk
    M->>H: 7 proposes create_pr(fix)
    H->>U: 8 ЁЯЪз "allow PR?" тАФ the human gate
    U->>H: 9 click тЬУ тЖТ PR exists

тЭУ рдкрд╛рдЪрд╣реА рдордзреНрдпреЗ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд╛рдп (рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рд╛рдпрдЪреА рдпрд╛рджреА)

рддреАрди рдзреЛрд░рдгреЗ, рдкреБрдиреНрд╣рд╛ (L05 тАФ рдХреНрд░рдорд╛рдВрдХ рдкрд╛рда рдХрд░рд╛): 1 local server рддреНрдпрд╛ process рдЪреНрдпрд╛ рдкрд░рд╡рд╛рдирдЧреНрдпрд╛рдВрдиреА рдЪрд╛рд▓рддреЛ (remote server рдЪреА рд╕реНрд╡рддрдГрдЪреА рдУрд│рдЦ рдЕрд╕рддреЗ); 2 tool results рдореНрд╣рдгрдЬреЗ data, рдХрдзреАрдЪ рдЖрдЬреНрдЮрд╛ рдирд╡реНрд╣реЗ; 3 writes рдирд╛ рдорд╛рдгрд╕рд╛рдЪреЗ рдлрд╛рдЯрдХ. рдкреНрд░рддреНрдпреЗрдХ case рдордзреНрдпреЗ рдлрд╛рдЯрдХ рдХреБрдареЗ рдЖрд╣реЗ:

Case Reads (рд╡рд╛рд╣рддрд╛рдд) Writes (рдлрд╛рдЯрдХ)
ЁЯРЩ coding assistant get_issue, read_file, run_tests create_pr тЖТ IDE рдордзреАрд▓ click
ЁЯОз support desk order lookup (рдлрдХреНрдд-SELECT account), policy docs рдЖрдЬ рдХрд╛рд╣реА рдирд╛рд╣реА тАФ refund_issue tool рд▓рд╛ рдлрд╛рдЯрдХ рд▓рд╛рдЧреЗрд▓
ЁЯУК data analyst query_db (рдлрдХреНрдд-SELECT), make_chart рдХрд╛рд╣реА рдирд╛рд╣реА тАФ рдХреЛрдгрддреНрдпрд╛рд╣реА write tool рд▓рд╛, рдХрд┐рдВрд╡рд╛ рдорд░реНрдпрд╛рджрд┐рдд рдирд╕рд▓реЗрд▓реНрдпрд╛ account рд▓рд╛, click рд▓рд╛рдЧреЗрд▓
ЁЯУЕ meeting-prep butler get_event, crm_lookup, recent_threads рдХрд╛рд╣реА рдирд╛рд╣реА тАФ "follow-up рдкрд╛рдард╡" рдЬреЛрдбрд▓реЗ рддреНрдпрд╛ рдХреНрд╖рдгреА email server рдЪреНрдпрд╛ send tool рд▓рд╛ click рдорд┐рд│рддреЛ
ЁЯУБ report robot list_dir, read_file ├ЧN slack_post тЖТ "post to #team?" рдкреВрд░реНрдг рджрд╛рдЦрд╡рд▓реЗрд▓реЗ

тЫФ Anti-pattern: write рдХрд░реВ рд╢рдХрдгрд╛рд░рд╛ database tool (INSERT/UPDATE/DELETE тАФ рдХрд┐рдВрд╡рд╛ рддрд╕реЗ рдХрд░реВ рд╢рдХрдгрд╛рд░реЗ DB account) host рдмрд╛рдЬреВрдЪреНрдпрд╛ рдЦрд╛рддреНрд░реАрд╢рд┐рд╡рд╛рдп model рдЪреНрдпрд╛ рд╣рд╛рддреА рджреЗрдгреЗ. рдЖрдгрд▓реЗрд▓реНрдпрд╛ ticket рдордзреАрд▓ рдПрдХ рдШреБрд╕рд╡рд▓реЗрд▓реЗ рд╡рд╛рдХреНрдп (рдзреЛрд░рдг 2) рдореНрд╣рдгрдЬреЗ dropped table (рдзреЛрд░рдг 3 рд╡рдЧрд│рд▓реЗ). Account рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рд╛, tool рд▓рд╛ рд▓реЗрдмрд▓ рд▓рд╛рд╡рд╛, write рд▓рд╛ рдлрд╛рдЯрдХ рд▓рд╛рд╡рд╛.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ тАФ рддреБрдордЪрд╛ рд╕рд╣рд╛рд╡рд╛ use case

рддреБрдордЪреНрдпрд╛ рдЖрдард╡рдбреНрдпрд╛рддреАрд▓ рдПрдХ рдЦрд░рд╛ workflow рдирд┐рд╡рдбрд╛ (expense report? standup notes? ticket triage?). рдХрд╛рдЧрджрд╛рд╡рд░: рдХреЛрдгрддреЗ servers (рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реЗрд▓реЗ рдХрд┐рдВрд╡рд╛ рдмрд╛рдВрдзрд╛рдпрдЪреЗ)? рдкреНрд░рддреНрдпреЗрдХ server рд╡рд░ рдХреЛрдгрддреЗ tools тАФ рдЖрдгрд┐ рддреНрдпрд╛рдВрдкреИрдХреА writes рдХреЛрдгрддреЗ (рдлрд╛рдЯрдХ!)? рд╡рд░рдЪреНрдпрд╛ рд╢реИрд▓реАрдд, рдХреНрд░рдорд╛рдВрдХрд╛рдВрд╕рд╣ sequence рдЖрдХреГрддреА рдХрд╛рдврд╛. рддреБрдореНрд╣реА рддреА рдХрд╛рдвреВ рд╢рдХрд▓рд╛рдд, рддрд░ рдмрд╛рдВрдзреВрд╣реА рд╢рдХрддрд╛ тАФ L06 рдЖрдгрд┐ L07 рд╣реЗрдЪ рд╕рдВрдкреВрд░реНрдг рд╕рд╛рд╣рд┐рддреНрдп рд╣реЛрддреЗ.

тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ

рддреБрдордЪреНрдпрд╛ рд╕рд╣рд╛рд╡реНрдпрд╛ use case рд╕рд╛рдареА рддреБрдореНрд╣реА рдкреНрд░рддреНрдпреЗрдХ server рд╡рд░ рдХреЛрдгрддреЗ tools read рдХрд░рддрд╛рдд рдЖрдгрд┐ рдХреЛрдгрддреЗ write рдХрд░рддрд╛рдд рддреЗ рд╕рд╛рдВрдЧреВ рд╢рдХрддрд╛ тАФ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ write рд▓рд╛ рдирд╛рд╡ рдЕрд╕рд▓реЗрд▓реЗ рдлрд╛рдЯрдХ рдЖрд╣реЗ (рдПрдХ click, рдПрдХ policy, рдПрдХ рдорд░реНрдпрд╛рджрд┐рдд account). рдПрдЦрд╛рджреНрдпрд╛ write рд▓рд╛ рдлрд╛рдЯрдХ рдирд╕реЗрд▓, рддрд░ рд░рдЪрдирд╛ рдкреВрд░реНрдг рдЭрд╛рд▓реЗрд▓реА рдирд╛рд╣реА.

ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ

рддреБрдореНрд╣реА рдХреЛрдгрддреЗрд╣реА MCP deployment рдзрдбрд╛ 04 рдЪреЗ рд╕рд╣рд╛ messages рдЖрдгрд┐ рдзрдбрд╛ 05 рдЪреА рддреАрди рдзреЛрд░рдгреЗ рдореНрд╣рдгреВрди рд╡рд╛рдЪреВ рд╢рдХрддрд╛ тАФ рдЖрдгрд┐ code рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдХрд╛рдЧрджрд╛рд╡рд░ рддреНрдпрд╛рдЪреА рд░рдЪрдирд╛ рдХрд░реВ рд╢рдХрддрд╛.

тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛

ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: рдкрд╛рдЪрд╣реА cases рдЪрд╛ рдЖрдХрд╛рд░ рдПрдХрдЪ рдЖрд╣реЗ: reads рд╡рд╛рд╣рддрд╛рдд, writes рдирд╛ рдлрд╛рдЯрдХ, least-privilege plumbing, рдЕрдиреЗрдХ рдЦреЛрд▓реНрдпрд╛рдВрдордзреНрдпреЗ рддреЗрдЪ servers. Tools рдирд╡реНрд╣реЗ, рдЖрдХрд╛рд░ copy рдХрд░рд╛.

ЁЯОУ Socket рдЖрддрд╛ рддреБрдордЪреЗ рдЖрд╣реЗ

рдбреНрд░реЙрд╡рд░рдЪреА рд╕рдорд╕реНрдпрд╛ тЖТ рддреАрди рднреВрдорд┐рдХрд╛ тЖТ рддреАрди рдХрдкреНрдкреЗ тЖТ wire рд╡рд░реАрд▓ рд╕рд╣рд╛ messages тЖТ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рдЪреА рддреАрди рдзреЛрд░рдгреЗ тЖТ рдЦрд░рд╛ server тЖТ рдЦрд░рд╛ host тЖТ рдкрд╛рдЪ рдЦрд░реА deployments. рддреБрдореНрд╣реА рдлрдХреНрдд MCP рд╢рд┐рдХрд▓рд╛ рдирд╛рд╣реАрдд тАФ рддреНрдпрд╛рдЪреЗ рдЪрд╛рд▓рдгрд╛рд░реЗ implementation рдЖрддрд╛ рддреБрдордЪреНрдпрд╛ рдорд╛рд▓рдХреАрдЪреЗ рдЖрд╣реЗ. ЁЯФМЁЯОУ

git checkout main
python3 client/mini_client.py --drive    # one last spin, for fun

ЁЯМН Lesson 08 тАФ Five real-world use cases (with sequence diagrams)

ЁЯУН You are here: Lesson 08 of 8 тАФ the final lesson!


ЁЯУж What's in this branch

The complete course, plus the payoff: five production-shaped setups. Each is drawn twice on the site тАФ a numbered flow diagram AND a step-by-step sequence diagram: ЁЯМР the illustrated use-cases page тЖР open it beside this lesson.

ЁЯзТ The five, in school words

1. ЁЯРЩ The coding assistant (IDE + GitHub server + filesystem server) "Fix issue #42." The student reads the complaint (get_issue), reads the code (read_file), writes a fix, runs the tests (run_tests), drafts the PR тАФ create_pr waits for your click (L05 policy 3). Why MCP: the same GitHub server works in every IDE and agent тАФ write once, plug everywhere.

2. ЁЯОз The support desk (support app + orders-DB server + docs server) Customer: "where's my refund?" тЖТ look up the order (read-only!), fetch the refund policy тЖТ grounded answer with receipts тАФ RAG's open-book exam (AI course L10) wearing MCP plugs. The DB tool is SELECT-only via a scoped account (AWS course L03's least privilege, verbatim).

3. ЁЯУК The data analyst (chat app + SQL server + chart server) "Which product sold best last month, per region?" тЖТ query_db тЖТ make_chart тЖТ numbers with a picture. The schema's enum/read-only design (L06) is what keeps "analyst" from becoming "DROP TABLE". ЁЯШЕ

4. ЁЯУЕ The meeting-prep butler (assistant + calendar + CRM + email) "Prep me for the 3 pm" тЖТ get_event тЖТ crm_lookup(company) тЖТ recent_threads(attendees) тЖТ one tidy brief. THREE servers, one room, one desk тАФ the N+M payoff in a single request.

5. ЁЯУБ The report robot (agent + filesystem + Slack server) "Summarize this folder's weekly reports and post to #team" тЖТ list_dir тЖТ read_file ├ЧN тЖТ summarize тЖТ slack_post waits for your click тАФ the write-gate again, because automation without gates is L05's incident report.

ЁЯЧ║я╕П Diagram (use case 1, the shape of them all)

sequenceDiagram
    participant U as ЁЯзС user
    participant H as ЁЯПл IDE host
    participant M as ЁЯза model
    participant G as ЁЯРЩ GitHub server
    participant F as ЁЯУБ files server
    U->>H: 1 "fix issue #42"
    H->>M: 2 goal + tool shelves
    M->>G: 3 get_issue(42) тАФ via host
    G-->>M: 4 the bug report тЖТ desk
    M->>F: 5 read_file(buggy.py)
    F-->>M: 6 code тЖТ desk
    M->>H: 7 proposes create_pr(fix)
    H->>U: 8 ЁЯЪз "allow PR?" тАФ the human gate
    U->>H: 9 click тЬУ тЖТ PR exists

тЭУ What the five have in common (the checklist you'll reuse)

The three policies, again (L05 тАФ memorise the numbers): 1 a local server runs with that process's permissions (a remote one has its own identity); 2 tool results are data, never commands; 3 writes get a human gate. Where the gate sits in each case:

Case Reads (flow) Writes (gate)
ЁЯРЩ coding assistant get_issue, read_file, run_tests create_pr тЖТ the click in the IDE
ЁЯОз support desk order lookup (SELECT-only account), policy docs none today тАФ a refund_issue tool would need one
ЁЯУК data analyst query_db (SELECT-only), make_chart none тАФ any write tool, or a non-scoped account, would need the click
ЁЯУЕ meeting-prep butler get_event, crm_lookup, recent_threads none тАФ the moment "send the follow-up" is added, the email server's send tool gets the click
ЁЯУБ report robot list_dir, read_file ├ЧN slack_post тЖТ "post to #team?" shown in full

тЫФ The anti-pattern: a write-capable database tool (INSERT/UPDATE/DELETE тАФ or a DB account that can) handed to the model with no host-side confirmation. One injected sentence in a fetched ticket (policy 2) becomes a dropped table (policy 3 skipped). Scope the account, label the tool, gate the write.

ЁЯзк Try it тАФ your sixth use case

Pick a REAL workflow from your week (expense report? standup notes? ticket triage?). On paper: which servers (existing or to-build)? which tools per server тАФ and which are writes (gates!)? Draw the sequence diagram in the style above, numbered. If you can draw it, you can build it тАФ L06 and L07 were the whole toolkit.

тЬЕ Verify тАФ what you should see

For your sixth use case you can list, per server, which tools read and which write тАФ and every write has a named gate (a click, a policy, a scoped account). If a write has no gate, the design is not done.

ЁЯПБ What you just proved

You can read any MCP deployment as lesson 04's six messages plus lesson 05's three policies тАФ and design one on paper before writing code.

тЪая╕П Common mistakes

ЁЯПн Why this matters in production: the five cases share one shape: reads flow, writes gate, least-privilege plumbing, same servers in many rooms. Copy the shape, not the tools.

ЁЯОУ The socket is yours

The drawer problem тЖТ the three roles тЖТ the three shelves тЖТ six wire messages тЖТ the three trust policies тЖТ a real server тЖТ a real host тЖТ five real deployments. You didn't just learn MCP тАФ you own a working implementation of it. ЁЯФМЁЯОУ

git checkout main
python3 client/mini_client.py --drive    # one last spin, for fun
тЖР Previousbuild a clientFinished! Take the quiz тЖТcheck what stuck

This page is the lesson's README from the lesson-08-use-cases branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.