Pre-Build Spec — ECO2150 Module 6
Status: Approved — retrospective as-built documentation
Generated by: Nexus (Claude Code)
Approved by: Fadl Altarzi (LXD) — 2026-04-28
Build version: v2.7
Date: 2026-04-28
1. Assessment Identity
- Course: ECO2150 — Principles of Microeconomics
- Module: 6 — Government Intervention & Welfare Analysis
- Company: No company — Hartwell City market scenario (sugary beverages excise tax)
- Version: v2.7 (last updated 2026-04-27)
- Route:
/assessments/eco2150/module-6
2. Step Structure
| # |
Step ID |
Label |
Type |
Lock dependency |
showScenario |
| 1 |
scenario |
Scenario |
Read-only overview with S&D chart |
None |
no |
| 2 |
equilibrium |
Pre-Tax Equil. |
Numeric input (2 fields) |
Step 1 complete |
yes |
| 3 |
tax |
Tax Effect |
Numeric input (3 fields) |
Step 2 complete |
yes |
| 4 |
welfare |
Welfare Analysis |
Numeric input (6 fields) |
Step 3 complete |
yes |
| 5 |
analystqa |
Analyst QA |
Written response (Spot the Error) |
Step 4 complete |
no |
| 6 |
interpretation |
Interpretation |
MCQ (4 questions) |
Step 5 complete |
yes |
3. MCQ Inventory
Step 2 — Pre-Tax Equilibrium (EquilibriumSolver)
- Type: Numeric input, not MCQ
- Fields: P* (equilibrium price, $/bottle), Q* (equilibrium quantity, thousands of bottles/week)
- Correct answers: P* = $1.75, Q* = 500
- Tolerances: P ±$0.01, Q ±2
- CLO targets: CLO-3 (algebraic equilibrium determination)
- Scaffold: Algebra setup (Q_d = Q_s, 1200 + 200 = 800P, P* = ?) shown inline
Step 3 — Tax Effect (TaxAnalysis)
- Type: Numeric input, not MCQ
- Fields: P_c (consumer price), P_p (producer net price), Q′ (post-tax quantity)
- Correct answers: P_c = $2.05, P_p = $1.45, Q′ = 380
- Tolerances: P ±$0.01, Q ±2
- CLO targets: CLO-3 (post-tax supply derivation), CLO-4 (understanding tax incidence mechanics)
- Scaffold: Post-tax supply derivation (Q_s′ = −440 + 400P) and solve Q_d = Q_s′ shown inline
Step 4 — Welfare Analysis (WelfareAnalysis)
- Type: Numeric input, not MCQ
- Fields: CS pre-tax, PS pre-tax, CS post-tax, PS post-tax, tax revenue, deadweight loss
- Correct answers: CS_pre = 312.5, PS_pre = 312.5, CS_post = 180.5, PS_post = 180.5, Tax Revenue = 228, DWL = 36
- Tolerance: ±2 on all values (thousands of $/week)
- CLO targets: CLO-3 (welfare area geometry), CLO-6 (model interpretation — what DWL means)
- Scaffold: Triangle area formulas (CS, PS, TR, DWL) shown inline; pre-tax and post-tax sections separated
Step 6 — Policy Interpretation (PolicyInterpretation)
- Questions: 4
- Categories: Market failure type, tax incidence distribution, deadweight loss interpretation, Pigouvian tax calibration
- CLO targets: CLO-4 (government intervention analysis), CLO-6 (model interpretation)
- q1: Type of market failure → correct: "Negative externality — the good imposes costs on uninvolved third parties"
- q2: How is the $0.60 burden distributed (consumer price rises $0.30, producer net falls $0.30) → correct: "Equally — consumers bear $0.30 and producers bear $0.30"
- q3: What does the $36,000/week deadweight loss represent → correct: "Mutually beneficial trades that no longer occur because the tax reduced quantity below the competitive equilibrium"
- q4: If true external cost is $0.80 but tax is $0.60, the intervention → correct: "Undercorrects — the market still produces more than the socially optimal quantity"
4. AI Question
Not included as a discrete step. The Analyst QA written response (Step 5) is submitted to the grading API (/api/grade) along with the Policy Interpretation MCQ answers. There is no standalone AI-concept question in this assessment.
5. Media Elements
- ScenarioOverview — Recharts LineChart: Supply and demand diagram (Fig. 1) showing demand curve (blue), pre-tax supply curve (green), and post-tax supply curve (amber dashed), with reference dots for pre-tax equilibrium E* ($1.75, 500) and post-tax consumer-price equilibrium Pc ($2.05, 380); reference lines for vertical Q positions and horizontal Pc price; custom tooltip showing $/bottle at each Q point
- ScenarioOverview — Market model panel: Demand and supply equations displayed with inverse forms, choke price, and minimum supply price
- SpotTheError — Recharts BarChart: Deliberately flawed bar chart showing consumer burden = $0.50 and producer burden = $0.10 (totaling $0.60); error: the correct equal split is $0.30/$0.30 because demand and supply slopes are identical (400); intern's summary table also shown; learner must identify the error and explain why it misleads the city council
6. Industry Context Panel
4-item 2×2 grid in ScenarioOverview, placed between the market model (the canonical "metrics" element in this assessment — demand/supply equations + tax box) and the Recharts supply/demand chart. Items are present-tense pressures shaping excise-tax policy on sugary beverages:
- WHO Sugar Tax Momentum — global jurisdiction count + WHO 20% effective-rate guidance; frames why the council is even running this analysis
- Healthcare Externality Evidence — strengthens the Pigouvian-tax rationale; frames the assessment's externality framing without altering the welfare math
- Tax Incidence in Practice — Mexico SSB / UK SDIL benchmarks; frames the consumer-vs-producer split that Step 2 calculates
- Reformulation vs Quantity Effects — UK SDIL reformulation phenomenon; flags a real-world wrinkle that the model intentionally simplifies
Updating any panel item must not change the correct answer to any MCQ. Welfare math (consumer surplus, producer surplus, tax revenue, deadweight loss) and tax-incidence formulas remain invariant.
7. Written Brief
Analyst QA Response (Step 5)
- Prompt: "Your analysis — what is wrong, and why does it matter for the city council?" (with placeholder guidance to identify the error in burden figures, explain what supply/demand equations predict, and describe what policy conclusion a council member might wrongly draw)
- Minimum words: 20
- CLO mapping: CLO-6 (model interpretation — reading chart output critically), CLO-4 (government intervention implications — what the error means for policy)
8. Company Profile
- Name: N/A — market scenario only
- Ticker: N/A
- Sector: N/A
- Description (as rendered): Hartwell City Council evaluating a proposed $0.60 per-bottle excise tax on sugary beverage producers to internalize healthcare costs borne by the public health system
- Source: N/A — fictional municipal scenario; no company database entry
9. Grading Configuration
- MCQ weight: 0.85
- Written weight: 0.15
- Degree level: Undergrad (BBA)
- Mastery threshold: ≥90% (Mastery), 70–89% (Developing), <70% (Insufficient)
- CLO demonstrated threshold: ≥70%
- Pillar weights: Domain 55%, Reasoning 25%, Contribution 20%
Note: The numeric workbook steps (equilibrium, tax effect, welfare) are self-graded client-side using exact-answer checking. Only the Policy Interpretation MCQs (Step 6) and the Analyst QA written response (Step 5) are submitted to the grading API. The numeric steps function as formative gates — they must be completed to unlock later steps but are not included in the composite grade calculation.
10. Compliance Checklist
- ✅ Step locking (isAccessible) — all 6 steps locked behind prior completion; QA mode bypasses
- ✅ QA bypass (?qa=nxf-qa-8f2k) — implemented via useEffect on URLSearchParams
- ❌ Ticker pill in header — no company in this assessment; city/title approach used instead (compliant with market scenario pattern; no ticker pill applies)
- ✅ US English spelling — no British spellings observed in component copy
- ✅ Warm learner-facing tone — feedback uses "Not quite!", "You got X of Y — review the explanations above and give it another go!", "✓ Correct" patterns throughout PolicyInterpretation
- ✅ Version string in breadcrumb —
v2.0 rendered in font-mono in breadcrumb line
- ✅ No external logos (no Clearbit) — no company logo used; no ticker pill required for market scenario
- ❌ AI question included — no discrete AI question step; written response submitted to grading API but no standalone AI-specific MCQ
- ✅ Recharts chart in ScenarioOverview — LineChart with ResponsiveContainer showing S&D diagram
- ✅ SpotTheError component — present as Step 5 (Analyst QA); BarChart shows incorrect burden split ($0.50/$0.10 vs correct $0.30/$0.30)
- ✅ Analyst QA step — present (Step 5, id: "analystqa")
- ✅ ← Back button on every step — Back buttons present on Steps 2, 3, 4, 5, and 6; Step 1 (scenario) has no Back (it is the first step, which is correct)
Approval notes
- Numeric workbook steps (equilibrium, tax, welfare) are formative gates only — they do not contribute to the composite grade. An LXD reviewer would have wanted this explicitly signed off before build, as it means a learner who solves all the algebra correctly but answers MCQs poorly still receives a low grade.
- The grading submission (
submitForGrading) sends only policyAnswers (Step 6 MCQ) and errorResponse (Step 5 written) to the API. Steps 2–4 numeric correctness is not transmitted to the grade record, only used to unlock subsequent steps.
- Written minimum is 20 words (analyst QA only) — the interpretation step is entirely MCQ with no additional written component. LD should review whether the 15% written weight is adequately represented by a 20-word minimum response.
- Assessment directly addresses diagnostic gaps GAP-ECO2150-004 (algebraic equilibrium) and GAP-ECO2150-007 (welfare area calculation) by scaffolding both inline — this is appropriate for an assessment but does not substitute for instructional gap closure in M3.
- The assessment was built to Option A (AST-1) from the diagnostic recommendation, targeting CLO-3, CLO-4, and CLO-6.