After the Count / instructor review
Keep the challenge.
Remove the confusion.
15 independent AI reviews15 discussion responses37 automated checks passed
The revised studio retains the real election records and demanding institutional choices. The largest changes improve the quality of the application task, make compared evidence available during writing, and keep navigation, saving and submission states consistent.
These are simulated student and specialist reviews, source-execution tests and browser checks. They are useful development evidence. Actual student engagement, completion times and durable learning still require classroom use.
How the review worked
Each reviewer first examined the same frozen product snapshot without the earlier conversation, design rationale or other review reports. Students attempted the supplied questions; faculty checked concepts and figures; visual and UX reviewers inspected information design and behavior; learning specialists examined sequence, assistance and assessment. In the second phase, each reviewer read at least two reports from other perspectives, challenged a proposal and wrote a resolution. The final verification revisited the changed source and tested the repaired paths.
Findings and implemented revisions
| Focus | Problem | Revision | Review perspectives |
|---|
| Keeping your place | Case switching and notebook return could restart the opening phase. | Per-case bookmarks, coherent Back/Continue routes, and direct case reopening. | student_1; student_3; ux_1 |
| Exploring after filing | Trying another model could silently unfile a completed argument. | Exploration preserves the filed argument and its recorded model setting. Editing the argument still calls for refiling. | student_1; ux_1; ux_3 |
| Seeing both comparisons | The writing screen showed only the last model result. | Every inspected setting remains visible beside the explanation and can be reopened in the final comparison. | student_2; graphics_2; learning_1 |
| Purposeful intellectual difficulty | Two setting clicks satisfied the lab without a noticed consequence. | The existing explanation now compares both settings, defends a consequence, names a cost and confirms or revises the first thought. | faculty_1; learning_1; learning_2 |
| New-case application | New Zealand explained the answer before the check; addition alone did little to test compensation. | Raw results and the supplied rule precede application. A modeled 10-seat entitlement with 3 electorate seats requires 7 list seats. Worked interpretation follows unsuccessful attempts. | faculty_1; faculty_2; learning_3 |
| First responses and assistance | Only current answers and attempt counts were retained. Help could disappear from the success label. | First submitted thoughts and answer snapshots are retained. Hints and worked support are marked; current drafts are distinguished from submitted answers. | student_2; faculty_2; ux_3 |
| Meaningful repairs | Two empty check clicks could unlock support. | Unfinished/nonnumeric answers do not count as attempts. Two meaningful unsuccessful submissions still lead to a changed representation and supported progress. | student_3; learning_1; ux_3 |
| Interpretable charts | Scales and eligibility depended too much on color or implicit labels. | Common UK percentage scale, directly labeled values, Israel 0–6% scale, textual eligibility and all 40 lists. | graphics_2; ux_2 |
| Truthful interaction state | Answer edits could leave old success feedback; failed saves could retain a saved assurance. | Live validation, keyboard focus restoration, updated check state and immediate visible save-failure feedback. | student_2; ux_2; ux_3 |
| Recovery and earlier work | Restore immediately replaced the open notebook; malformed state and older exercises needed care. | Restore confirmation downloads current work first. Invalid state is normalized, unreadable originals remain recoverable, and legacy question meanings/prose/completion are preserved. | ux_1; ux_3; faculty_2 |
| Institutional coherence | The final design could mix a single presidency with an assembly without acknowledging different objects. | Students specify an assembly, presidency, or separate rules for each, then state what can and cannot transfer across cases. | faculty_1; learning_3 |
| Case care and art | Visual interest was concentrated at the opening; Liberia had weaker visual standing and Māori shorthand was ambiguous. | Four coordinated conceptual studies recur compactly, while real photos remain captioned evidence. Māori Party and electorate context are distinguished; the Liberia campaign photograph is labeled accurately. | faculty_3; graphics_1; graphics_3 |
What the discussion changed
| Proposal challenged | Resolution |
|---|
| Add a separate compulsory observation or reflection field to every lab. | Rejected. Students explain the changed consequence and evidence-linked revision in the existing short brief. The writing load stays focused. |
| Add long art bands, extra galleries or illustrated worked answers before the new-case attempt. | Rejected. Compact conceptual art carries the case identity; live charts remain exact. Worked interpretations follow the initial application. |
| Treat a completed portfolio or corrected check as proof of independent mastery. | Rejected. Preserve response and support provenance, and have the instructor assess argument quality. New Zealand provides bounded near-transfer with supplied rules. |
| Make old completed notebooks satisfy the new questions retrospectively. | Rejected. Preserve old answers under their original question edition and keep earlier prose and completion intact. Missing historical provenance is labeled unrecorded. |
| Use more difficult language, a longer essay, a countdown or a preferred-reform score to make the work harder. | Rejected. The challenge comes from applying a mechanism, comparing evidence, judging a trade-off and limiting an inference. |
Original Rule Studies
Four coordinated paper-construction illustrations give the route a stronger visual identity. These are original conceptual images generated with AI, not photographs of historical events or quantitative diagrams. The historical photographs retain their dates, credits and licenses.
United Kingdom · separate local contests
Israel · an eligibility boundary
Liberia · two separate fresh ballots
New Zealand · pathways into one overall allocationSkills and the evidence of learning
| Skill | Observable work |
|---|
| Political data literacy | Distinguishes national shares, local victories, valid ballots, eligibility and seats. |
| Institutional and quantitative reasoning | Connects a rule to a figure, computes a boundary/change and interprets it. |
| Evidence evaluation | Explains why second place is not a margin, and why net vote changes do not identify individual switchers. |
| Model and causal discipline | Names fixed inputs, separates fresh historical ballots from a fixed-vote replay, and identifies a possible behavioral response. |
| Comparison and near-transfer | Applies the supplied MMP rule to raw records and a labeled compensation model; identifies the office being designed. |
| Normative judgment and revision | Defends a representational priority, accepts a cost, and confirms or revises a first explanation using evidence. |
| Collaboration and concise argument | Partners alternate explaining and checking while each student retains an individual notebook and conclusion. |
A workable instructor plan
Plan for 75 minutes, or divide the route across two meetings. This is a workload estimate to pilot, not a measured student completion time. Students see no countdown.
| Part | Minutes |
|---|
| Launch and representation priorities | 5 |
| UK investigation | 12 |
| Israel investigation | 12 |
| Liberia investigation | 12 |
| Cross-case discussion | 6 |
| New Zealand application | 13 |
| Final comparison, reflection and export | 15 |
Verification and its limits
- 15 calculation/record tests pass: denominators, inclusive thresholds, fixed versus expanding vote pools, full vote totals, benchmark arithmetic, runoff changes and MMP totals.
- 22 behavioral regression tests pass: meaningful attempts, answer/help snapshots, new application input, edited-answer state, preserved filing, bookmarks, legacy restoration, malformed imports, recovery, saving, comparative target, exports, print comparison content and bounded history.
- Browser checks exercised actual navigation, model changes, keyboard focus restoration, new NZ submission and filing, notebook layout and JSON/TXT downloads. A 390-pixel iframe checks responsive CSS; it is not a physical-phone test.
- The manual was rendered to nine page images and visually checked. The standalone edition embeds the data, images and instructor downloads, so the core investigation does not depend on external archives.
The source audit attempted all 33 unique product URLs: 14 retrieved, 5 verified redirects, 2 archives with known template defects and 12 blocked or otherwise unverified retrievals. No actual 404 was found among the product URLs. All five underlying photo resources were verified. Access-blocked archives are not represented as successfully retrieved; the supplied tables and rule explanations remain available in the app.
External source audit
# External link audit
Checked 2026-10-30T07:18:19.383867+00:00. Read only the current product files; used web retrieval, not the shared browser.
**No actual 404 was found among the 33 product URLs.** All exact URLs were attempted. Some primary services block this retrieval environment; those outcomes are not reported as definitively broken. All five underlying photograph resources were retrieved through a canonical original-image path or creator-page link, although the exact tracking-query forms failed.
## Summary
| Classification | Product URLs |
|---|---:|
| verified_retrieval | 14 |
| blocked_unverifiable | 12 |
| known_archive_template_defect | 2 |
| verified_redirect | 5 |
| actual_404 | 0 |
Classifications are per exact URL. The two known NEC template defects also had direct 403 responses. Five metadata original-JPEG URLs are conservatively classified blocked because their exact tracking-query form failed, despite successful retrieval of the same image resources in canonical forms. Commons redirects are harmless URL normalization; the CC deed adds its canonical trailing slash.
## Corrections and recommendations
- Both root replacements matched actual data keys: Israel `coreCases[1].sources[1]` is the new CEC English guide and retrieved as a five-page PDF; Liberia `coreCases[2].sources[5]` is the dated NEC declaration and its primary indexed text is available.
- An initial inspection found six Liberia URLs but only five display labels. Root was notified and added the dated sixth label during this audit; the final inspected source has six URLs and six labels. This display defect is resolved.
- Retain the Knesset links as further reading. Their redirect explicitly states geographic inaccessibility. The existing CEC PDF supplies an accessible primary source for the core threshold/allocation rule.
- Retain the NEC archive caveat. The runoff archive contains correct candidate counts beneath a 2011 heading and impossible 132.15% processing. Do not import its template turnout/progress labels. The new dated declaration is a useful provenance anchor.
- An optional accessible primary fallback is the [ECOWAS release of 8 November 2023](https://www.ecowas.int/ecowas-deploys-long-term-election-observers-for-the-2023-presidential-election-runoff-in-liberia/). It directly corroborates the two finalists’ first-round counts/shares and 14 November runoff date; it does not replace full runoff totals.
- The [ACE law mirror landing page](https://aceproject.org/ero-en/regions/africa/LR/liberia-amended-electoral-laws-2014/view) retrieves, but its PDF timed out. Label it as a mirror if added; do not claim that the full mirrored law was checked.
- Keep the EU image permission link. EUR-Lex returns an anti-bot challenge here, including CELEX HTML/PDF variants; the official decision is indexed and the Commons creator page identifies the permission. No tested direct alternative proved more accessible.
- Do not add the Carter Center search-indexed candidate `/resources/pdfs/news/peace_publications/election_reports/liberia-final-2023.pdf`: it returned an actual 404. It is not present in this product and is excluded from product totals.
## Complete product inventory
Exact URLs, all source locations, retrieval reference IDs, file fingerprints and supplementary tests are in `link_audit.json`. Short link labels below keep long archive/query URLs readable.
| ID | Source and location | Classification | Evidence / action |
|---|---|---|---|
| L01 | [Commons national results and data](https://commonslibrary.parliament.uk/research-briefings/cbp-10009/) — `data.json:uk2024.sources[0]` | verified_retrieval | Correct 2024 results page, with official data downloads. |
| L02 | [Commons finishing positions](https://commonslibrary.parliament.uk/research-briefings/cbp-11175/) — `data.json:uk2024.sources[1]` | verified_retrieval | Correct Reform/Green analysis and second-place figures. |
| L03 | [Clacton official result](https://members.parliament.uk/constituency/3989/election/422) — `data.json:uk2024.sources[2]` | verified_retrieval | 4 July 2024, Nigel Farage 21,225. |
| L04 | [Woking official result](https://members.parliament.uk/constituency/4407/election/422) — `data.json:uk2024.sources[3]` | verified_retrieval | 4 July 2024, Will Forster 24,019; Reform 4,888. |
| L05 | [Barnsley Council result](https://www.barnsley.gov.uk/services/voting-and-elections/election-results/uk-parliamentary-general-election-4-july-2024/) — `data.json:uk2024.sources[4]` | verified_retrieval | Correct 2024 candidate table. |
| L06 | [CEC final results](https://votes25.bechirot.gov.il/nationalresults) — `data.json:israel2022.sources[0]` | verified_retrieval | Correct election date and final official 2022 counts. |
| L07 | [CEC 2022 English rules guide](https://www.gov.il/BlobFolder/guide/knesset25-elections-info/he/info-pages_english.pdf) — `data.json:israel2022.sources[1]` | verified_retrieval | Replacement URL is present at sources[1] and retrieves; threshold and Bader-Ofer appear on PDF page 5. |
| L08 | [Knesset threshold history](https://main.knesset.gov.il/EN/About/Lexicon/Pages/ElectoralThreshold.aspx) — `data.json:israel2022.sources[2]` | blocked_unverifiable | Explicit message: temporarily inaccessible from this location. Indexed primary content corroborates the page; not a 404. |
| L09 | [Knesset seat allocation](https://main.knesset.gov.il/EN/About/Lexicon/pages/seats.aspx) — `data.json:israel2022.sources[3]` | blocked_unverifiable | Explicit geographic access block; indexed primary allocation explanation exists. Not a 404. |
| L10 | [NEC first-round record](https://necliberia.org/results/president.php?4df8f4a95b9ccaeffba51d2193fe766d30fe57c666ac68e0b618687f8a71b989=NDQzNw%253D%253D) — `data.json:liberia2023.sources[0]` | known_archive_template_defect | Correct candidate table is indexed, but current dates and archive labels are stale/inconsistent. Treat totals as corroborated against dated records; do not use template turnout/progress labels. |
| L11 | [NEC runoff record](https://results.necliberia.org/president2.php?4df8f4a95b9ccaeffba51d2193fe766d30fe57c666ac68e0b618687f8a71b989=NDQzNw%3D%3D) — `data.json:liberia2023.sources[1]` | known_archive_template_defect | Indexed candidate counts are correct; template says 2011 and 132.15% processing against an old polling-place denominator. This is a known content defect, not proof that the candidate counts are wrong. |
| L12 | [Liberia election law](https://necliberia.org/doc_download/Final%20Amended%20Elections%20Law.pdf) — `data.json:liberia2023.sources[2]` | blocked_unverifiable | Direct law PDF could not be retrieved here. An ACE landing page identifies a mirror of the 2014 amended primary law; its binary download timed out. |
| L13 | [AU observer final report](https://papsrepository.africanunion.org/bitstreams/d248c1cf-fff9-4e97-98cf-0b1dbe2ce2b8/download) — `data.json:liberia2023.sources[3]` | blocked_unverifiable | Primary report is indexed with title/content and corroborating runoff table, but full direct retrieval remains blocked. |
| L14 | [EU final-report release](https://www.eeas.europa.eu/sites/default/files/documents/2024/Press%20Release%20EU%20EOM%20Liberia%202023%20Final%20Report%20240305.pdf) — `data.json:liberia2023.sources[4]` | verified_retrieval | Correctly labeled as release rather than the full report; dated 5 March 2024. |
| L15 | [Dated NEC declaration, 24 October 2023](https://www.necliberia.org/pg_img/Chair%20Daily%20Press%20Briefing%20Note_102423.pdf) — `data.json:liberia2023.sources[5]` | blocked_unverifiable | New sources[5] is present. Indexed primary text confirms finalists, shares, valid-vote majority rule and 14 November runoff announcement. |
| L16 | [Final amended NZ2020 result](https://archive.electionresults.govt.nz/electionresults_2020/) — `data.json:nz2020.sources[0]` | verified_retrieval | Correct final archive and 2,886,420 valid party votes. |
| L17 | [Party-vote percentages](https://archive.electionresults.govt.nz/electionresults_2020/statistics/percentage-votes-for-registered-parties.html) — `data.json:nz2020.sources[1]` | verified_retrieval | Correct final archived table. |
| L18 | [Votes by electorate](https://archive.electionresults.govt.nz/electionresults_2020/statistics/votes-for-registered-parties-by-electorate.html) — `data.json:nz2020.sources[2]` | verified_retrieval | Correct final archived table. |
| L19 | [MMP explanation](https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/what-is-mmp) — `data.json:nz2020.sources[3]` | verified_retrieval | Correct Electoral Commission explanation. |
| L20 | [How MPs are elected](https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/how-are-mps-elected) — `data.json:nz2020.sources[4]` | verified_retrieval | Correct Electoral Commission explanation. |
| L21 | [uk2024 creator file page](https://commons.wikimedia.org/wiki/File:Brookfield_Primary_School_as_a_polling_station.jpg) — `photos.json:uk2024.page_url` | verified_redirect | Creator/date/license match metadata. |
| L22 | [uk2024 original JPEG](https://upload.wikimedia.org/wikipedia/commons/2/2e/Brookfield_Primary_School_as_a_polling_station.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original) — `photos.json:uk2024.original_url` | blocked_unverifiable | Underlying image resource was retrieved through the creator-page Original file link or the same bare upload path. Original URLs are metadata provenance; the app serves the local JPEG. |
| L23 | [CC BY-SA 4.0 deed](https://creativecommons.org/licenses/by-sa/4.0) — `photos.json:uk2024.license_url; photos.json:israel2022.license_url; photos.json:nz2020.license_url; photos.json:nz2020_2.license_url` | verified_redirect | Canonical trailing-slash normalization; correct deed. |
| L24 | [israel2022 creator file page](https://commons.wikimedia.org/wiki/File:%D7%A4%D7%AA%D7%A7%D7%99_%D7%91%D7%97%D7%99%D7%A8%D7%95%D7%AA_%D7%91%D7%A7%D7%9C%D7%A4%D7%99_%D7%91%D7%92%D7%91%D7%A2%D7%AA_%D7%A0%D7%A9%D7%A8_%D7%91%D7%91%D7%97%D7%99%D7%A8%D7%95%D7%AA_%D7%9C%D7%9B%D7%A0%D7%A1%D7%AA_%D7%94-25.jpg) — `photos.json:israel2022.page_url` | blocked_unverifiable | Decoded and uselang retries also failed. The same original image path was retrieved without tracking parameters, and the file is indexed in its Commons election category. |
| L25 | [israel2022 original JPEG](https://upload.wikimedia.org/wikipedia/commons/3/35/%D7%A4%D7%AA%D7%A7%D7%99_%D7%91%D7%97%D7%99%D7%A8%D7%95%D7%AA_%D7%91%D7%A7%D7%9C%D7%A4%D7%99_%D7%91%D7%92%D7%91%D7%A2%D7%AA_%D7%A0%D7%A9%D7%A8_%D7%91%D7%91%D7%97%D7%99%D7%A8%D7%95%D7%AA_%D7%9C%D7%9B%D7%A0%D7%A1%D7%AA_%D7%94-25.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original) — `photos.json:israel2022.original_url` | blocked_unverifiable | Underlying image resource was retrieved through the creator-page Original file link or the same bare upload path. Original URLs are metadata provenance; the app serves the local JPEG. |
| L26 | [liberia2023 creator file page](https://commons.wikimedia.org/wiki/File:EU_observers_meet_Prince_Johnson_02.jpg) — `photos.json:liberia2023.page_url` | verified_redirect | EU mission author, 9 November 2023 meeting description and reuse attribution match metadata. |
| L27 | [liberia2023 original JPEG](https://upload.wikimedia.org/wikipedia/commons/6/68/EU_observers_meet_Prince_Johnson_02.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original) — `photos.json:liberia2023.original_url` | blocked_unverifiable | Underlying image resource was retrieved through the creator-page Original file link or the same bare upload path. Original URLs are metadata provenance; the app serves the local JPEG. |
| L28 | [EU Commission reuse decision](https://eur-lex.europa.eu/eli/dec/2011/833/oj) — `photos.json:liberia2023.license_url` | blocked_unverifiable | Official legal document is indexed, and the Commons creator record explicitly identifies this reuse permission. HTML and PDF CELEX variants also received anti-bot challenges. Not a 404. |
| L29 | [nz2020 creator file page](https://commons.wikimedia.org/wiki/File:Advance_voting_booth_in_Wellington_(1).jpg) — `photos.json:nz2020.page_url` | verified_redirect | Kiwichris, 9 October 2020, Manners Street, CC BY-SA 4.0 verified. |
| L30 | [nz2020 original JPEG](https://upload.wikimedia.org/wikipedia/commons/5/53/Advance_voting_booth_in_Wellington_%281%29.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original) — `photos.json:nz2020.original_url` | blocked_unverifiable | Underlying image resource was retrieved through the creator-page Original file link or the same bare upload path. Original URLs are metadata provenance; the app serves the local JPEG. |
| L31 | [nz2020_2 creator file page](https://commons.wikimedia.org/wiki/File:Advance_voting_booth_in_Wellington_(3).jpg) — `photos.json:nz2020_2.page_url` | verified_redirect | Kiwichris, 13 October 2020, Willis Street, CC BY-SA 4.0 verified. |
| L32 | [nz2020_2 original JPEG](https://upload.wikimedia.org/wikipedia/commons/8/84/Advance_voting_booth_in_Wellington_%283%29.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original) — `photos.json:nz2020_2.original_url` | blocked_unverifiable | Underlying image resource was retrieved through the creator-page Original file link or the same bare upload path. Original URLs are metadata provenance; the app serves the local JPEG. |
| L33 | [Official Waiariki 2020 result](https://archive.electionresults.govt.nz/electionresults_2020/electorate-details-72.html) — `app.mjs:record(nz2020) context link` | verified_retrieval | Correct Waiariki archived official result. |
## Limits
Web-tool retrieval is not a universal browser availability test. “Verified” means relevant content was retrieved during this audit, not guaranteed future availability. Search-index corroboration is recorded separately from direct retrieval. A geographic block, 403, JavaScript challenge, binary/tool limitation, or timeout does not establish a missing page. The encoded Israel Commons file page remained directly unverified; its original photograph did retrieve and its file is indexed in the correct Commons election category. No product source file was edited.
The independent reviews and discussion
The records below retain disagreements and concrete anchors, including defects found and repaired during the final verification. Reviewer identities are analytical perspectives simulated by AI.
Student · novice reader
Blind first pass
# After the Count — independent simulated student review 1
This is a source-based AI simulation of a first-year community-college student with no electoral-system knowledge, average reading confidence, and a willingness to think seriously. It is not a report of human participants, observed browser behavior, or measured completion time. I inspected the supplied student-facing strings, their rendering order, and navigation/gating code in `baseline/dist`; I did not use external election knowledge, prior reviews, or the instructor documents. Answers below are attempts grounded in the content the student would see. Code anchors identify the supplied snapshot.
## Overall judgment
I can work out the central mechanisms and complete a defensible final comparison from this content. The strongest learning is discovering that similar-looking numbers answer different questions: national votes versus local wins, a valid ballot versus an eligible list, and a net change versus individual voter movements. The largest avoidable burden comes when I must retrieve and combine my evidence: repeated written briefs, one-setting-at-a-time displays, and a comparative task placed after the entire notebook. A separate completion trap occurs when reviewing another lab setting makes an already filed brief become unfinished.
## My path and attempted answers
### Launch and assignment
I would use **Open the archive**, then read **Build a case. Then change the rule.** I understand that there are four countries and a repeated sequence. The distinction between a historical record and a counting comparison is a useful warning that the new result is conditional on holding votes fixed. I choose **National proportionality** and **Local representation** as starting priorities, interpreting them as “seats should roughly match party support” and “someone represents my area.” I am inferring the first definition from ordinary language; it is not explained beside this initial choice. **Strategic response** has a helpful example sentence, although “candidate entry” remains new vocabulary. This does not block me because the priorities can change. Anchors: `app.mjs:56–57`, especially “Choose up to two priorities to begin with”; the route and phases are defined at `app.mjs:18–19`.
The launch also offers all four case cards. If I use the UK card instead of the main button, I go straight to First thought and miss the assignment, priorities, and historical/model distinction. That is a plausible entry route because the cards are labeled “Open investigation.” Anchors: `app.mjs:56`, click handlers `app.mjs:118–120`.
### United Kingdom
**First thought:** I select **How often each party finished first locally**. My optional hunch is: “Maybe Reform had lots of votes in places where another party got more.” The context tells me these are separate local contests. I do not yet know what an MP or constituency is, but the next screen supplies both definitions. Anchors: teaching text `app.mjs:13`, first-thought layout `app.mjs:70`.
**Evidence/check:** I read the rule, the three constituency rows, and then open **R3 · What does second place establish?** because the second question names Record 3. My answers are:
1. **Count its candidates’ local first places.** A constituency elects one MP, so first places, rather than a national multiplication, produce seats.
2. **98 second places; margins are needed to assess “narrowly.”** Barnsley North’s displayed margin of 7,811 demonstrates why second place does not itself mean close.
The R2 sentence about Reform’s Woking and Barnsley votes adding nationally without producing either seat is the point where the national/local puzzle becomes intelligible. This is a rewarding discovery. The selected R2 table does not give all candidates or total valid votes, so I can establish the winner but cannot independently test “below half” from it. That limitation does not prevent either check. Anchors: `app.mjs:72`, checks `app.mjs:79`, definitions/rule presentation `app.mjs:85` and `data.json:coreCases[0].rule`.
**Lab:** I compare **Observed local results** with **National proportional benchmark**. I can state that Reform has 5 actual seats and approximately 92.90 fractional benchmark seats; Labour has 411 actual versus about 219.05 benchmark seats. The “fractional” label matters: I should not claim that a real reform awards 92.90 MPs. The benchmark view still displays each party’s *actual* seat percentage beneath its new benchmark number and bars. It is labeled, but I need to keep track of two result systems at once. Anchors: `app.mjs:87`, stored summary `app.mjs:97`.
**Attempted brief:** Recommendation: **Keep local MPs and explore a compensatory list tier**. Record: **R1 National vote shares and actual seats**.
> I would explore adding compensatory list seats while keeping local MPs. Reform received 14.3% of votes but five seats, while the fixed-vote national benchmark is about 92.90 seats, so I value bringing party representation closer to support. A cost is deciding how list MPs are chosen and who voters hold accountable; this lab does not calculate the exact outcome of the mixed design I recommend.
**Next evidence:** “Records of how constituents contact local and list MPs in a mixed system could help test whether responsibility becomes unclear.”
The brief supplies a one-sentence definition of **compensatory list tier**, which makes a provisional recommendation possible. I would still be unsure how the tier is selected or how its size changes the parliament. The pressure-test prompt makes those legitimate design questions rather than making my answer obviously wrong. Anchors: `app.mjs:13`, `app.mjs:93–94`. Filing moves directly to Israel (`app.mjs:110`).
### Israel
**First thought:** **Which lists qualified for seat allocation.** The context already separates ballot validity from qualification.
**Check attempt:** For the whole-vote cutoff, my plausible first calculation is 154,854.115 and I might enter **154854**, using ordinary rounding. I answer the second question **Its valid-vote share was below the list-eligibility threshold**. The specific repair says to round up because the count must reach the threshold. I can then enter **154855**. This is useful difficulty, with an actionable repair; it does not need to be removed. Anchors: `app.mjs:14`, `app.mjs:73`, `app.mjs:80`, check feedback `app.mjs:107`.
**Lab:** At 3.25%, 10 lists qualify and 417,400 valid votes, 8.76%, support nonqualifying lists. At 2%, 12 lists qualify and that excluded share is 2.69% (127,990 votes). These are eligibility outcomes, not invented seat totals. I would open the qualifying-list detail to identify Meretz and Balad. Anchors: `app.mjs:88`; values produced by the supplied `thresholdAnalysis`.
**Attempted brief:** **Lower the threshold to 2%**, citing **R1 Official list votes and seats**.
> I would lower the threshold to 2% to give more valid votes access to representation. With recorded votes fixed, 12 lists qualify instead of 10, and the excluded vote share falls from 8.76% to 2.69%. I accept a concern about bargaining among more parties, but these totals do not prove that governments would become unstable.
**Next evidence:** “Records of coalition negotiations in elections with different numbers of represented parties could test the bargaining concern.”
I understand **fragmentation** from the brief’s definition. **Coalition bargaining** is less concrete: I infer that parties negotiate to govern together, but the app does not directly explain it. Anchors: `app.mjs:14`, `app.mjs:88`, `app.mjs:93`.
### Liberia
**First thought:** **A fresh ballot between the top two after neither won a majority.**
**Check answers:** **17520** for 814,481 minus 796,961; **The net gain only; individual movements need further evidence**. R3’s smaller participating vote pool makes the second answer more than a warning against arithmetic: I can see why the same people cannot simply be assumed. Anchors: `app.mjs:15`, `app.mjs:74`, `app.mjs:81`.
**Lab/brief:** I compare both standards, recommend **Majority with a runoff**, and attach **R2 Actual runoff result**.
> I would require a majority runoff. With the recorded October votes, one-round plurality selects Weah at 43.83%, while the actual second ballot selected Boakai with 50.64% of its valid votes. I value a majority among those valid participating votes, accepting another voting day and uncertainty about the people who did not participate.
**Next evidence:** “A survey following the same people across both rounds could test who switched, stopped voting, or joined.”
The lab labels the plurality scenario and the historical runoff differently. That helps me avoid treating November as a mechanical redistribution of October ballots. Anchors: `app.mjs:89`.
### New Zealand transfer
**First thought:** **Whether a party won a local electorate.**
**Check answers:** **An electorate victory opened Māori’s pathway into proportional allocation**; **10, because the list seats top up the total**. The supplied 5% **OR** an electorate win rule resolves the initial 1.17%/2.60% puzzle. The Green 1 + 9 = 10 flow is clear. Anchors: `app.mjs:16`, `app.mjs:75`, `app.mjs:82`, `data.json:transferCase.rule`.
**Lab/brief:** I try both settings, recommend **Retain the electorate pathway into proportional allocation**, and attach **R3 The 5% or electorate qualification rule**.
> I would retain the electorate pathway because a local victory should have some effect on a party’s representation. Māori had 1.17% and one electorate win, qualifying for an allocation of two total seats; New Zealand First had 2.60% but neither qualifying route and no seats. Like the UK case, where votes land matters, but I accept that this makes access to list seats unequal for parties judged only by national vote share.
**Next evidence:** “Evidence about whether the pathway helps voters gain representation they could not obtain through the national threshold would help me judge its value.”
The explicit statement that Māori’s directly elected MP keeps the local seat in both settings prevents an easy wrong inference. This is worth preserving. The transfer checks themselves are strongly answered by the immediately preceding explanation; my brief is where the transfer reasoning is actually tested. Anchors: `app.mjs:90`, `app.mjs:93`.
### Final comparative task
After filing New Zealand, I reach **Bring the cases together**. Download/print controls appear first, followed by four complete notebook entries, then the actual comparative form. I could reasonably read “four of four briefs filed” and export before discovering that another argument is required. The page offers no direct jump to the comparative form. Anchors: `app.mjs:100`, transition `app.mjs:110`.
I choose **National proportionality**, comparing **UK** and **New Zealand**. My attempted response is:
> I would explore combining local MPs with party-list compensation, aiming for closer national vote-seat matching. UK local plurality gave Reform five seats on 14.3% of votes, whereas the lab’s proportional benchmark is about 92.90 seats. New Zealand’s Green result, one electorate seat plus nine list seats for ten total, shows how local and list representation can form one overall allocation. I accept that list selection and eligibility rules add choices to justify, especially when Māori qualifies through a local win and New Zealand First does not. The UK benchmark holds recorded votes and 650 seats fixed, while the New Zealand lab holds 2020 votes and local wins fixed; under a changed system, parties could target different places and voters could choose differently. I am recommending a design direction, not claiming the UK would reproduce these exact model results.
**Evidence for reconsideration:** “I would want evidence that constituents know which representatives to approach, plus an analysis of which votes the proposed eligibility rules exclude. Substantial exclusion or unclear responsibility could make me change the balance between national matching and local access.”
This is achievable, but the “short paragraph” asks for a mechanism, two numerical examples, a design, a trade-off, a fixed assumption, and a strategic response, followed by another evidence proposal. That is a large synthesis step after four similar briefs. My final answer is more demanding than the multiple-choice transfer checks. Anchors: `app.mjs:100`, completion validation `app.mjs:114`.
## Severity-ranked issues and five improvements
Severity here describes the plausible consequence for this simulated learner, not an observed frequency.
1. **High — Make the final task visibly unfinished and directly reachable.** Put a **Write comparative brief** control and a distinct final-task status near the top of the notebook. Provide selected-case evidence beside, or immediately above, its writing fields. The current long sequence makes export look like the next final action and requires scrolling back to retrieve material. Preserve the complete notebook as the submission artifact. Anchors: `app.mjs:99–100`.
2. **High — Let evidence review preserve completion status.** Changing a lab setting currently sets `c.filed=false` and `S.final.complete=false` even when I only revisit the display to check a number (`app.mjs:126`). Final completion then requires all four briefs to be filed again (`app.mjs:114`). A student retrieving evidence for the final task can unknowingly undo progress. Separate the currently viewed setting from the filed brief’s recorded evidence, or clearly require an explicit update before invalidating a filed brief. This is a code-derived risk, not a browser-tested event.
3. **Moderate — Explain goal vocabulary at its first use, and retain it at the final choice.** Add brief in-place definitions for **national proportionality**, **list** as a group of candidates, **coalition**, and **candidate entry**. Keep the existing plurality, constituency, majority, and fragmentation definitions. These additions would let me reason about the political trade-off rather than guess what a label means. Anchors: opening priorities `app.mjs:18,57`; strategic response `app.mjs:57`; Israel background/costs `app.mjs:14`; final goals `app.mjs:100`.
4. **Moderate — Keep the comparison available while writing instead of showing mainly the last setting.** Automatically show both tested settings in each brief with their key figure and model limit; use the same compact comparison in the final selected-case evidence. The existing **View the figures while you write** emphasizes historical tables plus only the last lab summary (`app.mjs:93,97`). The notebook has **All tested comparisons**, but they are separately collapsed in each entry (`app.mjs:99`). For UK, group benchmark numbers and historical numbers clearly so the actual-seat percentage underneath the benchmark does not need constant mental relabeling (`app.mjs:87`). This reduces retrieval work while preserving the distinction between a benchmark and a full reform design.
5. **Moderate — Make the demanding writing requirements predictable and cumulative.** At launch, state that there are four short case explanations, four evidence-to-seek statements, and one final comparison with reconsideration—ten required prose fields, plus optional hunches. Show the final synthesis criteria before the first brief. At the final task, allow students to bring forward and revise their two selected case claims and one earlier evidence proposal, rather than starting all the text again. The repeated **next evidence** requirement risks becoming formulaic by the fourth case, even though its intellectual purpose is good. Anchors: briefing `app.mjs:57`; repeated fields `app.mjs:93`; final fields `app.mjs:100`; filing requirements `app.mjs:110`.
## Strengths to preserve
- The surprising numerical openings make me want an explanation without requiring prior country knowledge (`app.mjs:13–16,70`).
- The rule definitions and selected records support the check answers; the UK national/local distinction and Liberia aggregate/individual distinction provide substantive discoveries (`app.mjs:72–85`).
- Repair feedback identifies the operation or inference to reconsider. The whole-vote cutoff repair is useful, and a worked representation after two unsuccessful checks supports progress without pretending the answer was correct (`app.mjs:84–85,107–109`).
- The labs state what is fixed and limit their claims. In particular, Israel does not fabricate seats and New Zealand preserves the direct local winner (`app.mjs:87–90`).
- Recommendations are political choices with explicit costs. The app asks me to defend and potentially revise a claim, rather than find the preferred political answer (`app.mjs:93–94,100`).
- The notebook preserves individual reasoning and offers explicit submission/export instructions; the final comparison can be completed from the supplied records (`app.mjs:99–100,111–114`).
The concept load should remain serious. The improvements above concern access to definitions, continuity of evidence, and completion clarity; they do not require removing calculation, uncertainty, comparison, or trade-offs.
Cross-review discussion
# Student 1 — second-phase discussion
I agree with `ux_1.md`, findings 1 and 3: reviewing evidence should preserve a filed brief and return me to my current writing. From my novice perspective, losing completion after checking another setting is especially confusing because exploration is exactly what the assignment requests. Put the comparative form first, retain per-case stages, and provide evidence links that return to that form. These changes protect thinking time without reducing the argument’s demands.
I challenge the workload implied by calling the replacement NZ activity “one compact” check (`learning_3.md`, “One compact stronger NZ transfer check”). It contains an arithmetic answer, six dropdown decisions, an explanation, and a later revision. That is substantially more response work than the current two checks. I support the stronger application: calculating ACT’s list top-up and preserving Māori’s direct winner test useful distinctions. My concern is adding a second explanation beside an already required NZ brief.
Resolve the tradeoff by replacing the current NZ checks with the numeric response and three-row matrix, preserving the first submitted answers and revealing explanatory support afterward. Put “Which earlier distinction helped, and what is different here?” into the existing NZ brief explanation prompt. Let that same paragraph state whether the prediction was confirmed or changed, using evidence. Do not add another prose field or require an artificial change of mind. Keep definitions visible before the attempt. Docket proposals 4–5 can then strengthen transfer while retaining the existing writing budget and a supported route forward.
Student · quantitative confidence and collaboration
Blind first pass
# Student 2: blind AI simulated review
This is an AI simulation, not a human participant or empirical classroom finding. I used only the six supplied files in `baseline/dist`, did not open a browser or other reviews, and did not measure task times. I traced the interface from source and checked the arithmetic against the supplied election module. Phone layout observations below are source-based expectations, not rendered-device findings.
Perspective: a community-college student who contributes well to discussion, knows only a little about these countries, worries about getting calculations wrong, and discusses the work with a partner while keeping an individual notebook. I would choose access for smaller parties and majority support as opening priorities.
## Attempts and work I would submit
### Israel
- First thought: **Which lists qualified for seat allocation**. A valid ballot and an eligible party list are different things.
- Paper calculation: `4,794,593 − 29,851 = 4,764,742` valid votes; `4,764,742 × 3.25 ÷ 100 = 154,854.115`.
- Deliberately tried plausible initial entry **154,854.115**, with the correct second answer, **Its valid-vote share was below the list-eligibility threshold**. Source checking rejects the decimal. The exact repair says: “Use 4,764,742 × 3.25 ÷ 100. Qualification requires at least the threshold, so round the fractional result up.” I would revise to **154,855**, which the parser accepts with the comma. The rounding is a substantive part of this question and should stay.
- Interpretation: Meretz had 150,793 accepted votes, fewer than 154,855. Its zero seats do not mean those ballots were invalid. Its fixed-total shortfall is `154,855 − 150,793 = 4,062`; this is not automatically the number of entirely new voters needed.
Calculated lab comparisons from the supplied complete dataset:
| Threshold | Minimum whole votes | Qualifying lists | Valid votes for nonqualifying lists |
| --- | ---: | ---: | ---: |
| 2% | 95,295 | 12 | 127,990 (2.69%) |
| 3.25% | 154,855 | 10 | 417,400 (8.76%) |
| 5% | 238,238 | 6 | 1,179,861 (24.76%) |
My brief, choosing **Lower the threshold to 2%**, attached to R1 official list votes: “With the recorded 2022 votes, a 2% threshold would qualify 12 lists instead of 10 and reduce votes for nonqualifying lists from 417,400 to 127,990. I value the extra access for Meretz and Balad, while accepting a more fragmented legislature. These counts do not establish whether forming a governing coalition would become harder.” Next evidence: “I would examine records of coalition negotiations, including the number of parties involved and how long agreement took, before treating extra qualifying lists as proof of instability.”
Anchors: `data.json:96–156`; `app.mjs:73,80,84,88,93`; `elections.mjs:49–52,75–100`.
### Liberia
- First thought: **A fresh ballot between the top two after neither won a majority**.
- Paper calculation: `814,481 − 796,961 = 17,520` net votes. I would enter **17,520**, which the parser accepts.
- I deliberately tested the tempting second answer that exactly 17,520 eliminated-candidate supporters switched. The exact correction is: “A net gain can combine voters arriving and leaving. A panel survey could investigate individuals’ choices.” I would revise to **The net gain only; individual movements need further evidence**.
- First-round majority would require `1,834,516 ÷ 2 + 1 = 917,259` votes. Weah’s 804,087 was first place, not a majority. The runoff had `1,608,395 − 1,834,516 = −226,121` valid votes. That changing pool reinforces why the totals cannot identify individual transfers.
My brief, choosing **Majority with a runoff**, attached to R2 actual runoff: “With the recorded October votes, plurality would select Weah at 43.83%; the actual fresh November ballot selected Boakai with 50.64% of that round’s valid votes. I value a second opportunity to choose between the finalists and a majority among valid participating votes. I accept another voting day and its participation and administrative costs, and I would not describe this as a majority of all eligible citizens.” Next evidence: “I would inspect participation records and surveys of the same voters across rounds to investigate who returned, switched or stopped voting.”
Anchors: `data.json:171–225`; `app.mjs:74,81,89,93`; `elections.mjs:186,205–220`.
## Ranked problems and fixes
1. **High: an edited answer can leave a success message and continuation control that no longer match the saved state.** After a passed check, changing either answer sets `checked=false` without refreshing the displayed feedback or next-button label. The old success message remains; after a first-attempt pass, clicking the apparently available lab continuation produces “Use the interpretation check first.” This would make me doubt whether I had lost my work or misunderstood the mathematics. Anchors: `app.mjs:85,107,109,147–149`. **Fix:** on answer change, replace the old feedback with “Answer changed—check again” and update the continuation control without rerendering the input or moving focus.
2. **High: the support record does not reliably describe support I have already seen.** Two failed checks automatically display a worked answer, including the exact numeric answer. If I copy or understand that answer and then pass, `supported` remains false, because it is set only when continuing while still incorrect. The notebook can show “Check passed” and export `worked-step support: false` despite the worked example having been displayed. This weakens individual accountability and makes help-use records hard to interpret. Anchors: `app.mjs:84–85,99,109,111`. **Fix:** separately record that a worked example was revealed, regardless of whether the student later passes; show neutral language such as “Passed after a worked example.” Do not treat using help as a political or academic penalty.
3. **Medium: I must carry two lab results in memory while writing on a phone.** “View the figures while you write” supplies the historical records and only the **last** lab setting. Both tested settings exist in the notebook’s “All tested comparisons,” so the evidence is available, but reaching it interrupts composing the brief. My Israel comparison needs 417,400 and 127,990 together. The source dropdown also asks for a historical record although the requested figure can come from the lab. Anchors: `app.mjs:93,97,99`. **Fix:** put the two tested comparison summaries beside the writing fields and explain how a lab-derived figure relates to the selected historical record. Keep the student responsible for interpreting the figures.
4. **Medium: help jumps from the same calculation hint to the complete answer, and can target the wrong problem.** If my numeric answer is correct but my voter-transfer interpretation is wrong, “Give me a hint” still displays `CHECKS[id][0].repair`, the calculation hint. After two unsuccessful checks the complete original answer appears automatically, even if I submitted blanks twice. Anchors: `app.mjs:84–85,107,124`. **Fix:** target the unanswered or incorrect item. Offer an operation/units scaffold first, then an optional analogous worked example. Preserve an accessible supported-progress route, while leaving the original inference for me to make.
5. **Medium: revisiting a country restarts its navigation at First thought.** Clicking a case tab always calls `goto('case',i,0)` rather than returning to that country’s last stage. When my partner wants to compare our Israel figures while I write Liberia, returning starts me above a photograph and prediction instead of the lab or brief. Anchors: `app.mjs:58,96,120`; phone stacking at `style.css:4`. **Fix:** remember the last stage per country and offer an explicit “Revisit first thought” link. This removes navigation work without reducing the assignment.
6. **Low: final-answer format and a few political terms need small, timely cues.** Numeric fields use a phone numeric keyboard and accept comma-formatted integers, which helps. But `154 855` and `154855 votes` both fail with the same mathematical repair; there is no “enter only the final number” cue. Fragmentation is defined where I write, but “coalition bargaining” is not. Anchors: `app.mjs:14,85,93,107`; `style.css:8`. **Fix:** add “Whole votes; enter just the number, commas optional” and a short tappable explanation of coalition bargaining. Keep the percentage operation and ceiling decision as student work.
## Strengths to preserve
- Specific, respectful repairs identify the mathematical or evidentiary distinction instead of marking the whole student wrong. Commas work in number entry, and the accepted-ballot/qualification and net-change/individual-flow definitions are strong (`app.mjs:73–85,107`).
- The labs repeatedly label what is held fixed and what is not calculated. Israel does not pretend eligibility gives exact seats; Liberia distinguishes a counterfactual rule applied to October from the actual November election (`app.mjs:88–89`).
- The writing task is concrete: a recommendation, attached record, two or three reasoned sentences, a cost, and one sentence naming potentially challenging evidence. The pressure-test question helps discussion without choosing my politics (`app.mjs:93–94`).
- Pair instructions ask for separate first choices, switching explainer/evidence-finder roles, and independent notebooks. Separate-device or paper-note guidance and the lack of automatic submission are stated plainly (`app.mjs:57,70,85,91,100,140`). I would keep this low-account-friction approach and add “write your own explanation after discussion” beside the brief fields.
Cross-review discussion
# Student 2 discussion
AI simulated student perspective; no human-participant finding.
I agree with `ux_2.md` issues 3–4 and docket 2: an edited answer must lose its old success message, and missing-work feedback must stay beside the relevant field. After calculating 154,855, a contradictory continuation message makes me question the mathematics. Keep the input, caret and figures in place; update the status without moving me unexpectedly.
I challenge adding a compulsory observation field under docket item 5. I already owe a recommendation, explanation, source and challenging evidence. Another box invites repeated sentences, when partners discuss and then write separately. Show both settings beside the explanation and ask: “Use a number from each setting; explain the consequence and what your first thought now gets right or needs to change.” Keep sentence counts flexible. This preserves accountable reasoning without another submission hurdle.
`faculty_1.md` F1 persuades me to replace Green’s addition check with compensation: entitlement 10, local winner 1, therefore list top-up 9. Supply the entitlement explicitly; I should interpret the rule rather than derive an unfamiliar allocation formula. For support, count two meaningful unsuccessful submissions, target the actual error, and offer the worked example deliberately. Record seeing help neutrally even if I subsequently pass.
For F2 and docket item 6, name the institution inside the existing final paragraph. Keep Israel–Liberia comparisons available, but require one sentence explaining why access to assembly seats and choosing one president are different design problems. Add no separate essay or word gate.
Student · exploratory and easily distracted
Blind first pass
# Student 3: independent simulated student review
Scope: only `review_round/baseline/dist`. This is an AI source-based simulation of a curious, distraction-prone undergraduate/community-college student, not an observed human session. No browser, measured timing, earlier reviews, or other review files were used. I inspected `app.mjs`, `data.json`, `elections.mjs`, `style.css`, and the standalone file's presence. A Node harness executed the actual application source with stub DOM/storage objects to verify checks and navigation; it did not measure visual usability.
## Simulated out-of-order trace and actual answers
I enter New Zealand from its case card because “1.17% earned two seats. 2.60% earned none” is a stronger immediate puzzle than a general assignment. I can go directly to Evidence & rule, leaving the first thought empty. I explore, open Notebook, return to investigations, and land in the UK rather than where I left off. I later revisit New Zealand after comparing the other mechanisms.
| Case | Answer attempted from supplied content | Source-execution result | Discovery available to this student model |
|---|---|---|---|
| UK | Q1: count local first places (option 1). Q2: 98 second places; margins needed for “narrowly” (option 2). | Both pass on the first submitted check. | The national/local mismatch is interesting. The benchmark changes Reform from 5 actual seats to 92.90 fractional benchmark seats, while Lib Dems move from 72 to 79.40. These are different counting comparisons, not forecasts. |
| Israel | `ceil(4,764,742 × .0325) = 154,855`. Meretz's valid share is below the eligibility threshold (option 2). | Both pass. | Moving 3.25% to 2% admits Meretz and Balad: 10 to 12 qualifying lists; nonqualifying valid votes fall from 417,400 to 127,990. Moving to 5% leaves 6 qualifying lists. This provides an actual policy tension without claiming stability follows automatically. |
| Liberia | `814,481 − 796,961 = 17,520`. Totals establish net gain, not individual movements (option 2). | Both pass. | Plurality would select Weah from the fixed October record at 43.83%; the historical fresh runoff selected Boakai at 50.64%. The smaller valid-vote pool makes the transfer misconception worth investigating. |
| New Zealand | Māori qualifies through its electorate win (option 1); Green has `1 + 9 = 10` seats (option 2). | Both pass. | Removing the electorate pathway changes Māori's list-allocation eligibility; its direct local MP remains. NZ First stays ineligible, and Green remains eligible. Exact alternative allocations are correctly left unmodeled. |
Check anchors: `app.mjs:78–85`; lab anchors: `app.mjs:87–90`. Calculations and eligibility outputs were also executed using `elections.mjs`. I would revise an initial “more votes should always mean more seats” explanation after the UK and NZ comparison: local wins determine UK seats, while NZ combines local wins, a national threshold, and an exception into a different allocation structure.
## Findings, ordered by consequence
### 1. High — The transfer check can be passed by the option pattern and immediate copying
Every initial prediction's plausible answer is the first choice (`app.mjs:13–16`). Every multiple-choice Q2 has its correct answer second; UK and NZ Q1 both have the correct answer first (`app.mjs:79–82`). The wrong NZ choices (“1.17% is greater than 2.60%,” guaranteed two list seats, counting an electorate twice) are substantially less plausible than the correct statement. The Green `1 + 9 = 10` check repeats the immediately visible worked flow (`app.mjs:75`). Returning after the other cases adds little difficulty: I can infer first/second without applying the combined rule to a new situation.
Revision: rotate answer positions and use credible mechanism errors. Keep the present NZ examples as instruction, then assess an explicitly hypothetical party with a new combination of party share and electorate wins. Ask separately whether its local winner keeps a seat and whether the party enters proportional allocation. Require one bounded comparison with UK local plurality or Israel's national threshold before the NZ brief. Preserve the distinction between direct seats and allocation eligibility; do not invent exact alternative seat totals.
### 2. High — Supported progress records clicks rather than a supported interpretation
Verified path: open NZ, leave both checks empty, click Check twice, continue with the worked step, toggle the second lab setting, select a recommendation and record, enter `a` into each prose field, and file. The resulting state has `prediction:''`, `answers:{}`, `attempts:2`, `checked:false`, `supported:true`, and `filed:true`. Anchors: `app.mjs:107–110`, phase shortcut at `121`, and `fileBrief`'s nonempty-field checks at `110`.
This is not an argument for auto-grading political prose or arbitrary minimum lengths: the product correctly says the instructor reviews argument quality (`app.mjs:100`, `104`). The problem is that the recovery path needs no learner interpretation at all, while “worked-step support” sounds like evidence of doing that work.
Revision: retain supportive progression, count an attempt only after a relevant answer is supplied, and make the worked step end with one short application to a different row or condition. Distinguish “support opened” from “supported application completed” in the notebook. An instructor can still assess the open explanation.
### 3. Medium — The labs have interesting consequences, but the student's action is mainly “visit two tabs”
The initial setting is automatically added to `tested` on entering the lab (`app.mjs:109`, `121`). One toggle then satisfies the two-setting requirement (`126–127`). Nothing records what I expected, what changed, or which comparison informed the brief. I can satisfy all labs without looking at a changed figure. This is especially thin in NZ, where only Māori's eligibility changes and the callout supplies the interpretation (`90–91`).
Revision: let me choose a party/claim to investigate and save one comparison observation, such as which eligibility outcome changed while local wins stayed fixed. Pin the two outputs together or attach the selected difference directly to the brief. Keep the existing model limits. Make the evidence action meaningful rather than adding more repeated instructions.
### 4. High — Return navigation does not preserve an out-of-order investigation
Only one global `phase` exists (`app.mjs:21`). Clicking any case always goes to phase 0 (`120`), and Notebook has no per-entry edit/resume action (`99–100`). “Return to investigations” chooses the earliest unfiled case at phase 0 (`131`), so returning after starting NZ lands in the UK. There is also a mismatched continue condition: the home label uses any event (`56`), while its handler resumes only if `investigation_started` exists (`118`). A student who starts through a case card can see “Continue your investigation” and get the assignment instead.
Revision: retain each case's last stage, provide “Resume New Zealand · Rule lab” plus an edit link in every notebook entry, and base the home Continue button on an actual saved location. Keep case order available without forcing a linear return route.
### 5. Medium — Curiosity after filing silently removes filed progress
Changing a lab setting clears `c.filed` and final completion (`app.mjs:126`). Editing a response also clears them (`147–149`), with no explicit case-level “draft changed; refile” message. The sidebar counts only filed briefs (`58`), and ordinary text input does not rerender it. A student can see a filed checkmark while typing, then find it gone after navigation. Revisiting to explore a second policy therefore appears to undo completed work.
Revision: preserve the last filed brief as a snapshot and mark new changes as a draft, with a visible “Update filed brief” status. Keep the filed count stable until the student replaces the snapshot. This would also let a student compare a revised argument with the previous version.
### 6. Medium — The notebook mixes saved work with untouched defaults
All four entries appear immediately, even for unvisited cases. Each displays a fully described “Last lab setting” from its default, alongside “Settings compared: —” and “Check in progress” (`app.mjs:20`, `97`, `99–100`). A distracted return visit makes it unclear which evidence I actually investigated. The comparison brief sits below all entries even before any work is filed.
Revision: label unopened entries “Not started,” suppress default results until the lab has been entered, and show compact progress summaries with a direct resume action. Expand the student's own notes and comparisons on demand. Bring the final comparative brief forward when the four briefs are ready.
## Keep
The historical/model distinction and the no-automatic-submission explanation are unusually clear (`app.mjs:57`, `100`). Local saving happens on input, JSON contains restorable state, and TXT includes answers, comparisons, explanations, sources, and a process record (`143–153`, `111`). TXT separators were executed and verified as real newlines; no export-format defect was found. The conditional pressure-test prompts (`94`) provide useful friction without prescribing a political position. Keep those strengths while making students demonstrate a changed interpretation once per case and preserving their place when they wander.
Cross-review discussion
# Student 3 — revision discussion
I agree with `learning_1.md` P1: New Zealand should preserve an initial application before revealing the interpretation. From my exploratory perspective, the supplied unfamiliar rule is useful; the immediately supplied Green decomposition and first/second answer pattern remove the discovery. Docket proposal 4 should test a new combination of electorate wins and party share, then preserve both the unaided response and supported revision. Keeping a directly elected seat must remain distinct from qualifying for list allocation.
I support `graphics_3.md` ranks 1, 2, and 6: small recurring mechanism marks could help me recognize my place and bring my evidence together. I challenge a literal implementation of all four conceptual covers before the first question. An OR junction or threshold gate can reveal the mechanism I am meant to investigate, while another visual panel can move the actionable puzzle farther away. Resolve this by using a neutral case identity at First thought and revealing the functional Rule Study with Evidence & rule. Replace existing decorative space; do not add another stop.
For docket proposal 5, I oppose another required observation field. Adopt `learning_1.md` P2's persistent before/after summary and ask, within the existing brief, which consequence supports my recommendation and what my first thought now needs to change or retains. Keep both settings beside that field. More importantly, implement proposal 1 first: resume my exact case/stage and preserve the filed snapshot during exploration. Otherwise the app punishes the very revisiting and reconsideration the revised learning task invites.
Faculty · electoral institutions and theory
Blind first pass
# Blind faculty review: comparative electoral institutions and theory
Reviewed only the supplied `baseline/dist` product: `app.mjs`, `elections.mjs`, `data.json`, the standalone HTML's matching teaching passages, the instructor manual's document text, and the narration. No prior reviews or project files outside that snapshot were consulted; external reading was limited to official primary-source verification. Source review only; no browser walkthrough and no product edits.
**Judgment:** Substantively sound, with targeted improvements warranted. No critical historical or arithmetic error found. The strongest feature is the repeated distinction between a recorded result, a counting model, and a behavioral or government-formation claim. The main weakness is that the New Zealand check and comparative design prompt do not yet make students demonstrate the full conceptual distinctions the manual says it will assess.
Severity: **medium** means a material learning or interpretation weakness; **low** means a localized wording inconsistency. None of the findings calls for another country, an expanded allocation engine, or a longer lecture.
## Findings
### F1 — Medium: test compensation, rather than addition, in the transfer case
**Exact anchors:** `app.mjs:82`, `CHECKS.nz2020.q2`, beginning “Green won 1 electorate seat and 9 list seats”; `app.mjs:16`, the new-case prompt and brief; instructor manual, “New Zealand 2020 transfer key” / “The compensatory tier” and “Transfer follow-up.” Matching standalone anchors: `After_the_Count.html:439` and `:373`.
The actual rule explanation is correct. However, adding 1 electorate seat to 9 list seats does not distinguish compensatory MMP from an arrangement with two independently allocated tiers. Both arrangements add their final components. A student can answer this check without understanding that the party-vote entitlement is a total within which electorate seats are counted. The first New Zealand check also presents the qualification explanation almost verbatim after the rule and records have supplied it. This supports guided application, but is weak evidence of the more independent transfer claimed in the manual.
**Concrete fix:** Replace q2 with a bounded application such as: “A qualifying party has an entitlement to 10 total seats and wins 1 electorate. How many list seats top it up to its entitlement?” Use 9, 10, and 11 as alternatives, with feedback explicitly connecting subtraction to compensation. For more independence without another activity, sharpen the existing New Zealand brief instruction to require “one earlier case that helps explain this result, and one substantive difference.” Retain the supplied MMP rule and historical evidence; do not turn this into a memory test. If an independent transfer score is desired, retain a short initial explanation before worked feedback and report supported practice separately.
**Why the distinction matters:** The Electoral Commission describes an overall party allocation, with electorate winners occupying seats first and the remainder filled from the list. Its worked example subtracts electorate winners from the party's entitlement. [Official explanation](https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/how-are-mps-elected).
### F2 — Medium: identify the institution being designed in the comparative brief
**Exact anchors:** `app.mjs:100`, `portfolio()`, “use two cases to defend a rule or combination of rules”; the same function's explanation hint; instructor manual, “Assessment and optional exit case,” opening paragraph and “Comparison and transfer” rubric. Matching standalone: `After_the_Count.html:457`.
Students can select Liberia and any legislative case, but the final task does not ask which office or body their proposed rule will select. A majority requirement for one president and proportional allocation across many legislative seats solve different selection problems. Comparing them is valuable; treating them as freely substitutable design choices is not. The manual requires a substantive difference for full comparison credit, while the student-facing final prompt does not request one.
**Concrete fix:** Add to the existing prompt: “Name the office or legislature your design would select. Explain one lesson shared by your cases and one institutional difference that limits the comparison.” For an executive-plus-legislature design, require the student to assign each proposed rule to its body. Keep all case pairings available, and keep the current numeric evidence, cost, fixed-input, and reconsideration requirements. This can be a prompt change and rubric clarification; another compulsory interface field is unnecessary.
### F3 — Medium: give the strategic-response concept one causal application
**Exact anchors:** `app.mjs:57`, `briefing()`'s “Counting effect” / “Strategic response”; `app.mjs:87`, UK “What stays fixed? What could change?”; `app.mjs:100`, final hint asking for “one way voters or parties could respond differently”; instructor manual, “Counterfactual reasoning” observable work and rubric.
The activity teaches the mechanical rules, applies them to actual records, and asks students to reuse them. Behavioral theory is thinner: candidate entry, targeting, and voter choice are listed as things that might change, then the final brief asks students to supply a response. A generic statement that behavior could differ can meet the current prompt without explaining why a rule changes an incentive. This is an opportunity to strengthen theory with one sentence, not a reason to import a full named-theory survey.
**Concrete fix:** Expand one existing rule card or lab note with a conditional incentive mechanism. For example: “If a voter expects their preferred local candidate cannot win, plurality can give them a reason to coordinate on another viable candidate; whether that happens requires evidence about expectations and choices.” Then use the existing next-evidence field to ask students to name a response, explain the incentive, and identify evidence that could test it. A threshold example about joining lists would also work. Require a conditional chain, not an assertion that plurality always produces two parties or that a threshold necessarily produces instability.
### F4 — Low: specify party representation in the UK pressure test
**Exact anchor:** `app.mjs:13`, `TEACHING.uk2024.costs[0]`, “Which voters have little representation in the result?” Matching standalone: `After_the_Count.html:370`.
The records establish differences between parties' vote shares and seat shares. They do not measure how well a constituency MP represents each resident's interests. As written, the question can encourage students to equate a losing party preference with having no political representation, despite the manual's careful territorial-link qualification.
**Concrete fix:** “Which party preferences receive fewer seats relative to their national vote shares? How do you weigh that against the constituency link?” Preserve the open choice and the manual's statement that a local election does not itself prove better accountability.
### F5 — Low: remove the remaining universal claim that lab inputs stay fixed
**Exact anchors:** `app.mjs:140`, How-the-studio-works modal, “compare two settings with recorded inputs held fixed”; `app.mjs:59`, the universal Rule Lab title “Change one thing.” Matching standalone: `After_the_Count.html:497` and `:416`.
The briefing, Liberia lab, narration, and manual correctly distinguish a fixed-October plurality replay from a fresh November historical ballot. The generic modal and title reintroduce the stronger suggestion that Liberia is also a same-input experiment.
**Concrete fix:** Use “compare explicitly labeled rule settings and records” in the modal; make Liberia's lab-stage title “Compare selection rules.” Preserve its existing dates, valid-vote pools, and historical/model labels.
## Things to preserve
- **Plurality:** Seats follow local first places; national support does not itself allocate them. The selected constituency illustrations are bounded appropriately, and second place is correctly separated from a narrow margin.
- **List PR and thresholds:** Validity, qualification, and exact seat allocation are distinct. The threshold lab appropriately uses all 40 lists while displaying selected examples, and does not present eligibility as a reproduction of Bader–Ofer. Do not add hypothetical exact seats without implementing the necessary rules.
- **Runoff:** Liberia uses a new ballot, not a transfer of the first-round ballot papers. The majority denominator is the valid votes in that round. Aggregate net changes are not individual voter flows. The activity appropriately refuses to infer enthusiasm, consensus, or the public's total support from those counts.
- **MMP:** Electorate and list seats are parts of a total entitlement, a direct winner is retained in the modeled removal of list eligibility, and coalition government is not presented as inevitable. Keep the 2020 case and its 120-seat record.
- **Judgment and grading:** The student can retain or reform each institution. Selected political preferences are not scored. The manual assesses units, evidence, mechanisms, assumptions, trade-offs, and revision; an instructor reviews open reasoning. Keep that separation, including the distinction between completion and mastery.
- **Serious recommendations:** A figure, source record, mechanism, accepted cost, and next useful evidence are already requested. The app does not pretend a keyword or response length can grade an argument. Preserve the short-brief format while making the two conceptual additions above.
## Numerical audit and primary-source checks
Local calculations used only the snapshot's exported functions and records. All valid-vote partitions matched their stated totals; UK, Israeli, and New Zealand seat records summed to their chamber totals. No change to the following numbers is recommended:
| Check | Verified result |
| --- | --- |
| UK fractional benchmark from exact votes | Labour 219.05; Reform 92.90; Liberal Democrats 79.40, each out of 650 |
| Israeli 3.25% whole-vote cutoff | 154,855 of 4,764,742 valid votes |
| Meretz shortfall | 4,062 with denominator fixed; 4,198 entirely new votes with the denominator expanding |
| Israel at 2%, 3.25%, 5% | 12, 10, 6 qualifying lists; 127,990, 417,400, 1,179,861 valid votes outside allocation |
| Liberia net changes | Boakai +17,520; Weah −10,173; valid votes −226,121 |
| Liberia margins | Weah +7,126 in October; Boakai +20,567 in November |
| NZ 2020 Sainte-Laguë demonstration | Total/list seats reproduce all five historically represented parties |
| South Africa lower-bound inference | 283 − 159 = at least 124 votes outside ANC, conditional on the stated party-seat maximum |
Externally verified facts, using official primary sources:
- The [House of Commons Library national results](https://commonslibrary.parliament.uk/research-briefings/cbp-10009/) support retaining Labour's 411 seats, the Liberal Democrats' 72, and Reform's 5.
- The [Israeli Central Elections Committee's final 2022 results](https://votes25.bechirot.gov.il/nationalresults) match the stated valid/invalid totals and the selected list votes and seats.
- The [New Zealand final 2020 archive](https://archive.electionresults.govt.nz/electionresults_2020/) matches the snapshot's amended counts and electorate/list totals, including Labour 1,443,545 and Green 226,757 party votes. Keep these counts rather than replacing them with an earlier release.
- The [Electoral Commission's MMP explanation](https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/what-is-mmp) and [MP selection explanation](https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/how-are-mps-elected) support the two votes, qualification routes, and compensatory interpretation.
- The [South African Parliament announcement](https://www.parliament.gov.za/press-releases/national-assembly-elects-cyril-ramaphosa-president-elect) confirms the 14 June 2024 presidential count of 283 to 44. The 159-seat ANC premise was not separately reverified here.
The supplied African Union Liberia PDF returned a fetch error during this review; the Knesset threshold-history page was geographically unavailable. This does not contradict the product. Liberia's arithmetic was checked locally, but its raw historical counts were not independently recertified in this review. No source-driven correction is proposed.
Cross-review discussion
# Faculty 1 council resolution
I agree with `student_2.md`, ranked problem 3, and `learning_3.md`, P1 on completion: viewing two settings does not show that a student noticed a consequence. Adopt docket 5 **within the existing brief**. Show both tested summaries beside the writing, and ask: “Compare the settings with a figure, explain a consequence, defend a benefit and cost, and say what your first thought now gets right or needs to change.” Keep revision brief and allow confirmation. A separate lab-observation essay or field would duplicate this evidence and increase composition and navigation load.
I challenge the binary target choice in `learning_3.md`, P2, as an overly narrow implementation of docket 6. A coherent proposal can design both executive selection and legislative representation. Resolve this with a small target choice: **legislature / one president / both**. For “both,” require each rule to be assigned to its election. Whenever offices differ, the existing paragraph must explain one transferable lesson and one limit. Liberia may provide a contrast; another presidential case is unnecessary. Grade institutional coherence, not the selected target or reform.
Adopt `learning_3.md`, P1 and “One compact stronger NZ transfer check,” replacing the existing recognition questions. The ACT row is valuable because an electorate winner above 5% remains eligible when the exception disappears. Provide raw archived rows and the supplied rule before interpreted labels or worked equations. Preserve the first meaningful submission, then feedback and supported revisions. Label it **first submitted before in-app feedback**, rather than “unaided,” given supplied rules and pair work. Ask only for observed list seats and alternative eligibility/retained local MPs; preserve the boundary against inventing alternative total allocations.
Faculty · methods and political behavior
Blind first pass
# Blind faculty review: methods and political behavior
Reviewed only the supplied `review_round/baseline/dist` snapshot, including the application, numerical module, data, instructor manual and narration. No previous reviews, history, browser or external lookup were used. This is a source review and numerical consistency check, not historical-source authentication or classroom evidence. The product was not edited.
## Overall assessment
The substantive boundaries are unusually careful. The UK benchmark is a fractional comparison using recorded votes, Israel changes eligibility rather than inventing exact seats, Liberia distinguishes a fresh runoff from a fixed-October plurality replay, and New Zealand preserves the directly elected Māori MP when list eligibility changes. Aggregate net gains are explicitly distinguished from individual switching. Recommendations are judged by evidence and accepted costs rather than the political preference selected. Retain these features.
The main weakness concerns what the retained work can demonstrate. The application supports guided application, but does not currently retain a clean independent transfer response. Completion is correctly described as a work marker, not a quality score; it must remain separate from evidence of mastery.
## Prioritized findings
### 1. P1 — The claimed independent transfer evidence is not actually elicited before explanation
**Exact anchors:** `app.mjs:16` (New Zealand prediction/options and brief), `app.mjs:65` (seat-component table), `app.mjs:75` (worked Green decomposition), `app.mjs:82` (New Zealand check answers), `app.mjs:84` (full worked New Zealand answer), `app.mjs:85` (same evidence/check/support sequence), `app.mjs:100` (final comparison permits any two cases), `After_the_Count_Instructor_Narration.txt:48`; instructor manual paragraphs beginning “Four steps per core case,” “Support without taking over,” “Transfer follow-up,” and “Learning rationale and references.”
The new case supplies a rule, which is appropriate. It also cues the correct electorate explanation in the prediction choice, provides the complete result/component table and `1 + 9 = 10` explanation before the checks, and offers the same worked-answer path as the core cases. The later open brief asks for an earlier-case connection, but a student can reproduce the preceding explanation. The comparative final can select the UK and Israel and omit New Zealand entirely. This is useful scaffolded application, but the manual's “more independent check” and claims that scaffolding is removed are stronger than the recorded evidence warrants.
**Fix:** Before the New Zealand explanation/check feedback, capture a short first application using the supplied rule and a result table: explain Māori versus NZ First, predict the effect of removing the exception while preserving local winners, and name one relevant earlier distinction plus one substantive difference. Retain that first response and then open all existing help. Alternatively, label New Zealand explicitly as guided transfer practice and reserve independent assessment for a genuinely unseen exit task. Do not remove the support path or impose a word-count gate. The optional South Africa item can supply additional transfer evidence if its answer is withheld until the individual response is recorded; it tests a different counting-unit inference, not the whole MMP mechanism.
**Expected learning evidence:** An identifiable response written before worked feedback applies the OR eligibility rule to both parties, preserves the direct Māori seat, treats list seats as top-ups, and articulates a meaningful cross-case difference. Report supported revision separately from this first response.
### 2. P2 — The process export cannot recover first unaided check reasoning; completion can be satisfied without a substantive argument
**Exact anchors:** `app.mjs:107` (`check`), `app.mjs:109` (`nextEvidence`), `app.mjs:110` (`fileBrief`), `app.mjs:114` (`finish`), `app.mjs:121` (phase navigation), `app.mjs:126` (setting-click history), `app.mjs:147` and `app.mjs:148` (answer overwrite), `app.mjs:111` (TXT export), `app.mjs:33`–`app.mjs:40` (restore flags/history). Instructor manual paragraphs beginning “Total: 10 points” and “The development process uses academic review.”
I executed the source-extracted actual check, progression, filing, finishing and restore functions in a Node VM with rendering stubbed. Two blank checks set `attempts=2`; continuing records `supported=true`. Opening the default lab setting and clicking one other setting satisfies `tested.length >= 2`. A recommendation, selected record and `.` in each prose box permit filing; all four such briefs plus two selected cases and `.` final responses produce `final.complete=true`. Phase tabs also allow reaching evidence without saving a first thought. These findings do not invalidate the intentional supported path, and the UI/manual already say completion does not establish quality. They show why completion and click counts cannot serve as learning outcomes.
More consequentially, a check event stores only case, attempt and pass/fail. Later answers overwrite the earlier values. Thus an export cannot distinguish a first misconception from a corrected response, or a correct answer obtained after viewing a hint from one obtained before help. The manual recommends collecting first unassisted responses for a pilot, but the current process record does not supply them.
JSON restore also trusts `checked`, `supported`, `filed` and final completion booleans, including states with empty explanations; `tested` is filtered but not deduplicated. An imported notebook therefore carries user-supplied completion assertions. Do not treat it as authenticated grading evidence.
**Fix:** Preserve the two-attempt worked path. Snapshot answers and visible/used help at each check, record the first independent transfer response, and retain a short student-authored changed consequence rather than interpreting a setting click as comparison reasoning. Keep the existing manual assessment for mechanisms, numbers and trade-offs. On restore, deduplicate settings, validate ordinary state consistency and clearly retain restored provenance; no anti-cheat infrastructure is needed for this local notebook. A short observation or teacher review is more defensible than keyword, character-count or mandatory-correctness gates.
**Expected learning evidence:** The instructor can see the first interpretation, feedback/support exposure, revised interpretation, and a student explanation of what changed. “Filed” and “complete” remain administrative indicators; the rubric determines argument quality.
### 3. P2 — The geographic inference limit is in the data/manual but is weaker in the student task
**Exact anchors:** `data.json:73`–`data.json:81`, especially “Three selected constituencies do not explain the entire national pattern”; `app.mjs:69` (selected-record note), `app.mjs:72` (three local examples and rank/margin illustration), `app.mjs:79` (UK checks), `app.mjs:87` (selected-party benchmark), `app.mjs:93` (generic next-evidence box).
The displayed evidence validly shows that national votes can accumulate without a local win and that second place does not establish a close loss. It does not establish the national spatial distribution of support, campaign targeting, constituency competitiveness, or the cause of the entire Reform/Lib Dem seat difference. The application does not assert those conclusions, which is good. However, the strongest explicit boundary is stored in `data.json.limits`, which the student view does not render. The next-evidence prompt is generic, so students can leave without demonstrating that they know the three cases cannot support a national geographic explanation.
**Fix:** Add one plain learner-facing sentence under the UK local records stating that these are selected illustrations. Ask what countrywide constituency record would test a geographic explanation. The existing source links can support this extension; a map and a new large dataset are unnecessary.
**Expected learning evidence:** A student can say “these two Reform losses illustrate the mechanism” and request all constituencies' party votes, winner/runner-up margins and relevant local totals before claiming national concentration or diffuse support. They distinguish the mechanical local-win rule from a behavioral explanation of where parties competed effectively.
### 4. P3 — Generic “one thing/fixed inputs” language overstates control in the Liberia comparison
**Exact anchors:** `app.mjs:59` (“Change one thing”), `app.mjs:140` (“compare two settings with recorded inputs held fixed”), contrasted with the accurate `app.mjs:57`, `app.mjs:89`, `app.mjs:91`, and `After_the_Count_Instructor_Narration.txt:8`/`:42`.
The Liberia lab correctly labels the different dates, changing valid-vote pool and historical runoff. Nevertheless, the universal stage title and “How it works” summary invite the same controlled-comparison interpretation used for the other labs. The observed November winner is not the outcome of applying the majority requirement to October's unchanged vote vector: that requirement tells us another ballot is needed, not which finalist wins it.
**Fix:** Use “Compare the selection rules” for Liberia's stage title and make the generic help explicitly mention that Liberia contrasts the fixed-October replay with a new historical ballot. This is a wording alignment; the lab itself should retain its current distinction.
**Expected learning evidence:** “Plurality on the recorded October votes selects Weah; majority on those votes requires a runoff; Boakai won the separate November ballot.” Students do not claim this identifies the causal effect of adopting runoff rules on real-world support.
## Independent numerical checks
I recomputed the following directly from the recorded integers, separately from the displayed values. All checked values agree with the product.
| Comparison | Recalculation | Interpretation |
|---|---:|---|
| UK Labour benchmark | `9,708,716 / 28,809,340 × 650 = 219.0493` | Historical 411 seats; fractional benchmark, not a whole-seat allocation |
| UK Reform benchmark | `4,117,610 / 28,809,340 × 650 = 92.9020` | Historical 5 seats |
| UK Lib Dem benchmark | `3,519,143 / 28,809,340 × 650 = 79.3994` | Historical 72 seats |
| UK two illustrated Reform losses | `4,888 + 10,799 = 15,687` | Votes in two places, no Reform win there |
| Barnsley North winning margin | `18,610 − 10,799 = 7,811` | A margin, rather than a rank |
| Israel 2% | cutoff 95,295; 12 qualifying lists; 127,990 excluded valid votes (2.6862%) | Eligibility only |
| Israel 3.25% | cutoff 154,855; 10 qualifying lists; 417,400 excluded (8.7602%) | Eligibility only |
| Israel 5% | cutoff 238,238; 6 qualifying lists; 1,179,861 excluded (24.7623%) | Eligibility only |
| Meretz shortfall | 4,062 with fixed denominator; 4,198 entirely new Meretz voters | Different counterfactual denominator assumptions |
| Liberia first-round majority minimum | `floor(1,834,516 / 2) + 1 = 917,259` | Neither finalist had it |
| Liberia net changes | Boakai +17,520; Weah −10,173; valid votes −226,121 | Not individual transition counts |
| Liberia margins | Weah +7,126 in October; Boakai +20,567 in November | Different electorates/ballot sets at two dates |
| Liberia runoff share | `814,481 / 1,608,395 = 50.6394%` | Majority of that round's valid votes |
| NZ 5% cutoff | `2,886,420 × .05 = 144,321` | Māori and NZ First below the national route |
| NZ historical totals | Sainte-Laguë demonstration gives 65/33/10/10/2 | Matches Labour/National/Green/ACT/Māori historical totals; local seats included |
One useful optional Liberia exercise would construct two different individual-flow stories consistent with the same +17,520 net gain. For example, retaining all 796,961 prior Boakai votes and gaining 17,520 differs from losing 10,000 prior supporters and gaining 27,520. Both yield 814,481; neither is established by the aggregate records. The current text already states the principle correctly.
## Assessment judgment
The manual's 10-point rubric is appropriate: it rewards accurate units, a rule-to-result explanation, fixed inputs and meaningful assumptions, accepted costs, revision conditions, and substantive comparison. It explicitly rejects political-preference, length and support-use scoring. Preserve it. The application supplies practice evidence and an inspectable notebook; it presently provides weaker evidence of independent transfer and change in reasoning than the instructional framing suggests. Address the first-response/provenance issues and the small wording gaps before making stronger learning claims.
Cross-review discussion
# Faculty 2 council response
I agree with `student_3.md`, findings 1–2, and `ux_3.md`, F2: the current record conflates viewing support, submitting an answer and demonstrating an interpretation. Adopt docket proposals 2 and 4. Each meaningful check submission should snapshot answers, assessment version and help already exposed. Keep draft answers separate from the last submission, clear stale feedback on editing, and record “support opened” separately from a later supported application. Blank checks should prompt completion without consuming an attempt. Preserve worked support after two meaningful unsuccessful submissions; do not make political prose pass a correctness or length gate.
I challenge applying `ux_3.md` F5's prediction prerequisite or new NZ requirements retrospectively to restored notebooks. A prediction entered after instruction is not an initial prediction. Likewise, old NZ recognition answers cannot become first unaided transfer responses merely because the schema changes. Docket proposal 4 explicitly protects this distinction.
Resolve this with versioned migration: retain every old choice, prose response and historical completion status; label them “prior-edition record.” Initialize new first-response fields as “not recorded,” never reconstruct them from current answers, and invite an optional new application. Validate enum values and deduplicate settings as F3 recommends, while preserving the original payload for recovery as F4 recommends. Imported completion remains a self-reported work status, not authenticated mastery.
For docket proposal 5, use the existing brief for one comparison consequence and a revision/confirmation sentence. Avoid another compulsory essay field. A filed snapshot should survive exploratory toggles; changed argument text becomes a visible draft until refiled.
The acceptance evidence is an export that distinguishes first submission, exposed help, supported revision, draft edits and legacy records without losing prior work. Instructor review still determines reasoning quality.
Faculty · regional cases and sources
Blind first pass
# Independent faculty and regional/source review
Reviewed only the supplied `review_round/baseline/dist` product snapshot: app/data/modules, photo metadata and four displayed photographs, instructor manual text, and narration. No previous reviews or development history were read. No browser session was used and no product source was edited. Primary-source checks were made through web retrieval on 30 October 2026.
**Verdict:** The central historical figures and mechanisms checked are accurate. No critical or high-severity historical error found. The historical/model distinction is unusually careful and should be preserved. Two medium improvements address New Zealand interpretation and source evaluation; two low improvements address image framing and an inaccurate image description.
## Issues and concrete fixes
### F3-1 — Medium — Distinguish the Māori Party, Māori electorates, and Māori representation
**Exact anchors:** `app.mjs:16` (`brief: 'Use Māori and New Zealand First as evidence'`); `app.mjs:82` (`Why did Māori qualify…`); `app.mjs:84` worked example; `app.mjs:90` (`Māori’s directly elected MP`); `app.mjs:97` notebook descriptions; `data.json:294–296` puzzle/expected explanation. The instructor manual's “New Zealand 2020 transfer key / Pathway decision” is the best corresponding place for a short instructor note.
The opening prediction correctly names the Māori Party, but later shorthand repeatedly says “Māori” as though it were the actor. Together with the unnamed electorate and generic “territorial representation” framing, a novice could infer that 1.17% measures Māori voters or that two party MPs exhaust Māori representation. The local-win eligibility pathway applies to any party; it is distinct from the Māori electorates. This is an avoidable ambiguity, not a wrong seat calculation.
**Fix:** Use “Māori Party” throughout. After the initial puzzle, add a compact context note, for example: “Rawiri Waititi won Waiariki, one of seven Māori electorates in 2020. The electorate pathway into proportional allocation applies to any party. The Māori Party’s 1.17% is its share of nationwide party votes, not a measure of Māori representation as a whole.” A link to the Waiariki result makes the local evidence inspectable. If expanding the instructor note, explain that Māori voters choose the Māori or general roll, while either roll has the same party-vote choices; do not imply that Māori electorates are reserved for the Māori Party.
**Primary evidence:**
- [Waiariki official 2020 result](https://archive.electionresults.govt.nz/electionresults_2020/electorate-details-72.html): Waititi 12,389; Labour's Tamati Coffey 11,553; Labour leads the electorate's party vote. This is an especially useful demonstration that electorate choice and party choice are different.
- [Electoral Commission, 17 April 2020 boundaries](https://elections.nz/media-and-news/2020/electorate-names-and-boundaries-finalised): 65 general and seven Māori electorates.
- [Electoral Commission, Māori Electoral Option](https://elections.nz/democracy-in-nz/what-is-an-electoral-roll/what-is-the-maori-electoral-option): distinguishes the rolls and explicitly identifies the 2023 change to when rolls can be changed. Avoid importing today's timing rules into a 2020 explanation.
- [Electoral Commission MMP explanation](https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/what-is-mmp): common 5%-or-electorate pathway and both votes.
### F3-2 — Medium — Give Liberia source evaluation a dated, legible primary record
**Exact anchors:** `app.mjs:67` `sourceLinks()` Liberia record note; `data.json` Liberia `sources[0]` and `sources[1]`; instructor manual “Liberia 2023 answer key / Sources.”
The app already warns about stale NEC archive labels, which is good. On this check, direct NEC page retrieval returned 403, while search retrieval exposed correct candidate tables beneath contradictory 2011 headings, a current 2026 “Final Results as of” timestamp, and, on the runoff page, impossible 132.15% processing against an old polling-place denominator. These are source presentation defects, not errors in the supplied candidate totals. For learners explicitly practicing source evaluation, “ignore stale template labels” leaves too much reconstruction to do.
**Fix:** Add the dated NEC chair's 24 October 2023 briefing alongside the current archive links. Label it by date and use it as the principal record for the first-round finalists, shares, majority requirement, and runoff announcement. Retain the AU report as a transparent cross-check for the full round totals. In the source note, identify the specific known template defects and explain that candidate counts are corroborated by dated records. Do not copy archive turnout/progress labels into a future version.
**Primary evidence:**
- [NEC Chair's briefing, 24 October 2023](https://www.necliberia.org/pg_img/Chair%20Daily%20Press%20Briefing%20Note_102423.pdf): 804,087 / 43.83%; 796,961 / 43.44%; valid-vote majority rule; 14 November runoff declaration. Indexed text was retrievable, although direct PDF opening also returned 403 here.
- [NEC first-round candidate table](https://necliberia.org/results/president.php?4df8f4a95b9ccaeffba51d2193fe766d30fe57c666ac68e0b618687f8a71b989=NDQzNw%253D%253D).
- [NEC runoff candidate table](https://results.necliberia.org/president2.php?4df8f4a95b9ccaeffba51d2193fe766d30fe57c666ac68e0b618687f8a71b989=NDQzNw%3D%3D).
- [African Union observation report](https://papsrepository.africanunion.org/bitstreams/d248c1cf-fff9-4e97-98cf-0b1dbe2ce2b8/download): indexed runoff table corroborates 814,481, 793,914, valid 1,608,395, invalid 25,788 and total 1,634,183. Direct report opening returned 403 here; do not describe this as a fully downloaded inspection.
### F3-3 — Low — Liberia's only photograph has a weaker learning connection than the other cases
**Exact anchors:** `photos.json:50–52`, Liberia caption/alt/context; `app.mjs:52` `photo()` and `app.mjs:70` `surprise()`; route-card photograph in `home()`.
The caption accurately identifies EU observers meeting Senator Prince Y. Johnson in Ganta on 9 November. It does not falsely call this voting or counting. Nevertheless, all three other cases show ordinary electoral materials or places, while Liberia alone is introduced through outside observers interviewing a political figure. The activity makes no analytical use of this meeting. The asymmetry can unintentionally make foreign observation the defining image of Liberian democratic practice.
**Fix:** Prefer a documented 2023 Liberian polling/counting/NEC administration photograph with permission suitable for reuse. Alternatively, retain this image but add the already-recorded context “Runoff campaign context; this is not a voting or counting scene” to the visible caption and one prompt explaining that campaign meetings cannot establish individual vote transfers. No need to add conflict history or general country background.
**Source:** [Commons record, crediting the EU observation mission's original post](https://commons.wikimedia.org/wiki/File:EU_observers_meet_Prince_Johnson_02.jpg), description/date/author checked. Its description says this was a meeting to assess campaign plans, consistent with the app caption.
### F3-4 — Low — New Zealand alt text calls voting screens “boxes”
**Exact anchor:** `photos.json:87`, asset `nz2020_2`, alt text beginning “Paper voting boxes behind the windows…”. This is the image `photo()` actually selects for New Zealand.
Visual inspection shows tall white cardboard voting screens/booths behind the glass, with orange bilingual voting signs. Calling these “voting boxes” gives screen-reader users the wrong object and misses the clear scene.
**Fix:** “White cardboard voting screens behind the windows of an advance voting place, with orange voting signs in English and te reo Māori.” Keep the accurate Willis Street, Wellington, 13 October 2020 caption.
**Source:** [Photographer's Commons record](https://commons.wikimedia.org/wiki/File:Advance_voting_booth_in_Wellington_(3).jpg), description, date and own-work attribution checked; local photograph visually inspected.
## Accuracy checks and strengths to preserve
| Case | High-leverage finding | Primary check |
|---|---|---|
| UK 2024 | Labour 411, Liberal Democrats 72 and Reform 5; Reform's 98 second places and Lib Dems' 27 are correct. The three selected local candidate counts checked are correct. | [Commons national results](https://commonslibrary.parliament.uk/research-briefings/cbp-10009/); [Commons finishing positions](https://commonslibrary.parliament.uk/research-briefings/cbp-11175/); [Clacton](https://members.parliament.uk/constituency/3989/election/422); [Woking](https://members.parliament.uk/constituency/4407/election/422); [Barnsley Council](https://www.barnsley.gov.uk/services/voting-and-elections/election-results/uk-parliamentary-general-election-4-july-2024/) |
| Israel 2022 | 4,764,742 valid votes, 29,851 invalid; Meretz 150,793 / 3.16% / 0; Labor 175,992 / 4; Hadash-Ta'al 178,735 / 5 all match the CEC. The cutoff 154,855 and threshold-only lab totals reproduce correctly. | [CEC final results](https://votes25.bechirot.gov.il/nationalresults); [CEC English election guide](https://www.gov.il/BlobFolder/guide/knesset25-elections-info/he/info-pages_english.pdf) confirms 3.25% and later Bader-Ofer allocation |
| Liberia 2023 | Checked finalist counts, dates, runoff totals and valid-vote majority rule agree with NEC/observer primary records identified above. The +17,520 net gain is correct and does not identify individual switchers. | NEC 24 October briefing, NEC candidate tables, AU runoff table |
| New Zealand 2020 | Final archive uses 2,886,420 valid party votes; Māori Party 33,630 and two seats; Greens 226,757 and 1+9=10; Labour 65/120. These are the corrected archive counts, not slightly different 6 November release counts. | [Final archived national result](https://archive.electionresults.govt.nz/electionresults_2020/); [MMP explanation](https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/what-is-mmp) |
- The UK lab calls its decimals a fractional benchmark, does not award fictitious whole seats, and does not infer that second place means a narrow loss.
- Israel separates a valid ballot, a qualifying list, exact seat allocation, and coalition consequences. No simple threshold arithmetic is claimed to prove instability.
- Liberia is treated as an ordinary institutional comparison, without deficit or exoticizing language. The fresh runoff and changed participation pool are explicit. Costs are discussed without invented costs or turnout motives.
- New Zealand preserves the directly elected local MP under the proposed list-eligibility change and avoids the common error that local seats are bonuses on top of a full proportional allocation. Labour's majority correctly rebuts coalition inevitability.
- Photo dates/captions checked for UK, Liberia and the displayed NZ image are consistent with creator/source metadata. The Israel photograph visibly shows party slips in a voting booth; no scene is presented as generated documentary evidence.
- The comparative briefs assess defended values rather than the preferred reform or winning party. The manual explicitly separates a simulated review from observed classroom learning evidence.
No encyclopedic country introductions are needed. The concise Waiariki clarification and a dated NEC record would add more instructional value than broad political histories.
Cross-review discussion
# Regional/source council response
I agree with `graphics_3.md`, issue 3 and “Documentary caption and cultural care”: Liberia deserves equal visual standing, and the authenticated observer meeting should retain its campaign context. I support `learning_3.md`, P1 and the ACT application card. Its eligibility/direct-seat distinction tests application without inventing alternative parliamentary totals.
I challenge docket proposal 3 if the four Rule Studies appear before the first NZ submission. An OR diagram with party labels and a completed top-up can disclose precisely the interpretation proposal 4 aims to observe. Conversely, withholding basic Māori context merely to preserve test difficulty would confuse unfamiliarity with institutional reasoning.
Resolve this by using the full historical name “Māori Party” everywhere, including dropdowns, feedback and exports (`faculty_3.md`, F3-1). Supply the common MMP rule and raw results before the first application; introduce the interpreted OR/top-up study after submission. Add the Waiariki context then: Rawiri Waititi won one of seven Māori electorates, the party’s national share does not measure Māori representation overall, and the electorate eligibility pathway applies to any party. An optional roll explanation can supply further context without crowding the task.
For Liberia, implement equal conceptual identity now, retain the photograph with the explicit “campaign context; not voting or counting” caption, and avoid making replacement photography a release dependency. A future replacement must have verified date, location and reuse rights. Add the dated NEC briefing alongside the unstable archive (`faculty_3.md`, F3-2). These changes improve representational parity and source judgment without adding country-history lectures or manufacturing documentary evidence.
Visual · editorial art direction
Blind first pass
# Blind graphic-design review — After the Count
Reviewed only the frozen `baseline/dist` product: `app.mjs`, `style.css`, `photos.json`, image credits, and all five actual JPEGs viewed at original framing. No earlier review or history consulted; no browser used; product unmodified. Layout judgments below follow the implemented CSS and markup rather than a rendered-device inspection.
## Overall judgment
The warm paper, large Georgia headline, red intervention color, monospace record labels, and four-case route already form an unusually coherent teaching publication. “Votes in. Power out.” is a strong editorial opening. The product feels serious without looking institutional. Its most original visual idea, however, is currently an archive collage built from photographs that recur immediately in the case cards. The photographs establish real electoral settings; they do relatively little to distinguish the four mechanisms. Add an authored conceptual art family, and let the photographs keep their documentary role.
## Prioritized fixes
1. **Give the studio a visual thesis: four original “Rule studies.”** Create four related abstract paper-construction illustrations using the same blank rectangular tokens, ivory ground, teal structural pieces, vermilion interventions, ochre details, and sharp directional shadows. UK: a field of separate local compartments. Israel: a raised eligibility gate. Liberia: two physically separate decision trays, with a clear gap between them to suggest a fresh decision rather than transferred ballots. New Zealand: a national entry structure with a distinct side entrance meeting the same shared seat field. These are conceptual motifs, not charts. Place a combined four-study composition in the existing home `.archive-art` footprint, with a live HTML label “Four rules. Different routes to representation.” Keep the real photographs in the route cards and case opening, and retain access to the current collage in the source room if desired. Use a 120–160px study beside each first-thought case title, and a small crop of that same study in its notebook heading. Do not introduce large decorative pictures above the interactive lab controls.
2. **Art-direct the historical crops individually.** The current universal `object-fit:cover` at 155px in route cards and 265px in case openings risks hiding the evidence-bearing subject. UK’s polling-station sign is low in the original; center cropping can erase it. Use an image-specific lower focal point, approximately `50% 65%`, and test the sign remains readable in both frames. Israel’s lower-middle ballot rows should be favored, approximately `50% 62%`; do not reduce this informative photograph to anonymous blue texture. Liberia’s landscape composition already suits a wide frame: preserve Prince Johnson at left and the observers at right rather than cropping into generic people at a table. New Zealand’s selected Willis Street image has an effective horizontal row of orange signs: keep the signs and boxes together, around `50% 55%`. Keep real color, readable captions, and the full uncropped image in the source room. The alternate Manners Street photo is valuable as secondary context but need not be added merely for volume.
3. **Represent all four cases with equal editorial weight.** The hero collage shows Israel, UK, and New Zealand while omitting Liberia; the three-number hero strip includes Liberia while omitting New Zealand. This creates an accidental three-case identity before a four-case assignment. Use the four-study hero to establish the complete set. Make the statistic strip a four-item row on wide screens and a 2×2 grid on small screens; add New Zealand’s “1.17% → 2 seats / 2.60% → 0” comparison. Preserve the special “Transfer case” designation as a learning role rather than making New Zealand visually absent from the overview. Carry each case’s numeral and motif consistently through route card, title, sidebar, and notebook.
4. **Give the learning surfaces more hierarchy than the home page’s ornament.** The opening’s headline/photo/CTA rhythm is effective; the later pages fall back to nearly identical bordered white panels, small monospace headings, and long stretches of text. In `.case-title`, visibly retain the country/year and mechanism in every phase, since the generic “Follow the rule / Change one thing / Defend your choice” headings otherwise make cases look interchangeable. Use one focal numeric statement per record section, one clear rule statement, and then the table. Keep section spacing stronger than internal paragraph spacing. Keep the active action vermilion and reserve deep teal for selected controls and confirmed state. Do not use a case-specific color palette that could be mistaken for political-party encoding.
5. **Make the visual boundary between observation and modeling unmistakable.** The source photographs and historical results should sit on a plain ivory record surface with a live date/source line. The interactive labs should carry an ochre top rule, a consistent “Rule lab” label, and immediately visible fixed-input text. Preserve exact quantitative graphics as HTML/CSS/SVG; generated art must never stand in for seat totals, thresholds, maps, or voter movements. Liberia particularly needs the photo caption’s campaign-meeting context to remain visible: the photograph is neither a count nor evidence of individual vote transfers. Conceptual illustrations should carry “Concept illustration” in live text in the source room and should never receive archival stamps, dates, handwriting, seals, or simulated source citations.
## Art brief ready for production
**Family:** Rule studies — editorial paper constructions about representation.
**Look:** Quiet, tactile, precise, contemporary magazine illustration. Overhead or shallow axonometric view of folded and cut paper solids on warm ivory. Geometric rectangular tiles and channels; strong clean shadows; restrained paper grain. Palette anchored to the existing ivory `#f2eee5`, teal `#225c5c`, vermilion `#b53d2d`, and ochre `#e0ba5a`. Large simple silhouettes that remain legible at thumbnail scale. No flags, landmark clichés, national costume, politicians, ballot symbols, election logos, manufactured documents, readable text, quantities, graph axes, arrows implying real voter flows, or pseudo-documentary photography.
**Deliverables:** Four separate 4:3 images with matching camera angle, object scale, lighting and background; one 4:3 overview composition containing all four material motifs with generous negative space. Keep the center 70% of each individual image safe for square cropping. Labels and numerals are live interface text added outside the art.
| Case | Motif | Conceptual constraint |
|---|---|---|
| UK 2024 | Several separate teal compartments, ivory and vermilion tiles distributed across them | Suggest local aggregation without depicting the real constituency map or counted seats |
| Israel 2022 | A precise raised ochre gate interrupting a teal structure, blank tiles on either side | Suggest eligibility; tile counts and positions convey no numeric result |
| Liberia 2023 | Two distinct trays separated by empty ivory space, each with its own blank tile set | A new decision on a later occasion; no continuous stream implying automatic transfers |
| New Zealand 2020 | A broad entry and a small side entrance joining one shared geometric structure | Multiple eligibility routes into one integrated allocation; no independent seat piles |
**Suggested generation language:** “Original conceptual editorial illustration, a restrained tactile paper construction about [case motif], on warm ivory ground. Deep teal folded card, muted vermilion rectangular pieces, a small ochre intervention, blank ivory tiles, clean hard shadows, subtle natural paper texture, generous negative space, consistent overhead three-quarter camera. Abstract institutional metaphor, visually simple, polished civic education magazine art. No people, text, numbers, official documents, flags, emblems, maps, charts, axes or readable ballot papers. This is illustration, not a historical scene.”
**Acceptance test:** The quartet reads as one family from across a classroom; each motif remains distinct in a 120px thumbnail; every historical image retains its attribution; no generated pixel can be mistaken for a documentary record or a numerical result; the first rule-lab control and fixed-input statement remain visible before any decorative art.
Cross-review discussion
# Graphic-design council response
I agree with `faculty_3.md`, F3-3: the Liberia photograph is accurately documented, but an observer meeting should not silently become the visual definition of Liberian elections. Retain its visible date, attribution, and “Runoff campaign context; not voting or counting” explanation. The accepted two-tray illustration adds an institutional idea without pretending to replace documentary evidence. F3-4’s correction from voting “boxes” to “screens” also belongs in the final pass: accessible descriptions are part of art direction.
I challenge any interpretation of docket item 3 that puts the new artwork ahead of comparison evidence on every stage. `student_2.md`, problems 3 and 5, identify a more consequential visual failure: learners lose their place and must remember two results while writing. Four attractive images will not compensate for that burden. In New Zealand, an explanatory two-entry motif also deserves restraint before the first unaided application (docket item 4).
My resolution is a clear space budget: one compact conceptual image in the case introduction; preserve dates and subjects in documentary photographs; prioritize the two tested setting summaries immediately beside the brief fields, stacked above them on phones. Keep illustration outside evidence tables and lab outputs, and introduce the New Zealand mechanism motif after the unaided response if its placement reveals the pathway. For docket item 5, strengthen the existing explanation prompt rather than add another observation field. Learners should spend effort comparing consequences, not navigating extra boxes.
Visual · information design
Blind first pass
# After the Count — independent graphic and information-design review
Reviewed only `review_round/baseline/dist`: app code, styles, datasets, and all five supplied JPEGs with `view_image`. No previous rationale or reports read. No source changes. No browser was used; root owns the browser. Responsive crop/layout observations below distinguish code-supported geometry from observations requiring a rendered confirmation.
## Recommended direction
Keep the warm paper, editorial serif, ink/teal/rust palette, precise tables, historical photographs and explicit historical/model labels. The highest-value improvement is to make the lab outputs self-explanatory at a glance: named axes, units on the marks, qualification in text, and comparative results visible together. Original art can give the studio a stronger identity in the hero; it should not carry election quantities or pretend to document any of these countries.
## Prioritized issues
### P1 — Israel's scale and qualification state are implicit
**Anchors:** `app.mjs:88`, `israelLab()`; `style.css:2`, `.threshold-row`, `.threshold-track`, `.boundary`; `style.css:4`, narrow `.threshold-row`.
The chart maps vote share onto a fixed **0–6%** range (`r.voteShare / 6`), but neither endpoint nor any tick labels disclose that range. The red boundary has no direct label and is `aria-hidden`. Each party's outcome is encoded by teal versus gray and an explanatory color sentence. A learner hears party name and percentage without an explicit outcome for that row; a learner who cannot distinguish the fills must repeatedly calculate the outcome.
**Change:** render a real code-native chart with an explicit shared `0–6% of valid votes` axis and readable ticks; directly label the threshold; append **Qualifies** or **Below threshold** to every list row. Keep numerical vote share and the whole-vote cutoff visible. Use text and a second visual cue, such as an outlined excluded bar, rather than fill color alone. Associate an accessible chart description or exact table with the graphic.
Meretz's 3.1648% and the 3.25% boundary will be only roughly 2–3 pixels apart on a narrow track. Add the exact shortfall **4,062 votes below the minimum cutoff** at the actual rule. This explains the difference without exaggerating the scale. Keep that shortfall based on exact counts, not rounded display percentages.
**Verification:** at 390 px and with color removed, every row should communicate its value and eligibility without a legend lookup. All settings should preserve exactly the same scale.
### P1 — UK bars require direct measures and units
**Anchors:** `app.mjs:87`, `ukLab()`; `style.css:2`, `.bar-label`, `.bar-pair`, `.bar-legend`.
The paired tracks have no labeled axis. A seat count sits above two bars whose lengths represent percentages. The legend is the only direct identification of each bar. In benchmark mode the caption beneath each pair continues to give **actual seat share**, even though the top bar now represents the fractional proportional benchmark. The numbers are individually true, but the visual grouping encourages an incorrect association.
**Change:** use a consistent **0–100%** shared scale and direct labels such as `Actual seats 63.23% · 411 / 650` and `Recorded votes 33.70%`. In benchmark mode label `Proportional benchmark 33.70% · 219.05 fractional seats`; display historical actual seats in a separately named comparison column or sentence. Keep a visible sentence immediately above the graphic: **Three selected parties; other parties are not shown.** Do not reserve that limitation for collapsed notes.
Reform's five seats occupy less than 1% of the track and become only a few pixels wide on mobile. Preserve the exact count and percentage labels even when the mark is tiny. Do not impose a minimum bar width that changes the encoded value.
### P1 — Only one setting is visible at a time, weakening comparison
**Anchors:** `app.mjs:87–92`, `ukLab()`, `israelLab()`, `liberiaLab()`, `nzLab()`, `lab()`; `app.mjs:99`, `entry()`.
The app asks learners to compare two settings, but the result panel replaces the preceding setting. “Your record” lists setting names rather than their consequences. The notebook retains values as prose behind details; the learner must remember them while evaluating a trade-off.
**Change:** keep the primary interactive output and add a compact exact comparison table below it. Israel is especially suited to three columns/rows: 2%, 3.25%, 5%, with qualifying lists, excluded votes, excluded share and minimum cutoff. Use the values already calculated by the engine. Label historical rule versus hypothetical setting. For the UK, place actual seat count and fractional benchmark next to the same recorded-vote share. For NZ, compare eligibility outcomes, without inventing alternative seat totals. On narrow screens, stack setting cards or retain a simple readable table with a clear horizontal-scroll cue.
Do not use a Sankey or arrows between Liberia candidate totals to imply that aggregate increases track individual voters. The current new-ballot and net-change qualifications should remain next to any visual.
### P2 — “Full analysis” cannot be inspected in the app
**Anchors:** `app.mjs:88`, `israelLab()`; `app.mjs:60–69`, `historicalTable()` and `sourceLinks()`; `elections.mjs`, full party datasets.
Israel's main plot shows six boundary-adjacent lists, while the detail table shows only lists qualifying at the chosen setting. The sentence says analysis includes all 40 lists, but learners cannot inspect excluded lists outside the selected six. At 5%, all six plotted lists are excluded; the six qualifying lists are elsewhere in a collapsed detail. UK national evidence likewise selects three parties.
**Change:** title the Israel graphic **Six selected lists near the tested boundaries**, order rows by vote share, and provide **All 40 lists: votes, share, eligibility** in a searchable/sortable or ordinary accessible table. Retain all excluded lists as well as qualifiers. Distinguish “selected examples” from a whole-record overview in every caption. A small overview showing qualifying/excluded totals is useful, but it must not imply that the six selected rows are the complete election.
### P2 — Image crops can discard the evidence that identifies the scene
**Anchors:** `app.mjs:52`, `photo()`; `app.mjs:56`, `home()`; `app.mjs:106`, `credits()`; `style.css:2`, `.case-photo img`, `.route-card img`, `.photo-credit img`, `.art-grid img`; `style.css:4`, narrow card/photo sizes. JPEGs inspected: all five files in `assets`.
The UK polling sign is low in the whole source photograph. Fixed-height wide center crops put its bottom near the crop boundary. In the Liberia photograph, the named local participant is at the far left; narrow two-column route-card crops can remove him while retaining the observers. The code's universal `object-fit:cover` cannot protect both of these compositions. The source-room preview also has a shallow maximum-height crop, so it does not provide a whole-image view. Exact loss at each viewport remains a browser verification item.
**Change:** give each image a deliberate focal position and test it at every actual display ratio. Prefer natural aspect ratios or a compact original-aspect image paired with title/context on case-opening screens. Add an accessible **View whole photograph** action whose image uses `object-fit:contain` and retains the full caption and credit. Use an uncropped view in the source room. Maintain the clear distinction between the Liberian campaign meeting and a polling/counting scene.
Do not AI-edit these documentary photographs to fix layout. Their Hebrew/Arabic and English/te reo Māori signage are valuable details of the places; preserve them in the full-image view. A source image can be cropped for navigation, but its identifying evidence should remain available.
### P2 — Narrow layouts compress the reading hierarchy
**Anchors:** `style.css:4`, `.route-cards`, `.sidebar-cases`, `.case-tab .country`, `.threshold-row`, `.data-table th`, `.data-table td`; `style.css:2`, `.bar-legend`.
At 760 px and below, the case navigation remains four equal columns with country names at about 11 px, cards remain two columns, the threshold names/status area is narrow, and table text drops to about 12 px. This is a source-supported compression concern, not a browser-observed clipping finding. The UK legend is a nonwrapping flex row whose long benchmark label deserves a narrow-screen check.
**Change:** at the smallest widths, make route cards one column or use a horizontal compact card with image and text; keep country names legible. Let chart names and status share a full-width line above each track. Wrap the legend, but favor direct labels so it becomes optional. Keep table figures large enough to compare; make wide-data scrolling visibly discoverable and keyboard reachable. Use tabular numerals for counts and percentages.
## Where exact graphics contribute
| Case | Best exact code-native visual | Guardrail |
|---|---|---|
| UK | Aligned vote-share / seat-share bars plus exact comparison columns | Fixed scale, selected parties disclosed, fraction versus whole seat explicit |
| Israel | Labeled threshold plot, textual eligibility and exact cutoff/shortfall | 0–6% axis visible; no modeled seat claim; complete list table available |
| Liberia | Two clearly dated result panels with a modest net-change table | No inferred individual transfers; distinct valid-vote denominators remain visible |
| New Zealand | Small eligibility matrix and a labeled 1 electorate + 1 list = 2 seats component graphic for actual Māori result | Direct seat survives both settings; no invented alternative whole-seat totals |
These visuals should remain HTML/SVG/canvas driven from the real data. Generated art is unsuitable for percentages, seats, axes, ballot text, maps, flow quantities, or explanatory diagrams whose structure must be exact.
## Specific original-art brief
**Recommended deliverable:** one original square editorial illustration, approximately 1600×1600, integrated into the hero's right-hand panel. It should feel like the cover of a tactile political-science field notebook: layered cream paper, charcoal ink, deep teal and restrained rust, directional side lighting, subtle print texture, crisp cut edges and an intriguing physical ballot-processing object. Use unmarked sheets moving through abstract trays and interlocking paper forms to suggest counting, boundaries and representation. Make it expressive and somewhat impossible as a paper sculpture, so it is clearly conceptual.
**Composition:** dominant object in the center/right, calm lower area for an HTML caption, substantial breathing room; recognisable at 320 px; edge details can crop without changing meaning. Optional small crops of the same texture may recur as phase-divider decoration, with no extra tall banners delaying the evidence.
**Exclude:** text baked into pixels, exact counts, axes, numerical pictograms, party insignia, flags, national outlines, politician likenesses, invented election documents, simulated news photography, and culturally generic “voter” characters standing in for the four populations. Do not invent Indigenous visual motifs. If people are later included, do so in a separately researched, context-specific brief.
**Integration:** replace or simplify the current rotated photo collage as the principal hero visual; put its label in HTML as **Original conceptual illustration**. Keep real photographs within case records, accessible whole-image views and credits. Country cards should retain authentic location/context or use a neutral repeated case design with equal weight; do not allow Liberia to become the only country represented primarily through outside observers. An abstract hero is a mood-setting asset; it must not appear in the historical-record evidence stack.
## Preserve
- The source-driven tables and their semantic row/column headers.
- Whole-vote threshold calculations and separate historical seat counts.
- Explicit fractional benchmark, fixed-input and eligibility-only qualifications.
- Liberia's dated fresh-ballot distinction and warning against individual-voter inferences.
- Māori's protected directly elected seat and the difference between eligibility and allocation.
- Real-photo captions, attribution and license links.
- Reduced-motion support and strong keyboard focus treatment.
## Final browser checks requested
Inspect Israel lab at all three thresholds at desktop and 390 px, UK actual/benchmark at the same widths, Liberia's narrow case card, the UK case photograph, and the whole-photo view. Check grayscale/forced-color reading, 200% zoom, a screen-reader pass over each chart, and tab access to any scrolling data region. I have not claimed these rendered checks were completed in this independent source/asset pass.
Cross-review discussion
# Graphic-design council response
I agree with `student_1.md`, improvement 4: persistent compared results should be available while writing. That is stronger than merely remembering which buttons were pressed. I also accept `ux_2.md`, issue 7's qualification of my accessibility concern: numerical percentages and the qualifying-list detail already provide an alternative, so the defect is the unnecessarily indirect row reading. Explicit **Qualifies / Below threshold** labels resolve it without removing the calculation.
I challenge docket proposal 3 if four Rule Studies become four additional tall panels. `student_1.md`, improvements 1 and 5, identifies cumulative retrieval and writing burden; `ux_2.md`, issue 6, explains how nested evidence becomes difficult on phones. Extra visual drama should not move the changed consequence, comparison table, or writing field farther apart.
Resolve this by using each original illustration once within the existing opening visual space, with a compact crop and an adjacent HTML **Conceptual illustration** label. Keep a whole-image view optional. Avoid repeating art above the lab output or brief. At 390 px, put the result and its exact labels before decorative content. Preserve genuine photographs as dated contextual records with uncropped access.
Treat all four studies as expressive art, not instruction-bearing diagrams. Put thresholds, quantities, and rule logic in HTML/SVG. Especially reject arrows implying individual transfers in Liberia or a New Zealand composition that suggests adding electorate seats twice. Approve the art only alongside the already agreed axes, textual states, full-list access, and persistent numerical comparisons.
Visual · Gen Z salience and cultural framing
Blind first pass
# Graphics review 3 — editorial / younger-student perspective
## Scope and verdict
Blind review of `baseline/dist` source and its supplied JPEGs only. I inspected all four displayed case photographs, `photos.json`, `app.mjs`, `data.json`, and the stylesheet. No earlier reviews, browser, or product edits were used. This is an art-direction and source-based route review; viewport behavior has not been visually tested.
**The archive has a credible voice and a good first impression, but its visual energy is concentrated on the landing page.** Georgia headlines, paper, red stamps, and authentic election materials feel considered. They can appeal to younger students without becoming a youth-brand pastiche. Across four cases and sixteen stages, however, the same cream cards, small mono labels, tables, and form choices become visually interchangeable. More photographs alone will not fix this. The strongest addition is a small original visual language for the mechanisms, reused where students act on them.
Preserve the large headline, restrained navigation, real-source credits, reversible lab controls, and the quiet writing phase. Avoid rewards, cartoons of political leaders, social-feed styling, or a decorative gallery between tasks.
## Ranked issues and briefs
| Rank | Priority | Finding and evidence | Recommended brief / acceptance test |
|---|---|---|---|
| 1 | High | The most distinctive imagery explains *where*, not *how*. Each first-thought page uses a 265px context photo (`surprise()` / `photo()`, app lines 52 and 70; `.case-photo img`). The decisive local-win, eligibility, fresh-ballot, and top-up operations mostly remain prose, tables, or plain boxes. | Create one compact conceptual cover per case, all using a shared ballot / boundary / seat vocabulary. The concept must help a student name that case's operation in one sentence. Exact numbers, labels, and interactions remain HTML/SVG, not baked into an illustration. |
| 2 | High | Visual differentiation fades after the first thought. The next twelve phase headings repeat “Follow the rule,” “Change one thing,” and “Defend your choice” (`title()`, line 59); evidence and briefs repeat similar cream enclosures. The laboratory's distinctive layouts partly help, but New Zealand returns to another table. | Carry a small case-specific mechanism mark and short name into every phase: local victories / eligibility boundary / fresh second ballot / local plus list. Make the lab a recognizable work surface with a distinct light background and a prominent changing result. Keep writing quieter. A student should recognize country, stage, and current setting without rereading a paragraph. |
| 3 | High | Liberia has unequal editorial standing. It is absent from the three-photo hero while the other cases appear, and its only supplied image centers a meeting with EU observers and Prince Johnson, not the electorate or the counting mechanism (`home()`, line 56; `photos.json`). The caption is admirably specific, but the image becomes the case's main visual identity. | Give all four cases equal-size conceptual identities. Retain this image only as clearly labeled campaign context. If future documentary sourcing happens, seek a properly licensed local election setting or voter-administration image; do not invent one. Do not imply that outside observers are the principal actors in Liberia's democracy. |
| 4 | Medium | The paper archive treatment is coherent but familiar. Tilted image frames, ruled lines, rubber-stamp type, desaturated photos, and beige panels form an established editorial template (`.archive-art`, `.art-grid`, `.art-stamp`). Its originality currently comes mostly from the headline and the election puzzles. | Make the recurring art idea distinctive: **“rules as visible machines.”** Abstract ballot tiles encounter local cells, a threshold gate, a separate second-round chamber, or a two-path allocation device. Use crisp, slightly irregular cut-paper geometry with one vivid accent, not more archival texture. Keep documentary photos rectangular and clearly separate from these invented forms. |
| 5 | Medium | The human/source imagery repeats at different sizes but does not gain a new function. Home collage, route-card crop, case strip, and source-room image reuse the same small asset set. Full-width `object-fit: cover` also crops the actual materials and bilingual signs. | Avoid adding another full-width art band. Replace existing decorative image space, and offer a view of each uncropped authentic image with date, place, credit, and context. A compact case cover can substitute for the route-card photo while the case retains its genuine contextual photograph. Check UK polling signage and Israel/NZ ballot/sign text in the actual chosen crops. |
| 6 | Medium | The long notebook is nearly all repeated prose blocks and forms (`entry()` and `portfolio()`, lines 99–100). After four investigations, the student's accumulated work does not acquire a strong visual identity. | Reuse the four small case marks and present the two chosen comparison cases together with their cited figures. A filed mark should mean “work saved,” not “politically correct choice.” No new large artwork is needed here. The student's claims and numbers should become the visual center. |
| 7 | Lower | Some visual semantics could be mistaken for judgments: red versus teal is reused for different meanings, and an exclusion metaphor could easily be misdrawn as ballot invalidation. Current legends and labels mitigate this, but color alone is not sufficient. | Keep color meaning local and labeled. Use shape/text to distinguish “qualifies / does not qualify” and “historical / modeled.” Do not use a shredder, bin, fire, or crossed-out person to depict a valid vote for a nonqualifying list. No confetti when a preferred institution or candidate appears to “win.” |
## Proposed conceptual art system
**Art idea: a ballot does not become power by magic; a rule changes the path.** Four related paper constructions show a different operation. Large flat forms, generous empty space, a lively diagonal or interrupted edge, and one unusual crop can make them feel like editorial poster art. No faux-ageing is necessary: the genuine photographs already provide historical texture.
Use warm paper and ink as the base. Add one bright, high-contrast graphic accent used consistently for the operative rule; reserve existing red/teal interface colors for their labeled UI roles. Do not assign a country's entire electorate one party's color. Do not rely on national flags, tourist symbols, national costume, borders, or stereotypes to distinguish cases.
| Case | Conceptual cover | Useful lab continuation | Caption for the cover |
|---|---|---|---|
| UK — Where the votes land | Several abstract local cells each release one seat-shaped tile; many vote-shaped tiles in another cell do not release extra seats. Avoid a pseudo-geographic UK map. | Highlight a local first-place result and its single seat; contrast national aggregate with local outcomes. If exact counts are used, draw them from the actual selected constituencies and name that limited sample. | **Conceptual illustration — local first places produce seats. The shapes are not a map or a count of 2024 ballots.** |
| Israel — The line that matters | Valid ballot tiles remain intact while a list's aggregate meets or stops before an eligibility line. Beyond the line, show a separate, unresolved allocation stage rather than guaranteed identical seats. | Move the labeled 2 / 3.25 / 5% boundary over fixed, correctly scaled list-share bars. Make qualification visible in text. This is the strongest existing lab idea and needs refinement more than additional decoration. | **Conceptual illustration — valid votes and list qualification are different stages. This is not a photographed ballot or an exact seat allocation.** |
| Liberia — A second decision | Two separate date-stamped ballot chambers, a clean gap between them, and two finalists in the second chamber. Use a date bridge, not streams of individual people or ballots passing across. | Present 10 October and 14 November as separate records, with a clear fresh-ballot label and changing aggregate totals. Distinguish the one-round counterfactual from the historical second round. | **Conceptual illustration — two voting dates, with a new ballot in the runoff. No individual voter's movement is shown.** |
| New Zealand — Put the rules together | Two labeled entry paths meet at an OR junction; then one total-seat outline is partly filled by electorate seats and completed by list seats. No cultural pattern is needed to identify the case. | Keep the directly elected seat visible in both settings; distinguish entry to list allocation from keeping that seat. Show the list component filling the total, not sitting outside it as a bonus. | **Conceptual illustration — the 5% or electorate pathway opens allocation; electorate and list seats form a total. Shapes are schematic.** |
These are editorial covers, not substitutes for record tables. If a cover is generated as a bitmap, keep it free of supposedly exact text, ballot markings, numerical token counts, faces, official logos, and documentary realism. Add all meaningful labels and numbers in code. Exact diagrams should be authored as SVG/HTML and verified against the supplied data.
## Amount and placement
- **Four compact original covers total**, one per case. Reuse a simplified form on the route card and as a tiny phase/notebook marker. Build the landing hero from those same four forms if it is redesigned; do not commission a fifth unrelated spectacle.
- **First thought:** use the illustration within the space already occupied by the photo treatment, roughly 180–220px high at desktop, rather than pushing the question farther down. Retain a compact authentic photograph or an accessible “Place and date” expansion with its full credit. Never blend the genuine photo with invented scene elements.
- **Evidence:** add one short functional diagram adjacent to the specific rule when it replaces equivalent prose/boxes. Keep tables available. Do not repeat the cover at full size.
- **Lab:** reuse the same forms as live, labeled states. State change matters more than animation. One changed headline number and one local visual response are enough; honor reduced motion and never auto-advance.
- **Your brief:** at most the small mechanism mark plus a compact attached-record summary. Give the writing room space.
- **Notebook:** use the tiny four-case marks and paired cited figures, not more narrative illustrations.
Prefer vector/code assets. If raster covers are used, provide small responsive files, load the next case on demand, set dimensions to avoid layout shifts, and avoid video, parallax, looping texture, or heavy canvas. As a practical art budget, aim for each optional raster cover under about 100KB and the entire new raster set under about 400KB; these are production targets, not a measured performance guarantee. The current four displayed source JPEGs total approximately 1.77MB, so responsive sizing of existing photographs may save more than adding miniature icons costs.
## Documentary caption and cultural care
The current per-photo date/place captions and visible credit/license links are strong and should survive any redesign. Their factual specificity is more useful than a generic “Archive photo” label. Suggested display prefixes below distinguish photographs from the invented conceptual covers; preserve the existing attribution and license after them.
| Asset | Recommended visible caption |
|---|---|
| `uk2024.jpg` | **Historical photograph · 4 July 2024.** Brookfield Primary School serving as a polling station. This is a voting-place setting, not evidence of the national seat result. |
| `israel2022.jpg` | **Historical photograph · 1 November 2022.** Party-list ballot slips at a polling place in Givat Nesher. The photograph shows ballot materials; the results below establish qualification and seats. |
| `liberia2023.jpg` | **Historical photograph · campaign context, 9 November 2023.** EU election observers meet Senator Prince Y. Johnson in Ganta. This is not a voting or counting scene. |
| `nz2020_2.jpg` | **Historical photograph · 13 October 2020.** An advance voting place on Willis Street, Wellington. This is an election setting, not a visual record of MMP allocation. |
- **UK:** a fictional group of local cells should be labeled schematic; a geographical map would need verified boundaries and must not imply the three selected constituencies explain all 650 outcomes. Use the whole “United Kingdom” label already present.
- **Israel:** preserve real Hebrew/Arabic content and direction in documentary images. Do not synthesize ballot text, use military/conflict imagery as generic identity, or equate a nonqualifying list with invalid citizens or invalid ballots. The mechanism is list eligibility.
- **Liberia:** equal editorial status matters. Avoid a visual shorthand of foreign supervision, poverty, disorder, or a generic “African” polling scene. The existing meeting photograph is usable with its narrow context; it should not represent all Liberian voters. Do not fabricate a more convenient historical photograph.
- **New Zealand:** preserve “Māori” with its macron; distinguish the party from Māori people as a whole. Do not invent koru, carving, weaving, or other Māori design motifs for decorative national flavor. The electorate pathway is a general rule, so use the same route geometry for any party that qualifies, not a caricature of a special ethnic exception.
## What to prioritize first
1. Give all four countries equal visual standing and clarify the Liberia image's limited context.
2. Make one accurate, reusable mechanism visual per case, particularly local-cell plurality and MMP's OR/top-up structure.
3. Carry those marks through phases, vary the lab surface, and let the student's assembled evidence become the notebook's final visual payoff.
The target is memorable intellectual structure: “I remember the local cells / the gate / the new ballot / the top-up.” That is more useful than making students remember four additional posters.
Cross-review discussion
# Graphics 3 — council discussion
I agree with `faculty_1.md` **F1/F2**: a memorable diagram must teach compensation and preserve the difference between selecting one president and allocating an assembly. The four approved Rule Studies should depict different operations, not four interchangeable ballot boxes. New Zealand needs one total-seat outline filled first by electorate seats, then list top-ups; Liberia needs separate dated chambers, never individual-voter transfer streams.
I also agree with `ux_1.md` **1/3/6**: visual confidence depends on dependable agency. A filed mark must survive inspecting another setting, navigation must resume the active stage, and draft/save status must update truthfully. Art cannot compensate for those failures. Reuse a small mechanism mark for orientation; keep filed/draft indicators separate from judgments of correctness.
I challenge adding a compulsory observation field in docket **5**, and challenge displaying a worked Rule Study too early in docket **4**. Both could increase completion burden or give away the transfer answer. Use the existing brief to request one changed consequence across the two inspected settings and one correction or confirmation of the first thought. Assess that reasoning through instructor review, not a word gate.
Precise resolution: first thought gets a compact conceptual cover without case-specific solution labels; after the initial response is saved, the same geometry becomes a labeled evidence/lab diagram. Preserve the unaided response alongside later revisions. Replace existing visual space, retain authentic photos with dated context, and add no gallery, compulsory illustration-reading task, or celebratory reform score.
UX · navigation and task flow
Blind first pass
# UX/product flow review — After the Count
Reviewed only the product snapshot in `review_round/baseline/dist`. This was a source-based walk of launch, all four stages, case changes and backtracking, brief filing, the comparative brief, and browser save/export/restore. I also executed the existing action handlers in a Node VM with rendering/DOM effects stubbed to confirm the state transitions below. No browser or visual layout claims are included. No product source was edited.
## Overall assessment
The intended linear route is coherent: first thought → bounded interpretation checks → two lab settings → a brief → a final two-case argument. The explanation of historical records versus fixed-input comparisons is present at the assignment and in the labs. Open writing is not automatically graded, and the worked-step route after two unsuccessful checks prevents indefinite stalling. TXT and JSON exports are available before completion, which is useful.
The principal problems appear when students use the promised freedom to revisit cases, consult their notebook, or restore work. The app mixes exploration, editing, completion, and navigation state in ways that can unexpectedly undo progress or send students to the wrong place. Fix these without locking cases into a compulsory order or making political preferences into correctness checks.
## Prioritized findings
### 1. P1 — Reopening a lab to inspect a different setting silently unfiles a completed brief
**Actions:** File all four briefs and mark the portfolio complete. Open an earlier case, choose **Rule lab**, and click its other setting to check a number for the comparative argument. Do not edit any brief text.
**Result:** The case immediately changes from filed to unfiled and the completed portfolio becomes incomplete. The VM confirmed the filed count changes from 4 to 3 and `final.complete` becomes false. This is a normal evidence-consultation action, so the student has no reason to expect it to revoke submission status. On returning to the notebook, **Mark portfolio complete** now refuses completion until that old brief is filed again. Filing the old brief then sends the student to the next country rather than back to the comparative work.
**Anchors:** `app.mjs:126` clears `c.filed` and `S.final.complete` whenever the viewed lab setting changes; `app.mjs:110` advances to the next case after every filing; `app.mjs:114` requires all cases to remain filed. Equivalent standalone handler: `After_the_Count.html:483`.
**Fix:** Separate the currently inspected lab setting from the evidence snapshot associated with a filed brief. Viewing another tested setting should leave the filed brief intact. Actual edits can create a visibly marked draft or **Update brief** state; do not silently revoke the saved submission just for exploration. Offer a return to the notebook after an update made from comparative work.
### 2. P1 — Restore replaces the current notebook immediately, without a recoverable checkpoint
**Actions:** Write substantial current work. Open **Notebook → Restore JSON** and select an older valid export, or the wrong partner's valid export.
**Result:** `S` is replaced as soon as parsing succeeds, and `event('notebook_restored')` immediately writes that replacement over the sole browser copy. There is no preview of the incoming name/date/progress, no preserved current copy, and no undo. The old work can be lost even though restore is presented next to ordinary download actions. By contrast, starting fresh does at least surface an export step.
**Anchors:** `app.mjs:153` (`S=replacement; event(...); render()`); `app.mjs:45` calls `save()`; `app.mjs:44` writes a single storage key. Restore entry points are in `app.mjs:57` and `app.mjs:100`. Standalone: `After_the_Count.html:510`.
**Fix:** Parse and validate the candidate first, show the incoming notebook's name/date/progress, and preserve the current notebook before applying the replacement. A recoverable pre-restore browser snapshot or automatic backup copy avoids requiring students to anticipate mistakes. Make clear that **Download JSON** exports and **Restore JSON** replaces; the current **Download / restore JSON** label actually only downloads.
### 3. P2 — Return and Continue do not consistently resume the work the student was doing
**Actions and observed transitions:**
| Starting point | Action | Destination |
| --- | --- | --- |
| Liberia lab, with earlier cases still unfiled | Notebook → Return to investigations | First unfiled case, First thought; not Liberia lab |
| A partially completed case | Visit another case, then select the original case | First thought, irrespective of the original stage |
| Completed comparative portfolio | Case index → Continue your investigation | Last case and phase, typically New Zealand's brief; not the comparative portfolio |
There is one global `caseIndex/phase`, no remembered stage per case, and no saved return destination from the notebook. `goto('portfolio')` preserves the old case coordinates, but the notebook's return action ignores them. Returning students can recover through tabs, but the primary controls do not take them where their labels imply. At full completion there is no **Return to investigations** button in the notebook at all; editing a particular entry requires the case index, the case, and the appropriate stage.
**Anchors:** `app.mjs:20–21` stores no per-case phase; `app.mjs:120` always opens a selected case at phase 0; `app.mjs:131` chooses the first unfiled case at phase 0; `app.mjs:118` sends Continue to `case` regardless of completed portfolio state; `app.mjs:99–100` has no edit links on notebook entries.
**Fix:** Remember each case's last stage and an explicit notebook return location. **Resume** should prioritize that location; **Continue** should open comparative work when all briefs are filed. Add a specific **Review/edit this case** link to each notebook entry and a jump to the comparative form. Keep all case and stage tabs available for deliberate revisiting.
### 4. P2 — Case-card launch creates a different onboarding state from the main launch button
**Actions:** On a fresh notebook, click an archive case card rather than **Open the archive**. Complete a first thought or check, return to the case index, and click the now-labeled **Continue your investigation**.
**Result:** The student gets the assignment setup screen rather than their active work, because case-card launch never records `investigation_started`. Clicking **Begin with the United Kingdom** then resets navigation to UK First thought even if the student was investigating another country. Starting priorities, optional identity, solo/pair mode, and the explanation of historical versus model evidence were never offered on that path. Because event history is capped at 500 entries and launch state is inferred from the presence of an old event, a sufficiently long session can also lose the launch marker.
**Anchors:** `app.mjs:56` exposes direct case cards and uses any events to choose the Continue label; `app.mjs:118–120` uses the presence of `investigation_started` for routing but only **Begin** creates it; `app.mjs:45` trims the event log.
**Fix:** Store explicit setup/started state independently of the event log. A case-card first launch can show the same brief assignment once and then continue to the selected case, or explicitly offer a skip while setting a consistent started state. Returning students should not be sent through setup or reset to UK solely because of the way they originally entered.
### 5. P2 — Advancement requirements differ between the bottom CTA, tabs, and Back
**Actions:** On a new case, leave the first thought unselected and click the **2. Evidence & rule** tab. Separately, on a fresh notebook click Israel's case card and then **Back**.
**Result:** The Evidence tab bypasses the prediction requirement enforced by **Save first thought & open the evidence**. Back from Israel's First thought opens UK's **Your brief**, even though UK has never been investigated. From that blank brief, completing the writing and clicking File sends the student to the lab first, because the filing validator checks lab coverage before interpretation readiness; after that lab it can send them back to evidence. The same student can therefore encounter contradictory stage order depending on which controls they used. These are actual handler transitions, not merely missing disabled styling.
**Anchors:** `app.mjs:121` only guards phases 2 and 3; `app.mjs:122` alone enforces a prediction; `app.mjs:129` goes to the previous case's phase 3 unconditionally; `app.mjs:110` checks `tested.length` before evidence readiness.
**Fix:** Centralize first-time advancement requirements and use the same transition logic for tabs and CTAs. Back should return to the previously visited location, or the previous case's remembered stage. Allow free return to stages the student has already reached; avoid adding a linear lock across countries. If prediction is intentionally optional, make the CTA and notebook expectations say so consistently.
### 6. P2 — Filing and final-completion errors do not identify the field that needs attention
**Actions:** Complete a case brief except for one required item, such as the attached record, and click **File this brief & continue**. In the comparative brief, leave one required field blank and click **Mark portfolio complete**.
**Result:** Both actions produce a general toast for 3.5 seconds, without field-specific errors, focus, or an inline indication of what is missing. A source-only omission produces the same long message as an entirely empty brief. After revisiting a filed brief, edits also change the underlying filed/completed flags without updating the visible sidebar checkmark, count, or filing label until the next render. The student is asked to infer both whether the brief remains filed and what will make filing succeed.
**Anchors:** `app.mjs:46` gives the toast a 3500 ms timeout; `app.mjs:110` and `app.mjs:114` return one compound validation message; `app.mjs:148–149` invalidates filing on text/selection edits but does not refresh progress indicators; `app.mjs:58` and `app.mjs:93` render those indicators only when the page is rebuilt.
**Fix:** Mark the specific missing fields, keep a persistent short validation summary, and focus the first missing control. Update filing status in place to **Draft changes saved — update brief when ready**. Keep instructor judgment of argumentative quality separate from these purely structural requirements.
### 7. P2 — A save failure while typing leaves the visible “Saved in this browser” claim stale
**Actions:** With a case or brief already displayed, make browser writes fail (for example by injecting a throwing `localStorage.setItem` for verification), then type into a field.
**Result:** `save()` changes `saveAvailable` to false, but the input handler does not update the displayed save label or mount a warning. The student can close the tab while the screen still says **Saved in this browser**, even though the latest text was not persisted. A later full render reveals the warning, but that may occur after the moment when it matters.
**Anchors:** `app.mjs:44` catches write errors without notifying the current UI; `app.mjs:55` and `app.mjs:95` derive save notices only while rendering; `app.mjs:143–150` saves after typing without rendering or updating a save-status element.
**Fix:** Have `save()` update a persistent live save-status element immediately on success/failure. On failure, show a durable download action alongside the warning while retaining the text in memory. This can be a local UI update rather than a whole-page rerender that would disturb typing.
## Verification limits and additional navigation note
The hosted and standalone editions duplicate the same application logic, so fixes should reach both artifacts. I did not review browser rendering, external source availability, or the instructor documents. The source does not create browser history entries or handle `popstate`; only the in-product Back button navigates stages. Native browser Back will therefore not reverse an in-app stage transition. If browser Back is intended to behave as students expect, add history support without losing autosaved text.
No finding above calls for grading free responses automatically, requiring a particular reform preference, removing the supported route, or preventing students from revisiting completed cases.
Cross-review discussion
# UX council response
I agree with `student_1.md` improvement 1 and `learning_2.md` P1 synthesis finding: the comparative argument must be visibly pending and directly reachable before export appears to finish the assignment. Put that form first, show the selected cases’ two-setting evidence beside it, and give each notebook entry a returnable edit link. The implemented bookmarks, exploration-safe filing, and restore backup address my strongest continuity concerns.
I challenge the additional observation field floated in docket proposal 5. `student_1.md` improvement 5 counts ten required prose fields; `learning_2.md` P1 “Make the lab produce a usable comparison” explicitly recommends using the existing explanation. Another mandatory box would add procedural work without establishing better reasoning.
Resolve this by automatically displaying both tested settings and revising the existing brief prompt: name one changed consequence, explain its mechanism, acknowledge a cost, and say what the opening thought now gets right or needs to change. Require next-evidence writing in one early case and the final comparison; make the other instances optional or reusable. For New Zealand, reuse the opening hunch for the unaided supplied-rule explanation, preserving that original separately from supported revisions (`learning_2.md`, independent-transfer finding).
Plan approximately 75 minutes or two resumable parts, reserving real time for synthesis and export. This is a facilitation estimate, not measured student performance. Keep free revisiting, meaningful repairs, and access to worked support.
UX · accessibility and narrow layouts
Blind first pass
# Blind accessibility and mobile UX review
Reviewed only `baseline/dist/index.html`, `app.mjs`, `style.css`, and the corresponding embedded implementation in `After_the_Count.html`. This is a source review; the coordinating reviewer owns the live browser. No product files were changed. “Confirmed” below means the implementation itself establishes the defect; assistive-technology announcements and exact narrow-screen geometry still need a live check.
## Ranked findings
### 1. P1 — Core interactions discard keyboard focus
**Confirmed source flaw.** `app.mjs:101` replaces every child of `#app` on every `render()`. Passing `false` only skips the later focus-to-main operation; it does not preserve the focused node. Check (`107`), Hint (`124`), every rule-setting button (`126`), and successful portfolio completion (`114`) all call `render(false)` immediately after activation. The focused control is removed, and no replacement receives focus. The equivalent standalone anchors are `After_the_Count.html:458`, `464`, `481`, `483`, and `471`.
This occurs repeatedly in the central learning workflow, especially when comparing settings. A keyboard user can lose their place and have to traverse the header and case navigation again. Scrolling feedback into view does not move keyboard or screen-reader focus. Recreating the populated `.lab-output[aria-live]` and `.feedback[role=status]` also makes announcement of their initial contents dependent on the browser/AT combination.
**Repair:** Keep the controls and a small live result/status container mounted, updating their state and results in place. If a full rerender remains necessary, capture a stable identifier for the activating control and explicitly focus the replacement with `preventScroll`; on a check, deliberately move focus to a focusable feedback heading or retain the check button and announce the result from a persistent status node. Preserve the current main-focus behavior for actual page/stage navigation. Verify Enter/Space, the next Tab, and radio-arrow navigation after each action.
### 2. P1 — A save failure can leave a false “Saved” assurance on screen
**Confirmed source flaw.** `save()` (`app.mjs:44`) only changes `saveAvailable`. Text inputs save without rendering (`143`, `146`–`149`), while `warning()` (`55`) and the “Saved in this browser” footer (`95`) are interpolated only at render time. Consequently, if reads succeed but a later `setItem` fails, typing leaves the old “Saved” message and no warning on the current screen. This is especially consequential during the longer evidence-based explanation. The final-brief handlers (`145`–`146`) even set “Changes saved” before calling `save()`, so that assurance is independent of write success. Mobile hides `.next-row .micro` entirely (`style.css:4`), removing even the normal save cue.
**Repair:** Let `save()` return a result and update one persistent, visible save-status component after each attempt. On first failure, show and announce a durable warning with a direct notebook-export action; update the status back to saved only after a successful write. Keep this component available on phones. Avoid announcing success for every keystroke; a debounced or changed-state announcement is sufficient. Retain the typed work in memory and the existing export mechanism.
### 3. P2 — Editing checked work leaves old success feedback and controls visible
**Confirmed source flaw.** Answer handlers (`app.mjs:147`–`148`) correctly invalidate `checked`, `filed`, and final completion in state, but do not clear `c.feedback` or update the current check UI. After a passing check, change a radio response or numeric answer: the success text, green panel, “Check again,” and enabled “Take this rule into the lab” can remain visible while the answer is now unchecked. A later hint rerender can put the old success sentence into a repair-styled panel. Recommendation/reason/source edits likewise invalidate a filed brief without updating the visible filed mark or “Update brief” label. The final-form handlers update completion text but leave its action label and have no live status semantics (`100`, `145`–`146`).
**Repair:** Add a small `invalidateCheck()`/`invalidateBrief()` update path that clears obsolete feedback, marks the current answer as changed, updates progression labels/availability and visible completion marks, and announces the changed status once. Do this without replacing the active input or moving its caret. Keep the two-attempt support path and the existing substantive checks.
### 4. P2 — Missing-field feedback disappears without marking or locating the problem
**Confirmed source flaw.** Filing a brief (`app.mjs:110`) and completing the portfolio (`114`) report missing work only through a generic toast. `toast()` (`46`) lasts 3.5 seconds. Fields have useful labels, but no persistent validation message, `aria-invalid`, linked error description, or focus movement to the missing item (`51`, `93`, `100`). The final form is below all four long notebook entries; when its completion attempt fails because an earlier brief is missing, there is also no direct link to that case. This creates avoidable search work, particularly at zoom or on a phone.
**Repair:** On submission, show a persistent local error summary naming the missing fields/cases, link it to the affected input/case, mark the fields, and focus the first missing control or summary. Keep the polite toast for short incidental notices. This should identify absent work, without evaluating or coaching the quality or political content of the argument.
### 5. P2 — Reduced-motion support is bypassed by explicit JavaScript scrolling
**Confirmed source flaw.** The reduced-motion media query is present (`style.css:5`), but `check()` and `finish()` explicitly call `scrollIntoView({behavior:'smooth', ...})` (`app.mjs:107`, `114`). Explicit API scroll behavior is separate from the CSS `scroll-behavior:auto` override. Those two common actions can still animate a potentially long scroll for someone requesting reduced motion.
**Repair:** Use a shared scroll helper that selects `auto` when `matchMedia('(prefers-reduced-motion: reduce)').matches` is true. Alternatively omit the explicit behavior and let the CSS preference control it. Keep the CSS transition override already present.
### 6. P2 — Phone data and writing layouts need a dedicated narrow-screen treatment
**Confirmed design choices, rendering risk until live measured.** Below 760px, tables shrink to `.77rem` (about 12.3px), case country labels to `.68rem` (about 10.9px), and case sublabels to `.6rem` (9.6px), in `style.css:4`. Tables sit inside horizontal-overflow wrappers (`style.css:2`; `table()`, `app.mjs:49`) but have no visible scroll cue or explicit named focusable scrolling region. New Zealand uses five-column historical data and four-column lab data (`64`, `90`), including long headers; the writing-stage record is nested inside `.paper` and `.record-body`, reducing the available width further (`93`). The topbar and nav are both nonwrapping flex layouts (`53`, `style.css:2`/`:4`), creating a separate overflow risk around 320 CSS pixels.
The four-row case explanation and five-row comparative explanation (`93`, `100`) can hold much less of a reasoned paragraph visibly on a phone, particularly with a software keyboard. Vertical textarea resizing exists, but is not a dependable phone affordance. This is a write-space risk, not evidence that students need a shorter or easier task.
**Repair:** Test at 320px and 390px plus desktop 200%/400% zoom. Wrap or stack the header controls. Preserve legible table type, scope horizontal scrolling to the table, add an obvious scroll cue and an accessible named region when it overflows; consider a sticky party/candidate column. Let the main explanation expand with content up to a useful viewport limit, with a clear expand-writing-space action and access to the cited figures. Keep all quantitative columns and the current mechanism/assumption/trade-off requirements.
**Do not overclaim:** The source already provides correct column and row headers and captions for the main record tables; horizontal scrolling is not itself a failure. Exact clipping, page-level overflow, and browser-default keyboard scrolling of overflow containers require the live check.
### 7. P3 — The threshold chart makes row eligibility harder to read without color
**Confirmed encoding limitation, not a complete absence of an alternative.** Israel's threshold rows (`app.mjs:88`) expose party names and percentages, but the per-row qualification state is encoded only by teal/gray bar classes plus the red threshold line. The legend itself says “Teal bars qualify; gray bars fall below.” A reader can still compare the printed percentage with the printed threshold, and an expandable list names all qualifying lists, so this should not be characterized as wholly inaccessible data. Nonetheless, at the close Meretz boundary or in grayscale/forced-colors, the immediate row outcome is unnecessarily dependent on color. New Zealand already uses visible Yes/No labels (`90`). UK also prints the main numeric values (`87`), and Liberia writes the selected/winning candidate explicitly (`89`).
**Repair:** Add a small visible “Qualifies”/“Below threshold” label to each Israel row, or a clear pattern plus text; keep the percentages and cutoff calculation. This changes the lab output presentation, not the difficulty of the earlier interpretation question. Mark decorative bars/threshold lines appropriately so assistive technologies read concise row text rather than chart scaffolding.
### 8. P3 — Download feedback in the reset modal is outside the active modal
**Confirmed placement; AT impact needs a live check.** `index.html:15` places the only status node outside the dialog. The reset dialog includes a “Download JSON” action (`app.mjs:137`), which calls `exportFile()` and updates that outside toast (`113`) while the modal remains open. Native `showModal()` (`103`) makes the outside page inert, so the sole download confirmation is outside the active accessible dialog and beneath the top-layer backdrop. Its 3.5-second visual lifespan adds fragility. The success wording also claims “downloaded” when the app has only initiated a browser download.
**Repair:** Add an in-dialog status region for modal actions, or have the export helper route its message to the active dialog; say “Download started.” Keep the modal open and let the student make the explicit Clear choice. The existing native dialog, labelled title, visible Close button, and native Escape/focus trapping are sound choices; no custom modal system is needed.
## What is already working
- Visible focus outlines, a skip link, native buttons/inputs/selects/details, fieldsets/legends, implicit form labels, and numeric input labels are present.
- Major navigation focuses `main`; the problem is confined to rerenders that skip replacement focus.
- Radio state is available natively; model-setting buttons correctly expose `aria-pressed`; stage/case location uses `aria-current`.
- Photos have contextual alternatives and documentary attribution; purely decorative route-card images are empty-alt.
- Historical/model distinctions, fixed-input limits, source access, worked-step support, and multiple defensible recommendations preserve substantial analytical work. The repairs above should make that work operable, without supplying a preferred policy answer.
## Priority live checks requested of the coordinating reviewer
1. Keyboard activate a rule setting, Check, and Hint; record the active element and next Tab destination. Confirm feedback announcements with one screen reader if available.
2. Pass a check, edit one answer, and inspect the feedback/CTA state before checking again.
3. At 320px and 390px, inspect the header, NZ tables, open “View the figures while you write,” and the final writing form with a software-keyboard-sized viewport. Distinguish table-only scrolling from page overflow.
4. Enable reduced motion and activate Check/Finish. Inspect reset-modal download feedback and close/focus restoration.
Cross-review discussion
# Accessibility and mobile council response
I agree with `graphics_2.md` (“Only one setting is visible at a time”) and `student_2.md` problem 3: comparison values belong beside the writing task. Remembering 417,400 and 127,990 while navigating to a notebook tests interface memory rather than electoral reasoning. The proposed focus, save-status, and inline-validation repairs address prerequisites for doing that work reliably (`ux_2.md`, findings 1–4).
I challenge a literal side-by-side dashboard on phones. Adding axes, eligibility text, four conceptual Rule Studies, complete datasets, and another mandatory observation field could make the required evidence harder to find. `graphics_2.md` already identifies narrow-layout compression; `student_2.md` problem 5 shows the cost of repeated navigation. More visible material is not automatically more accessible.
Resolve this with a compact **Compared settings** summary immediately above each explanation field: two named settings with the exact changed measures. Stack those setting summaries on narrow screens; retain readable numbers and explicit units. Keep the full chart and all-list table available through clearly labelled details. Make conceptual art compact and outside the evidence-to-writing path. Preserve focus and draft text when opening references.
Reject the extra required observation field in docket item 5. Instead, revise the existing explanation prompt to require a consequence supported by both settings and a sentence revisiting the first thought. This keeps the analytical demand while removing navigation and duplicate composition. Do not impose word-count gates.
UX · reliability and exports
Blind first pass
# UX 3 — reliability, recovery and output review
Reviewed only the frozen `baseline/dist` files and `baseline/build-portable.py`. No product edits, earlier reviews, history or shared-browser actions. Tests executed `app.mjs` against a minimal DOM/localStorage stub with the actual `elections.mjs`, `data.json` and `photos.json`. Browser rendering and external URL availability were not verified here; those limitations are separated below.
Severity: P1 = credible loss of a student's work under a misleading success indication; P2 = material state, workflow or submission-record defect; P3 = minor clarity issue.
## Confirmed findings
### F1 — P1: a write failure keeps the visible “Saved in this browser” claim
**Anchors:** `baseline/dist/app.mjs:44` (`save`), `:55` (`warning`), `:95` (`nextRow`), `:143–149` (`inputEvent`). Applies unchanged to the standalone edition.
**Reproduction:**
1. Open a case while browser storage works; the bottom status says “Saved in this browser.”
2. Make subsequent `localStorage.setItem` calls throw, for example by exhausting quota or using a test storage adapter that begins throwing after initial rendering.
3. Type into “Your first thought” or another text field without navigating away.
4. The new text exists in memory, `saveAvailable` becomes `false`, and persisted JSON still contains the older text. The DOM remains unchanged: no warning appears and “Saved in this browser” remains visible.
5. Closing the tab at this point loses the new text despite the visible success claim. Navigating later does reveal the warning because it rerenders.
**Evidence:** source execution returned `saveAvailable:false`, `UIWarning:false`, `UIStillSaved:true`, `savedContainsNewText:false`, `DOMChanged:false` immediately after the failing input save. Initial read-blocked storage does correctly show a warning; this finding concerns failures after the screen was rendered.
**Concrete fix:** make `save()` update a persistent, live status area whenever availability changes. Keep field focus/caret intact; do not rerender the whole form on every keystroke. Expose the download action beside the failure status. A later successful save should update that same area.
### F2 — P2: edited draft checks retain old success feedback and are exported as “submitted” answers
**Anchors:** `baseline/dist/app.mjs:85` (`evidence`), `:98` (`answersText`), `:99` (`entry`), `:107` (`check`), `:111` (`plainNotebook`), `:147–149` (`inputEvent`).
**Reproduction:**
1. In the UK evidence check choose the correct answers and click “Check my interpretation.” The success feedback says “The unit and mechanism are consistent with the record.”
2. Change the first answer to an incorrect option without checking again.
3. The old success feedback and enabled next-step presentation remain on screen, although state has already changed to `checked:false`. Clicking the previously enabled continuation is then refused by `nextEvidence()` after one attempt.
4. Open the notebook or download TXT. The new, unsubmitted choice is called “Your submitted interpretation checks” / “Submitted check answers.” The attempt count and event refer to the prior submission, whose answer values are no longer retained.
5. If the page rerenders, the old success text is still present, now inside the repair styling, because `feedback` was never cleared. JSON restore happens to remove it by initializing feedback to an empty array.
**Concrete fix:** retain `lastSubmittedAnswers` with each check event and label/export those as submitted. Label live values as draft if they are shown. When an answer changes, clear or visibly supersede old feedback and refresh only the relevant check status/continuation affordance. Preserve the two-attempt supported path and do not add correctness scoring to the student's political recommendation.
### F3 — P2: JSON restore accepts inconsistent identities and completion state, and can restore a notebook that then crashes
**Anchors:** `baseline/dist/app.mjs:22–40` (`restore`), especially `:30`, `:33`, `:36`, `:38–40`; downstream `:94`, `:99`, `:110–114`, `:118`, `:153`.
**Reproduction A — inconsistent output and gates:**
1. Download notebook JSON and edit the UK case to use `prediction:"99"`, `recommendation:"bogus"`, `source:"Unknown record"`, `tested:["actual","actual"]`, `checked:true`, plus nonempty explanation and next-evidence fields.
2. Restore it. The file is accepted. TXT prints `First thought: undefined` and `Recommendation: undefined`; rendered radio groups have no selected option while the saved values remain nonempty.
3. With `filed:false`, filing accepts the duplicate same-setting array as two comparisons and accepts the unknown recommendation/source. Source execution confirmed the case becomes filed and navigation advances.
4. Set the final case selection to `["uk2024","uk2024"]`, use a nonempty arbitrary goal and arguments, and give all cases `filed:true`. “Mark portfolio complete” accepts the length of two as two cases.
5. An imported `final.complete:true` is retained even if every case is otherwise empty. `checked`, `supported` and `filed` also use truthiness, so a string such as `"false"` becomes `true`.
**Reproduction B — post-restore crash:**
1. In otherwise valid JSON set `events:[null]` and `view:"home"`.
2. Restore, then click “Continue your investigation.”
3. `S.events.some(e=>e.type===...)` throws `Cannot read properties of null (reading 'type')`; the primary start action fails.
**Concrete fix:** validate/deduplicate enum arrays, validate option indices and historical-record/goal identities, require actual boolean fields, bound integer attempts, and validate event records before committing replacement state. Recompute or invalidate derived `checked`/`filed`/`complete` state when prerequisites are absent. Handle unknown versions explicitly. Reject a malformed file without replacing the current notebook, or show a clear recoverable-normalization summary. This is recovery correctness, not an anti-tampering grade mechanism; open reasoning should remain the student's work.
### F4 — P2: startup conflates an unreadable notebook with unavailable storage, then overwrites the recoverable original
**Anchors:** `baseline/dist/app.mjs:23`, `:42–44`, `:55`, `:102`.
**Reproduction:**
1. Seed `after-the-count-v1` with `{"version":0,"cases":{},"name":"Recoverable prior notebook"}` (or a corrupted JSON string).
2. Reload. The catch silently substitutes a fresh notebook and displays “Browser saving is unavailable,” although storage may work normally. No migration or “could not restore this notebook” explanation is shown.
3. Click “Open the archive.” `goto()` saves the fresh state over the original key. Source execution confirmed that the original name disappears and version 1 replaces version 0.
**Concrete fix:** distinguish read failure, parse failure and unsupported version. Preserve the original payload in a backup/recovery path and prevent automatic overwrite until a migration or deliberate new-notebook action occurs. Offer a raw recovery download. No prior schema was supplied in this review, so a particular legacy migration cannot be validated; the defect is silent fallback and overwrite, not failure to support an invented schema.
### F5 — P2: phase navigation bypasses the required first-thought task
**Anchors:** `baseline/dist/app.mjs:96` (`casePage`), `:110` (`fileBrief`), `:121–122` (phase versus prediction-next actions).
**Reproduction:**
1. Open a fresh UK case and leave its prediction blank.
2. Click the “2. Evidence & rule” phase tab. It opens immediately; only “Save first thought & open the evidence” checks the prediction.
3. Complete the checks, compare two settings and fill the brief. Filing succeeds without any prediction because `fileBrief()` does not require one. Repeat for all cases to complete the portfolio with all first thoughts absent.
**Concrete fix:** use one phase-access check for buttons and phase tabs, and validate the presence of a valid first-thought option before filing. Keep all options acceptable as an initial hypothesis; this should require making the thought visible, not selecting the correct hypothesis. Revisiting earlier work should remain easy.
## Successful verification and boundaries
- The ordinary four-case path was source-executed: correct bounded checks, two settings per lab, filed briefs, two different comparison cases and comparative argument. It reached four filed briefs and `final.complete:true`.
- That completed state round-tripped through `restore(JSON.parse(JSON.stringify(S)))` with equivalent data except intentionally/unintentionally discarded feedback. Normal TXT contained no `undefined`; normal JSON was 6,438 bytes.
- A representative maximum-length ordinary notebook with 10,000 UTF-16-code-unit text fields and 500 events was 349,752 bytes, under the 1 MB import cap. No ordinary self-export size problem was found.
- Fresh recommendation/prediction choices are blank, not preselected. Filing rejects missing recommendation, record, explanation or next evidence; finishing rejects an unfinished case set or missing comparative fields. The findings above concern bypasses/invalid states, not a proposal to grade open reasoning automatically.
- TXT includes historical source URLs, each case's current and tested model summaries, interpretation answers, case status and event history. JSON contains the recoverable working state.
- The portable HTML's module begins with the exact current `elections.mjs` and contains the exact transformed current app. It has zero `fetch()` calls, zero external imports, no relative `assets/...` image sources, and exact embedded payloads matching the distributed Word manual and narration. Thus no stale portable-source mismatch was found in this snapshot.
- The hosted manual, narration and standalone HTML download targets exist. In standalone HTML the first two become embedded-byte downloads and the self-download link becomes edition text. Browser click/download behavior was not exercised here.
- No in-product link to the distributed PDF manual is present; only Word is offered. This is an optional format/discoverability gap unless PDF access is a requirement.
## Print risk requiring browser confirmation
**Anchor:** `baseline/dist/app.mjs:99–100`, `baseline/dist/style.css:6` (`@media print`).
`All tested comparisons` is a default-closed `<details>` containing the numeric outcome for every setting. Print CSS does not force it open or provide a print-only duplicate. If the target browser preserves closed details in print, only the last lab summary and setting names will print; alternate numeric evidence is lost. Interpretation answers already use a separate print-only paragraph, which is a suitable pattern here. Root should compare a PDF/print preview after testing two settings with the details closed. I have not asserted browser behavior as a confirmed defect.
Print-only comparative argument/reconsideration paragraphs also omit the on-screen field labels because those labels sit in `no-print` elements (`app.mjs:100`). Add explicit labels if the printed submission should stand alone.
## Source and document link inventory for root's URL checks
These links are present in the build; no claim is made here about current remote availability, redirect behavior or source contents. `sourceLinks()` uses this order and the labels below (`app.mjs:67–69`). Generic credits also link `UK2024.source`, `ISRAEL2022.source`, `LIBERIA2023.observerSource` and `NZ2020.source` at `app.mjs:106`.
### Local documents
- `After_the_Count_Instructor_Manual.docx` — Instructor manual · Word (hosted); embedded `#manual` download (portable).
- `After_the_Count_Instructor_Narration.txt` — Spoken walkthrough · TXT (hosted); embedded `#narration` download (portable).
- `After_the_Count.html` — Standalone simulation · HTML (hosted).
- `After_the_Count_Instructor_Manual.pdf` — file exists, no app link found.
### United Kingdom
1. National results and data — https://commonslibrary.parliament.uk/research-briefings/cbp-10009/
2. First and second places — https://commonslibrary.parliament.uk/research-briefings/cbp-11175/
3. Clacton result — https://members.parliament.uk/constituency/3989/election/422
4. Woking result — https://members.parliament.uk/constituency/4407/election/422
5. Barnsley result — https://www.barnsley.gov.uk/services/voting-and-elections/election-results/uk-parliamentary-general-election-4-july-2024/
### Israel
1. Final official national results — https://votes25.bechirot.gov.il/nationalresults
2. 2022 English rules guide — https://www.gov.il/BlobFolder/news/elections-25/ru/Guide-to-Knesset-Elections-en.pdf
3. Threshold history — https://main.knesset.gov.il/EN/About/Lexicon/Pages/ElectoralThreshold.aspx
4. Allocation rules — https://main.knesset.gov.il/EN/About/Lexicon/pages/seats.aspx
### Liberia
1. NEC first-round record — https://necliberia.org/results/president.php?4df8f4a95b9ccaeffba51d2193fe766d30fe57c666ac68e0b618687f8a71b989=NDQzNw%253D%253D
2. NEC runoff record — https://results.necliberia.org/president2.php?4df8f4a95b9ccaeffba51d2193fe766d30fe57c666ac68e0b618687f8a71b989=NDQzNw%3D%3D
3. Election law — https://necliberia.org/doc_download/Final%20Amended%20Elections%20Law.pdf
4. African Union observer report — https://papsrepository.africanunion.org/bitstreams/d248c1cf-fff9-4e97-98cf-0b1dbe2ce2b8/download
5. EU mission final-report release — https://www.eeas.europa.eu/sites/default/files/documents/2024/Press%20Release%20EU%20EOM%20Liberia%202023%20Final%20Report%20240305.pdf
The source note already flags stale NEC archive template labels. Root should verify that the linked candidate totals and dates identify the intended records, and retain the distinction between a final report and a release about that report.
### New Zealand
1. Final archived national result — https://archive.electionresults.govt.nz/electionresults_2020/
2. Party-vote percentages — https://archive.electionresults.govt.nz/electionresults_2020/statistics/percentage-votes-for-registered-parties.html
3. Votes by electorate — https://archive.electionresults.govt.nz/electionresults_2020/statistics/votes-for-registered-parties-by-electorate.html
4. MMP explained — https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/what-is-mmp
5. How MPs are elected — https://elections.nz/democracy-in-nz/what-is-new-zealands-system-of-government/how-are-mps-elected
### Photograph pages and licenses
- UK — https://commons.wikimedia.org/wiki/File:Brookfield_Primary_School_as_a_polling_station.jpg
- Israel — https://commons.wikimedia.org/wiki/File:%D7%A4%D7%AA%D7%A7%D7%99_%D7%91%D7%97%D7%99%D7%A8%D7%95%D7%AA_%D7%91%D7%A7%D7%9C%D7%A4%D7%99_%D7%91%D7%92%D7%91%D7%A2%D7%AA_%D7%A0%D7%A9%D7%A8_%D7%91%D7%91%D7%97%D7%99%D7%A8%D7%95%D7%AA_%D7%9C%D7%9B%D7%A0%D7%A1%D7%AA_%D7%94-25.jpg
- Liberia — https://commons.wikimedia.org/wiki/File:EU_observers_meet_Prince_Johnson_02.jpg
- NZ unused alternate asset (`nz2020`, excluded from credit gallery) — https://commons.wikimedia.org/wiki/File:Advance_voting_booth_in_Wellington_(1).jpg
- NZ displayed asset (`nz2020_2`) — https://commons.wikimedia.org/wiki/File:Advance_voting_booth_in_Wellington_(3).jpg
- UK/Israel/NZ license — https://creativecommons.org/licenses/by-sa/4.0
- Liberia reuse/license link — https://eur-lex.europa.eu/eli/dec/2011/833/oj
Election-source and photograph/license links intentionally remain online in the portable edition. They should be described as online references when assigning fully offline use; the dated tables, imagery and instructor downloads themselves are embedded.
Cross-review discussion
# UX 3 council discussion
I agree with `faculty_2.md` §2 and `learning_1.md` “The process record cannot support…”: retain answer and help snapshots at each new submission, while separating current drafts. Pass/fail counts cannot reconstruct earlier reasoning. The council’s first-response proposal also needs a prompt-edition identifier: an answer to the old NZ recognition question cannot become evidence for the revised application task (`faculty_2.md` §1; `learning_1.md` first P1).
I challenge interpreting my restore-consistency recommendation as permission to invalidate every legacy filed brief. That would erase meaningful administrative progress without improving assessment evidence. Likewise, relabeling imported current answers as “last submitted” would invent provenance. Neither completion flags nor snapshots authenticate student work.
Resolve this with an explicit migration envelope: preserve original schema/question edition, original choices, prose and completion markers; show legacy completion as completion under that edition. Deduplicate setting/case identities, validate actual types, and repair malformed navigation separately. Keep imported legacy answers labeled “saved legacy answers; submission history unavailable.” Never manufacture snapshots from them. New submissions receive their actual prompt edition, answer snapshot and already-seen support state. Revised NZ work remains optional continuation for an old completed notebook and cannot be marked unaided retrospectively.
Unknown versions should remain recoverable: retain the raw payload, offer download, and avoid overwriting it with a fresh notebook (`ux_3.md` F3–F4). Keep rubric judgment separate from structural completion.
Learning · scaffolding and cognitive load
Blind first pass
# Blind learning-science review: After the Count
Reviewed only `review_round/baseline/dist`: `app.mjs`, `data.json`, the student entry point, instructor narration, and the baseline instructor manual text. No prior reviews, rationale outside this baseline, or history were consulted. This is a product/design review, not a learner study; no browser session or measured classroom performance is claimed.
## Overall judgment
The sequence has a sound instructional spine: a surprising authentic result, bounded records, a short mechanism explanation, a transparent rule comparison, and a value-sensitive argument. The distinction between historical counts and model outputs is unusually careful. Repeated navigation should reduce procedural demands; the two-failure supported route preserves progress without treating a political preference as correct. Keep those features and the substantive puzzles.
The principal gap is between **guided practice** and **observable independent use**. Most mechanism checks occur immediately below the explanation they ask students to recognize. New Zealand retains essentially the same support. The design therefore offers plausible opportunities to learn and practice; it does not yet demonstrate retrieval, independent transfer, or revision merely because a portfolio is complete. The manual already makes the important caveat that completion is not durable mastery and no classroom gains are established. Preserve that caveat.
## Prioritized issues and lean fixes
### P1 — The transfer case barely fades the support that it is meant to test
**Exact anchors:** `app.mjs:16` (NZ first-thought options), `app.mjs:82` (`CHECKS.nz2020`), `app.mjs:84–85` (`worked`, `evidence`), `data.json:241` (supplied MMP rule). Instructor manual: **New Zealand 2020 transfer key → Transfer follow-up**, **Support without taking over**, and **Learning rationale and references** (“removes some scaffolding”).
The new institutional combination is a reasonable near-transfer task. Supplying its unfamiliar rule is appropriate. However, the app then supplies a full rule explanation, the worked Green seat decomposition, and recognition questions whose correct answers largely repeat the adjacent text. NZ has the same hint, worked-answer and continuation machinery as the core cases. Its second check is `1 + 9`, already explicitly displayed. This is much more evidence of supported application than of an independently selected earlier strategy. The first-thought choice also points directly to the electorate mechanism.
**Lean fix:** Keep the supplied rule, but replace one NZ recognition question with a short initial explanation: “Why can the party with fewer party votes qualify? Use both parties and identify one earlier distinction that helps—and one difference.” Retain this first submission before revealing optional answer-specific feedback/worked support. Keep supported continuation and report it separately. Do not add another gate or make help costly. Label the task “new-case application” unless the response is actually collected before explanatory scaffolding. An optional later unprompted exit can assess independence; it need not lengthen every case.
### P1 — The process record cannot support the manual’s proposed first-unassisted analysis
**Exact anchors:** `app.mjs:107` (`check` event records attempt and pass only), `app.mjs:99` (`entry` displays current answers), `app.mjs:111` (`plainNotebook` exports current answers), `app.mjs:144–150` (`inputEvent` overwrites them). Instructor manual: **Review status and classroom evidence**, which recommends recording “first unassisted responses.”
Current submitted answers are mutable. The event log retains pass/fail and attempt counts, but not the answers submitted on each attempt or whether a hint had already been opened. A final correct recognition answer cannot establish what the learner could do before feedback. Attempt counts alone cannot identify the misconception or an improvement in reasoning.
**Lean fix:** Snapshot each submitted check response together with the already available hint/worked-support state, especially the first submission. Snapshot the initial NZ explanation if added. Keep learner-visible labels descriptive: “first response,” “revised response,” “support used.” This makes existing exports more useful without adding student work. Do not turn these data into an automatic critical-thinking score.
### P2 — The first-thought step often supplies the causal answer before eliciting a thought
**Exact anchors:** `app.mjs:13–16` (`context`, `predictionOptions`), `app.mjs:59` (`title` uses context in phase zero), `app.mjs:70` (`surprise`).
The compulsory choice is an investigation-route selection, not an outcome prediction. That can be useful, but each case puts its most defensible option first; Israel’s phase-zero context already states that Meretz fell below an eligibility boundary, and Liberia’s context already explains the fresh top-two ballot. These cues reduce diagnostic value and the tension of the puzzle. The optional hunch is the main generative element.
**Lean fix:** Keep the result and neutral country/date context visible, but move the causal explanation to Evidence & rule. Keep “What would you investigate first?” as the honest label. Use plausible alternatives without a constant correct-position pattern, and invite a brief reason without making it a new hard gate. A wrong initial idea should remain safe to revise. This preserves the challenge while reducing performative clicking.
### P2 — Lab progression records exposure to settings, not comparison of consequences
**Exact anchors:** `app.mjs:91–92` (`lab` / `labName`), `app.mjs:109` (default setting automatically enters `tested`), `app.mjs:126–127` (settings visited unlock the brief), `app.mjs:93` (brief evidence drawer supplies only the last lab setting), `app.mjs:100` (final comparison prompt).
A learner can satisfy “compare two settings” by opening the default and clicking the other button. That is a reasonable progress condition, but not evidence of operating or explaining a controlled comparison. Sequential replacement of outputs also makes learners remember the first setting while reading the second. The final prompt combines a mechanism, two figures, a trade-off, fixed inputs, and behavioral responses in one short paragraph, while the relevant notebook entries sit above the writing area.
**Lean fix:** After a second setting is opened, show a compact persistent before/after summary: setting, changed result, fixed input. Carry that summary into the existing brief drawer. Modify the existing brief hint to ask students to connect one observed change to the rule; no extra required textbox is necessary. Put selected-case evidence next to the final comparative writing area or make case summaries collapsible. Keep the substantive comparison difficult; remove the avoidable memory and scrolling burden. Describe `tested` as settings viewed, not demonstrated comparison skill.
### P2 — Revision is encouraged but not made observable
**Exact anchors:** `app.mjs:93` (“Revisit your first thought” details), `app.mjs:100` (opening priorities displayed), `app.mjs:104` (“Revise” skill). Instructor manual: **Skills and observable work → Metacognitive revision**, and **Reflection**.
The notebook stores a first thought and final explanation, but the connection is optional and no prompt requires the learner to identify the evidence that changed or strengthened the explanation. A changed policy preference is also not equivalent to a corrected causal account. The current structure offers revision; it does not guarantee observable metacognitive revision.
**Lean fix:** In the final comparative brief, replace part of the existing broad instruction with one concise prompt: “Name one first thought you confirmed or revised, and the record that justified it.” Display the relevant first thought beside it. Permit justified confirmation. This can be one clause within the existing response, not a fifth full case brief.
### P3 — The generic hint can target a question the learner already understands
**Exact anchors:** `app.mjs:85` (`c.hint` always renders `CHECKS[id][0].repair`), `app.mjs:107` (wrong-item repair feedback), `app.mjs:124` (`hint`).
The repair feedback after checking is item-specific, which is good. The separate “Give me a hint” button always uses question one’s repair, even when only question two is wrong. A learner struggling with the rank-versus-margin claim or individual voter inference may receive an irrelevant numerical/mechanism hint.
**Lean fix:** Offer the hint beside each item, or use the last unanswered/incorrect item. Keep explanation feedback and the two-failure alternative representation. The exact two-attempt threshold remains a practical design hypothesis, not a measured optimum.
## What the current evidence can fairly support
| Claim | Supported interpretation of this baseline |
|---|---|
| Mechanism and quantitative practice | Directly elicited by bounded checks, though much is immediately cued and only Israel/Liberia require numeric entry. |
| Evidence evaluation | Practiced through rank/margin and net-change limits plus “next evidence”; open response quality needs instructor review. |
| Counterfactual and trade-off reasoning | Explicitly prompted, with careful model boundaries; button visits and nonempty prose are not a quality measure. |
| Comparison and transfer | A comparative brief and guided new-case application exist; independent transfer is not yet established. |
| Retrieval and durable learning | Immediate recognition/application is present. No delayed or minimally cued retention evidence is collected. |
| Revision and collaboration | Opportunities exist. The app does not by itself observe a reasoned revision or actual partner contribution. |
The baseline manual’s cited learning work supplies a design rationale, not evidence that this particular app improved these skills. Keep the review-status caveat. A small classroom pilot should examine the saved first responses, support paths, quality of the independent new-case response, and actual workload before adding outcome claims. None of these fixes requires more mandatory screens or reducing the electoral puzzles to easier questions.
Cross-review discussion
# Learning council response
I agree with **faculty_1.md F1** and **student_3.md issue 1**: `1 + 9 = 10` can be answered without understanding compensation, and the current recognition pattern is weak evidence of independent transfer. Replace that check with a clearly hypothetical entitlement application: a qualifying party is entitled to 10 total seats and wins 3 electorates; how many list seats remain? Supply the MMP rule and raw records, preserve the first submitted answer before explanatory feedback, and retain the supported route. Call this near-transfer application; even success would not establish durable or general transfer.
I challenge **student_3.md issue 2** insofar as its repair could become an additional compulsory application after every worked example. That would lengthen recovery specifically for struggling learners. Count only meaningful submissions, target feedback, snapshot answers/help, and let the existing brief provide the evidence of supported interpretation. “Support opened” should remain distinct from demonstrated understanding.
For **docket 5**, keep the consensus: no new lab-writing field. Pin the two settings and their consequences beside the existing brief; ask the learner to explain one changed outcome and confirm or revise one first thought using evidence. For NZ, replace repeated generic guidance with the earlier-case connection and substantive difference requested by **faculty_1.md F1–F2**. Do not simply append every requirement to the current short-paragraph instruction. A compact checklist and visible evidence can preserve the intellectual challenge while reducing memory burden and repetitive writing. The 70–80-minute route remains a planning estimate pending classroom observation.
Learning · activity, collaboration and workload
Blind first pass
# Independent instructional and activity-design review
**Scope.** Source-only review of `baseline/dist`, including `app.mjs`, `elections.mjs`, `data.json`, the instructor manual's document text, narration, and the standalone HTML's matching functions. I did not consult other reviews or development history and did not edit the product. No browser or enrolled-student observations were used. References below are exact runtime source anchors unless an instructor-document heading is given.
**Overall judgment.** This is a coherent, usable instructor-facilitated investigation with substantive policy choices and unusually careful distinctions between records and models. Students do more than identify electoral-system names: they inspect selected records, answer bounded questions, compare rule settings, and defend a cost-bearing recommendation. The weakest link is the transition from changing a setting to articulating a comparison. The final synthesis also carries more reasoning work than its five-minute slot suggests. Revise those transitions before treating completion of the full portfolio as evidence of independent comparative reasoning.
## What I attempted from the product
I executed the actual module's handlers and rendering functions in Node with a minimal DOM/local-storage stub. This tests source-defined state transitions and generated text, not layout, keyboard behavior, browser download delivery, or student engagement.
- Entered pair mode; recorded an individual UK opening choice; deliberately submitted two incorrect UK checks; used worked-step continuation; compared observed seats with the proportional benchmark; filed a recommendation with a record, explanation, and next evidence.
- Completed Israel with `154,855` and the validity/eligibility answer, comparing 3.25% and 2%; Liberia with `17,520` and the aggregate-inference answer, comparing the historical runoff with the plurality replay; and New Zealand with the electorate-pathway and top-up answers, comparing retain/remove.
- Wrote a UK/New Zealand final argument about local representation and compensation, named a reconsideration record, and marked the portfolio complete. The UK retained `supported: true`; the other three retained passed checks. All four cases retained both settings. The TXT generator produced a readable multiline string with the student arguments and process record.
- After two failed UK checks, clicking the **Rule lab phase tab** remained on evidence with “support is available after two repairs.” Clicking **Continue with the worked step** immediately opened the lab. This is a reproducible inconsistency in the two navigation paths, not a browser finding.
## Prioritized revisions
### P1 — Make the lab produce a usable comparison, without another essay
**Anchors:** `app.mjs:20` (`tested`); `app.mjs:87–91` (lab output and “Try at least two settings”); `app.mjs:109`, `:121`, `:126–127` (initial setting recorded on entry, setting visits, progression); `app.mjs:93` (brief); `app.mjs:99` (notebook comparisons).
The progression test is two recorded setting visits. The default is recorded automatically, so one toggle is sufficient. The output changes meaningfully, but the learner never has to identify what changed before reaching the brief. The lab displays one setting at a time and the on-screen “Your record” names settings rather than their difference. This is a weak proxy for comparison, especially when a partner controls the screen. The notebook already preserves all tested outputs; use that existing data earlier.
**Revision:** Display a compact, automatically populated two-setting summary in the lab and beside the explanation box. Ask students to use **one changed result and its rule-based explanation** in the existing brief. Do not add another required prose box or grade prose by keywords. A single optional “Use this comparison” selection can identify the two settings they actually want to discuss.
Suitable summary pairs are:
| Case | Meaningful contrast to keep visible |
|---|---|
| UK | Reform's 5 observed seats versus 92.90 fractional benchmark seats; different representations of the same recorded votes |
| Israel | 10 qualifying lists / 417,400 votes outside allocation at 3.25% versus 12 / 127,990 at 2% |
| Liberia | Weah's 43.83% on October ballots versus Boakai's 50.64% on fresh November ballots; dates and changing vote pool remain explicit |
| New Zealand | Māori eligible/ineligible for list allocation while its directly won electorate seat remains in both settings |
**Preserve:** Bounded controls, accurate labels, fixed-input statements, and the deliberate refusal to invent new Israeli or New Zealand seat totals. More adjustable parameters would add work without improving this lesson.
**Review check:** A student can point to two labeled outcomes while explaining one consequence. The exported brief carries the student's explanation, not merely two visited setting names.
### P1 — Give synthesis a realistic share of a 60–75 minute session
**Anchors:** Instructor manual, **Class sequence and facilitation** (“Plan around 62 minutes”; final **Briefing and reflection — 5**); `app.mjs:93` (two required prose boxes per case); `app.mjs:100` (two final boxes and paragraph requirements); `app.mjs:110`, `:114` (all briefs and final work required).
There are **10 required prose boxes**: an explanation and next-evidence sentence in each of four cases, followed by a comparative paragraph and a reconsideration response. Four additional opening hunch boxes are optional. The case guidance alone requests 12–16 sentences across the four briefs. The final paragraph must coordinate a recommendation, two figures, mechanisms, a trade-off, a fixed input, and a possible behavioral response. Completing that synthesis, reflecting, and exporting in five minutes is an ambitious planning assumption for a first college use.
**Revision:** Publish a 75-minute full-route plan, and describe a 60-minute meeting as a core session with a saved/resumed conclusion unless preparation or writing requirements are reduced. Move time into the final argument. Make next-evidence writing mandatory in one early case and the final synthesis, with other instances optional or reusable; the same evaluative move does not need five separate required formulations. Keep the evidence-based case explanations. If offering a selectable shorter route, make its completion requirements match the assigned subset rather than asking learners to file four briefs anyway.
**Preserve:** The absence of a countdown and the permission to resume. A planning estimate should guide facilitation, not become a speed score.
### P1 — Strengthen the independent part of New Zealand transfer
**Anchors:** `app.mjs:16` (transfer task), `:69` (`surprise`), `:75` (New Zealand record), `:82` (checks), `:84–85` (worked support and evidence), `:93` (existing connection-to-earlier-case brief); `data.json`, `transferCase.rule`; instructor manual, **New Zealand 2020 transfer key** and **Transfer follow-up**.
The New Zealand case does apply earlier distinctions to a new combination of rules. That is useful near transfer. Its structured check, however, is recognition after the supplied explanation and table: the wrong options include “1.17% is greater than 2.60%” and guaranteed list seats, while the second check is a sum whose visual has already been shown. These checks are weak evidence of independent explanation. The later brief's request to connect an earlier lesson is stronger and should be retained.
**Revision:** Before the fully explained lab, show the supplied rule and the relevant party/electorate figures, then ask for a one- or two-sentence personal explanation of the apparent Māori/New Zealand First contradiction. Reuse the New Zealand opening-hunch field for this attempt rather than adding another writing box. Save the attempt before offering the worked explanation; provide support immediately on request and distinguish supported revision from the original response. If retaining multiple-choice checks, use plausible rule confusions, such as losing every seat below 5% or adding electorate seats after an already complete total.
**Preserve:** Supplying the unfamiliar country's rule. Removing essential information would assess country knowledge rather than transfer. Preserve the directly elected MP's retained seat and the warning against inventing alternative totals.
### P2 — Give comparisons a common question and a substantive difference
**Anchors:** `app.mjs:100` (free choice of two cases and the final prompt); instructor manual, **Class sequence and facilitation — Comparison**, **Transfer follow-up**, and rubric **Comparison and transfer**; narration `:46`, `:58`.
The manual asks for a shared principle and a difference, but the student-facing final prompt does not explicitly request the difference. Choosing any two countries can produce parallel summaries or a universal recommendation despite different units: parliamentary seats, list eligibility, or one presidential office.
**Revision:** Offer optional comparison questions beside case selection and carry the selected question into the final paragraph prompt:
- UK/New Zealand: What does a local victory do, and how does it relate to the party's total representation?
- Israel/New Zealand: Which ballots support parties eligible for allocation, and what exception changes access?
- UK/Liberia: What does plurality select when the unit is one local MP versus one president?
Allow other pairs. Prompt “Explain one common rule-to-result principle **and one difference that limits the comparison**.” Reuse existing case figures in a two-row view instead of assigning a separate comparison essay. A brief oral comparison after Liberia can prepare the final paragraph.
**Preserve:** Freedom to choose priorities and defensible combinations of rules. The comparison should sharpen a judgment, not prescribe one preferred electoral system.
### P2 — Turn existing pair prompts into an executable role routine
**Anchors:** `app.mjs:57` (separate notebooks / shared-screen notes), `:69` (separate first choice), `:85` (explainer and record finder), `:91` (gain/cost then switch); instructor manual, **Prepare and organize**, **Individual accountability**; narration `:10`.
The product already does the important things: separate opening choices, individual notebooks, alternating explanation/checking, and acknowledgment of one-screen pairs. The remaining ambiguity is operational: “Switch roles” has no initial assignment, no named point at which to switch, and the challenge-one-claim routine lives only in the manual.
**Revision:** Use a small repeatable instruction: “For this case, A explains the rule and names a figure; B checks the source and asks what the figure cannot establish. Switch after the lab. Each writes their own recommendation.” Before filing, have each partner ask the other one evidence question. Alternate who begins across cases. Shared-screen pairs use the same sequence and individual paper notes, with an explicit statement of which individual artifact the instructor will collect. No partner score or additional written collaboration log is needed.
**Review check:** Either partner can explain a number and a limitation, including the person who did not operate the controls. Instructor spot checks should invite that person to explain; agreement between the two recommendations is unnecessary.
### P2 — Remove navigation friction while preserving useful struggle
**Anchors:** `app.mjs:84–85`, `:107`, `:109`, `:121`, `:125`.
Calculating an Israel cutoff, distinguishing rankings from margins, and defending a real cost are productive friction. Specific repair feedback and worked support after two errors make that struggle bounded. The phase-tab mismatch described above adds procedural friction after the support threshold has already been reached.
**Revision:** Let both the phase tab and continuation button take the same supported path after two unsuccessful attempts, consistently recording support. Also make “Give me a hint” address the currently unresolved item: it always returns `CHECKS[id][0].repair`, even when the learner's remaining error is question 2. Keep hints and worked support available without a time penalty. Where the instructor requests self-explanation of a worked step, use a brief oral explanation rather than adding a new gate or paragraph.
### P3 — Make the opening task and revision claim match what students record
**Anchors:** `app.mjs:13–16` (all opening questions and options), `:19` (First thought), `:69` (optional hunch), `:93` (collapsed revisit), `:100` (opening priorities); instructor manual, **Skills and observable work**, **Reflection**.
Most opening prompts ask which record to inspect first, not students to predict an outcome. That is a reasonable orienting task, but a saved multiple-choice investigation choice plus optional hunch is limited evidence of revising an explanation. Every case's first opening option is also the useful investigation route, which makes the repeated choice predictable.
**Revision:** Call these “opening investigation choices” consistently, or ask a genuine tentative explanation. Include one explicit final reflection clause—“I confirmed or changed ___ because ___”—by replacing a redundant next-evidence response, not by adding more writing. Do not require every learner to change their mind; a supported confirmation is valid.
## Planning estimate and assumptions
These are **design estimates, not measured completion times**. A plausible 75-minute full-route plan after the revisions is:
| Segment | Minutes | Purpose |
|---|---:|---|
| Launch and notebook/pair setup | 5 | Units, historical/model distinction, own record |
| UK | 13 | Learn the repeated routine, local result and margin |
| Israel | 13 | Calculator work, denominator, eligibility comparison |
| Liberia | 12 | Two dates, net gain, inference limit |
| Cross-case oral comparison | 4 | One shared principle and one difference |
| New Zealand | 12 | Personal supplied-rule attempt, comparison and brief |
| Final argument, reflection, export | 13 | Use two cases, inspect one saved output |
| Flex | 3 | A repair, device issue, or transition |
| **Total** | **75** | |
Assumptions: devices and files are already available; students can read the supplied English materials with their normal supports; calculators are ready; the instructor does not lecture through every table; external-source browsing is optional follow-up; pair talk is brief and structured; students write concise case explanations; and only a small number of technical interruptions occur. Extra support, screen sharing, unfamiliar academic vocabulary, source investigations, or repeated repair can require a resumed session. A 60-minute class should plan that continuation explicitly rather than trim away the comparison and final argument, which are the activity's most consequential student work.
## Preservation priorities
Keep the surprising real cases, selected manageable records, repeated four-stage routine, visible units and dates, choice-dependent cost prompts, and open political judgments. Keep original-source links as follow-up rather than making website navigation a prerequisite. Keep notebook export, optional opening writing, individual accountability, and support-use records. The revisions should redistribute attention toward explaining and comparing; they should not turn the studio into a longer worksheet or a more elaborate electoral-engineering dashboard.
Runtime changes also need their matching functions updated in the downloadable `After_the_Count.html` so the facilitated and standalone experiences stay aligned.
Cross-review discussion
# Timing, collaboration, and visual-load resolution
I agree with `student_2.md`, issue 3: displaying both tested settings beside the brief removes memory and navigation demands while preserving interpretation. Its collaboration strengths also support retaining separate first choices and individual notebooks. I agree with `graphics_1.md`, issues 1 and 4, that a consistent conceptual family and stronger mechanism headings can distinguish cases.
I challenge docket proposal 5's additional observation field. Ten required prose boxes already precede completion. Require the noticed consequence **inside the existing explanation**, with both settings visible; make repeated case-level next-evidence responses optional after one early practice. Also condition per-case art placement on keeping the rule and first control accessible: reuse existing visual space, with no new gallery or art-analysis task (`graphics_1.md`, issue 1).
Use this **75-minute instructor planning estimate**, not a measured duration:
| Work | Minutes |
|---|---:|
| Launch and individual-record setup | 5 |
| UK | 12 |
| Israel | 12 |
| Liberia | 11 |
| Oral cross-case comparison | 4 |
| New Zealand application | 12 |
| Final writing / inspect export | 12 / 3 |
| Flex | 4 |
Within each case, A explains a figure; B checks its source and limitation; switch after the lab. Each then writes independently. Alternate the starting role across cases. Assume ready devices, calculators, concise responses, and optional external-source browsing. If repairs exceed flex, resume in a second meeting rather than consuming final-writing time. Show no student countdown.
Learning · assessment and transfer
Blind first pass
# Blind learning and transfer review — After the Count
Reviewed only `review_round/baseline/dist`: `app.mjs`, `data.json`, the instructor manual and narration, and the relevant electoral-rule implementation. No prior review, project history, source edits, or shared browser state used. This is an inspection of assessment affordances, not an observation of learners.
## Priority findings
### P1 — New Zealand currently demonstrates supported recognition more clearly than independent transfer
`record('nz2020')` displays the Green equation **1 electorate + 9 list = 10 total** and the rule panel explains the local-win pathway before `CHECKS.nz2020` asks students to select those exact conclusions (`app.mjs:75, 82, 85`). The Māori answer is strongly cued by the initial choice, the supplied rule, and the worked materials. New Zealand remains a different institutional combination, but the automatic checks do not reveal whether learners independently selected and applied earlier distinctions. The manual's claims that the transfer case removes scaffolding and supplies a more independent check therefore run ahead of the observable response.
**Change:** Replace the two NZ recognition questions with the single compact application card below. Present its first response using raw archived data and the supplied MMP rule, before showing interpreted qualification labels, the Green equation, worked solutions, or lab outputs. Keep the complete explanatory materials available immediately after the first submission, and retain a supported revision. Do not introduce another country or a new historical election.
### P1 — Neither the notebook nor the event log preserves the first unaided reasoning
The optional `hunch` and selected `prediction` remain editable. The ordinary next button requires a prediction, but the phase tabs can open Evidence directly (`app.mjs:70, 121–122, 148`). A recorded prediction event stores a choice but not the learner's explanation; there is no reliable first pre-evidence snapshot. Every check overwrites `c.answers`; `check` events store only attempt and pass status (`107, 147–148`). The notebook exports the current answers. Consequently, a final correct answer cannot be separated from a first correct answer, a correction after explicit feedback, or a reconstruction after the worked example.
Support is also incompletely classified. `supported` is set only when the learner continues while a check is still wrong (`109`), not when they used a hint, saw a worked solution, then answered correctly. Notebook status gives `checked` precedence over `supported` (`99`). Thus “Check passed” can conceal substantial support; `hint` is not included in the TXT summary.
**Change:** Preserve immutable first submission snapshots, plus each submitted revision and its feedback outcome. For the first thought, store the original choice and hunch, or explicitly “not recorded before evidence,” when Evidence first opens by any route. For checks, store a copy of submitted answers and whether a hint, relevant explanation, or worked solution had already been exposed. Export these to TXT/JSON and summarize them in the notebook. Allow revisiting and correction; do not rewrite the original snapshot. Label observations accurately: **first submitted before in-app feedback**, **revised after feedback**, and **worked support exposed**. A supplied rule and raw records are legitimate resources; pair mode and external help mean that this still cannot certify wholly unaided performance.
### P1 — Completion is a workflow state, not a measure of defended judgment or transfer
`fileBrief` requires a choice, selected record, nonempty explanation and next-evidence text, two visited settings, and either a passed check or supported continuation (`110`). `finish` similarly checks field presence (`114`). Two setting clicks do not establish that the learner noticed or interpreted a difference. Selecting a record does not establish accurate citation. An explanation can omit a number, mechanism, cost, or relevant evidence and still file successfully.
**Change:** Keep permissive submission and human assessment. Make the receipt say that required work was recorded and identify which checks were first-attempt, revised, or supported. In the manual, distinguish three claims:
- **Completion:** required responses were supplied, comparisons were visited, and work is available for review.
- **Performance on this activity:** an instructor can inspect accurate evidence, mechanisms, limitations, and defended costs in the submitted artifacts; the stronger NZ card can provide a bounded first application observation.
- **Not established:** learning gains, durable mastery, general critical-thinking transfer, or independent individual competence in pair work.
The existing manual already rejects completion-as-mastery and classroom-outcome claims. Preserve that restraint. Do not add keyword, minimum-length, or political-preference scoring to make the status look more substantive.
### P2 — Revision is invited but not observable as a reasoned act
The brief can reopen the initial thought, and learners are told they may strengthen or revise it (`93`). There is no required claim-to-evidence comparison, and the first response can change. A complete notebook may therefore show a final explanation without revealing whether or why the original idea changed.
**Change:** Use the new NZ card's existing short explanation slot for a before/after update after feedback: **“Confirmed / changed / still uncertain. Which rule or figure is your reason?”** One sentence is enough; no length gate. Preserve the first response alongside this update. Correct initial reasoning should be confirmable, with evidence, rather than requiring an artificial change of mind. For the wider portfolio, an instructor may assess revision only when this link is actually present.
### P2 — The final comparative recommendation needs an explicit institutional target
The portfolio permits any two cases and asks for a “rule or combination of rules” (`100`). Three cases allocate legislative seats; Liberia selects one president. Without identifying the elected body or office, a learner can combine proportional seat allocation and a presidential runoff as though they were substitutes for the same outcome. Naming one preferred democratic value does not resolve this mismatch.
**Change:** Add a small target choice, **a legislature / one president**, and revise the existing prompt: **“Recommend rules for this body or office. Use a figure from each chosen case. If the cases elect different things, explain what lesson carries over and what does not. Name a benefit, an accepted cost, and what could make you reconsider.”** Keep the existing instruction about fixed inputs and behavioral responses. Students may also propose a system with both institutions, but then must assign each rule to its own election. A second case may be a useful contrast; do not require two presidential cases or invent one. Assess a coherent assignment of mechanisms, not the chosen reform.
## One compact stronger NZ transfer check
Place this card at the start of the NZ Evidence phase, after its supplied rule but before the interpreted records and Rule Lab. It replaces the present two NZ checks rather than adding a separate exercise. Make the initial unworked submission visible in the notebook, then reveal explanatory feedback and permit revision.
**Raw archive provided:** valid party votes **2,886,420**; a **120-seat** Parliament. The supplied rule is unchanged: local plurality winners retain seats; **5% OR an electorate victory** opens proportional allocation; local seats count inside the total, with list seats topping up the entitlement.
| Party | Actual party votes | Party share | Actual electorate wins | Actual total seats |
|---|---:|---:|---:|---:|
| ACT | 219,031 | 7.59% | 1 | 10 |
| Māori Party | 33,630 | 1.17% | 1 | 2 |
| New Zealand First | 75,020 | 2.60% | 0 | 0 |
**Task:** “Apply the supplied rule. Then consider the existing lab change: use the 5% threshold for list entry while keeping every directly elected winner. The recorded votes and local wins stay fixed.”
1. **ACT's actual list seats:** `[number]`. This uses an unworked row: `10 − 1 = 9`. It should not be shown beside the answer as an equation before submission.
2. Complete a three-row prediction table with two dropdowns per row: **eligible for list allocation after this change? Yes / No** and **direct electorate MPs retained? 0 / 1**.
3. One short explanation: **“Which earlier distinction helped you here, and what is different in MMP?”** A sentence is sufficient. Human review evaluates the relationship; the app records it without claiming to grade its quality.
**Objective key:** ACT **Yes, 1**; Māori **No, 1**; NZ First **No, 0**; ACT actual list seats **9**. These outcomes require distinguishing a common national eligibility rule, the exception, retained local winners, and a compensatory total. The ACT row prevents the misleading shortcut “remove the electorate pathway = exclude every party with a local win.” It applies the same historical NZ case and the lab change already offered by the product.
**Explanation examples:** Israel helps distinguish list eligibility from accepted votes, but NZ also preserves direct local winners and has an electorate exception. UK helps distinguish national votes from local victories, but in NZ a local win also affects access to a compensatory allocation. Accept either accurately defended connection, or another defensible earlier distinction. Do not demand a particular country name or stock phrase.
**Model boundary:** The card asks for ACT's **observed** list top-up and **alternative eligibility/direct seats**, not complete alternative seat totals. The existing model does not allocate the whole Parliament under the change. Do not infer that every party's final seat total stays fixed, claim that ACT's alternative total must still be ten, or invent redistributed list seats. This boundary should appear in feedback, not disclose the answer to the initial application.
**Revision and support:** After first submission, reveal a short rule-to-row explanation, retain the original, and offer correction. Reuse the explanation slot for the confirmed/changed/uncertain update. An unresolved response may progress with explicit support recorded, consistent with the core cases. A first-pass correct matrix plus a substantive explanation is evidence of a bounded application within electoral politics; a corrected matrix is evidence of supported practice.
## What to preserve
- The historical-record versus model distinction, especially Liberia's two different voting dates and the warning against treating the runoff as the same-vote counterfactual.
- The UK rank-versus-margin and Liberia aggregate-versus-individual evidence checks. These ask useful bounded interpretation questions and should retain their explanatory feedback.
- Israel's valid-vote denominator, minimum whole-vote cutoff, and separation of eligibility from exact allocation.
- NZ's preservation of directly won seats, final amended 2020 counts, and refusal to invent a full alternative allocation.
- Political neutrality of assessment, optional name, separate individual notebooks in pair mode, exports, revisitable navigation, and supported progress after difficulty.
- Existing short writing expectations. Improve what is elicited and retained; do not add long essays, arbitrary word counts, another country, or punitive progression barriers.
## Scope of defensible evidence after these changes
The product would preserve an initial hypothesis, first application before its own explanation, supported repairs, and a brief reason for confirmation or revision. The manual rubric could then assess a bounded mechanism application, accurate evidence, a meaningful institutional comparison, and a defended benefit/cost. The automatic checks would still establish only the particular rule and numerical responses they evaluate. A classroom pilot and delayed independent task would be necessary before claiming measured learning gains or durable transfer.
Cross-review discussion
# Application and provenance decision
I agree with `student_1.md` (“New Zealand transfer” and improvements 4–5): the existing equation answers the check, while repeated evidence retrieval and prose add burden. Keep the supplied rule and raw archive table before the check; move the worked interpretations into feedback/support. Require the noticed consequence within the existing brief, with both settings visible, rather than adding another observation field.
I also support `faculty_3.md`, F3-1: consistently name the **Māori Party**, and distinguish its national party-vote share from Māori voters or representation. Put the concise Waiariki context after the initial application so it enriches interpretation without supplying the reasoning being assessed.
My challenge concerns docket item 4's phrase “first unaided response.” The root's proposed **10 total seats, 3 electorate seats → 7 list seats** is a stronger compensatory application than repeating 1 + 9. Label it **a model exercise with entitlement fixed at ten**, not a historical NZ result or a complete alternative allocation. It is one compact application within the same institutional case.
Resolve provenance by retaining first submitted answers, later attempts, and help already exposed at each submission. Call the result **first submitted before in-app feedback**; supplied rules, pair discussion, and external assistance prevent a stronger independence claim. Preserve legacy answers, prose, and completion; mark missing first-attempt evidence **not recorded**, without retroactive gates or inferred unaided success. Completion remains submission status, while instructors assess the explanation and bounded transfer.
What to observe in the classroom
Record actual completion time and where students pause, compare first submitted responses with supported revisions, inspect whether the final argument uses two cases substantively, and collect a short later application to an unfamiliar record. Assess evidence and reasoning rather than which institutional preference wins the argument.
Created by Yoav Duman