#!/usr/bin/env python3
# SPDX-License-Identifier: Apache-2.0
"""Original Year 3 optional-card source. --write refreshes the rendered Markdown.

Without --write, compare the checked-in teacher/learner/key documents byte for
byte. No child data, network call, external text or random generation is used.
"""
from __future__ import annotations

import argparse
from dataclasses import dataclass
from pathlib import Path

ROOT = Path(__file__).resolve().parent
RIGHTS = "Original SubjectNest cards © NeuroForgeIO Pty Ltd 2026, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); credit, link and note changes."


@dataclass(frozen=True)
class Card:
    title: str
    codes: str
    notice: str
    try_: str
    show: str
    choices: str
    check: str
    next_: str
    prepare: str
    home: str
    boundary: str = ""


CARDS: dict[str, list[Card]] = {
    "science": [
        Card("The closed rock window", "AC9S3U02 AC9S3I01", "Present two teacher-approved, sealed rock samples R and S. Ask, ‘Which visible surfaces seem alike, and what would you need to check?’", "With the bags closed, describe three visible features of each: colour, visible grain and smooth/rough appearance. Predict one possible difference, clearly marked as a prediction.", "Name one observed similarity, one difference and one thing the closed bag cannot tell us.", "Say and point; draw a two-column sketch; dictate labels to an adult.", "R and S may differ in visible grain or colour; no mineral name, hardness or origin follows from looking through a bag.", "Model observation versus inference with a new sealed object, then repeat one comparison.", "Two clean, non-dusting samples sealed by an adult, or labelled original line drawings marked MODEL.", "Use two household-safe objects in closed clear containers; label these an analogy, not rock evidence.", "A drawn or photographed model is not direct observation of a real rock."),
        Card("One question, one change", "AC9S3I01 AC9S3I02", "Show that a lamp moved closer can change how a surface looks. Ask whether R is truly lighter than S.", "Plan a fair visual comparison: keep the same light position, bag type and viewing distance; change only the sample. Record what stays the same and what changes.", "Explain why moving both the sample and lamp would make the comparison harder.", "Move paper tokens for the variables; speak the plan; draw a same/change table.", "A fair plan holds light, distance and bag condition consistent while comparing R with S; it does not prove composition.", "Use two new picture cards and have the learner place one variable at a time into same/change columns.", "Sealed samples or two adult-made surface drawings; no lamp handling by children.", "Use a window-side paper model of equal viewing distances; no rock collecting needed."),
        Card("A source with a scale", "AC9S3U02 AC9S3I03", "Show a ruler beside, but outside, a sealed sample. Ask what a centimetre can measure and what it cannot.", "Use a familiar scaled ruler to measure the bagged sample's visible longest span to the nearest whole centimetre; repeat once from the same edge. Mark bag-plus-sample as the measured object.", "Report both readings and say why this is not the bare rock's exact length.", "Read the ruler visually; use a tactile raised-centimetre ruler; direct an adult to line up zero.", "Record a number with cm and the start edge. The bag can add length or shift the view, so the estimate is bounded.", "Rehearse zero alignment on a new paper strip, then remeasure without opening a bag.", "Closed sample, ruler with 0 clearly visible, recording mat; no sharp ruler edge.", "Measure a closed household object or paper shape and name that object accurately."),
        Card("Make the observations sortable", "AC9S3I04 AC9S3U02", "Read three original data notes: R visible grains large; S visible grains fine; T visible grains large. All are teacher-made practice notes.", "Build a table with sample, grain appearance and source. Group R and T by the stated visible feature; add a question mark where no note exists.", "Say the pattern and one reason it cannot identify the rocks.", "Use large print table; movable textured labels; dictate cells.", "R and T share ‘large visible grains’ in these invented notes. A grain description alone does not establish mineral identity.", "Give three fresh notes including one missing feature; ask learner to sort only known data.", "Three printed practice notes and blank table. Do not imply actual observations.", "Sort three made-up notes with pencil boxes; no physical samples required.", "Practice data are invented and must not be presented as a real result."),
        Card("A second observer", "AC9S3I05 AC9S3H01", "Two fictional observers disagree: Jo writes ‘R has large visible grains’; Min writes ‘R looks fine-grained’. Ask what they should do next.", "Compare how each viewed the same sealed drawing: Jo at arm's length, Min beside the page. Revise a same-distance viewing plan and name what evidence would settle the disagreement.", "Give a cautious conclusion and a further question.", "Role cards; oral comparison; tactile position tokens on a distance line.", "Different viewing distance is a plausible cause, not proved. A repeat at the same distance is needed before a conclusion.", "Offer a new disagreement caused by different lighting and ask for one controlled repeat.", "Fictional observer cards and closed drawing; no child is singled out for a wrong answer.", "Use two adult voices or two written notes about an invented object.", "These observer records are fictional; do not score them as actual class data."),
        Card("Warmth is a transfer question", "AC9S3U03 AC9S3I01", "Present an adult-made, fictional temperature record: sealed bottle A 24°C at 0 min, 25°C at 2 min. Ask what might have transferred heat.", "Identify the recorded change as 1°C. Predict a reason, then separate what the numbers show from what they do not show about the heat source.", "Say ‘temperature increased by 1°C in the record’; add one testable follow-up question.", "Use number line; adult-read numbers; move one tactile marker from 24 to 25.", "25 − 24 = 1°C. Numbers alone do not show where heat came from or that a real bottle warmed.", "Use a fresh 21°C to 23°C fictional record and ask for change versus cause.", "Printed invented record; no heated water, ice, touch test or child handling.", "Read the paper record. Do not create a household heat experiment.", "The record is fictional. Claim about heat source remains a hypothesis."),
        Card("Plan a safe temperature check", "AC9S3U03 AC9S3I02", "Ask how an adult could compare two approved, sealed, room-safe bottles without children touching a heat source.", "Plan one adult-managed comparison: same bottle size and thermometer method, initial reading, two time readings; one bottle in a warmer approved location and one control. Identify the changed location.", "Name the safety boundary and one thing that would make the test unfair.", "Arrange sequence cards; explain verbally; point to thermometer drawing.", "Hold bottle type/time/read method alike, change approved location, record temperature with a scaled instrument if actually run. No causal conclusion from a plan alone.", "Rebuild plan with a different start time and ask what to keep equal.", "Paper bottles and scale; real demonstration only after school risk approval and adult control.", "Use the paper plan only; never ask a family to use hot water or appliances.", "Paper planning does not show observed transfer or measured temperature."),
        Card("Read a real or model scale honestly", "AC9S3I03 AC9S3I04", "Provide a teacher-approved scaled thermometer reading if a demonstration ran; otherwise give a clearly marked original model: 22, 23, 24°C at minutes 0, 2, 4.", "Write a three-row time/temperature table; draw a simple column graph with a labelled °C scale. Mark REAL or MODEL at the top.", "Point to the greatest reading and read its time and units aloud or by AAC.", "Large scale and high contrast; tactile number tiles; adult transcription directed by learner.", "For the model, 24°C at minute 4 is greatest. Bars must be aligned with 22, 23 and 24, not invented lengths.", "Use model 19, 21, 20°C and check graph labels before interpreting peak.", "Adult-supplied approved reading or printed fictional model; no pupil heat source.", "Use the model numbers with paper blocks and still mark MODEL.", "Model graph cannot be counted as real instrument use; note actual route."),
        Card("Compare before concluding", "AC9S3I05 AC9S3H01", "Show two labelled fictional data sets: A 22→24°C; B 22→22°C after four minutes. Ask what the contrast supports.", "Compare change in each set (+2°C and 0°C). Check whether both used the same four-minute interval and whether their locations are stated; they are not.", "State a limited conclusion and one missing detail for a fair explanation.", "Counters on a number line; two spoken sentences; table annotations.", "A increased 2°C; B did not change. Without recorded conditions, the data cannot establish why A changed.", "Offer a fresh pair 20→21 and 21→21°C; ask what a controlled comparison needs.", "Printed invented tables; no claim that a child collected them.", "Use paper arrows for both changes and name one missing condition.", "Do not infer a cause from these invented numbers."),
        Card("Explain with an evidence boundary", "AC9S3I06 AC9S3H02 AC9S3U03", "Fresh prompt: an invented school needs to decide where a closed, temperature-sensitive art material box could be stored. Two fictional records: shelf 24→26°C; cupboard 24→24°C over four minutes.", "Compose a three-part note: data, cautious choice and what real measurement/safety approval would be needed. Use ‘temperature’, ‘change’ and ‘evidence’ accurately.", "Present to a chosen adult/partner privately; distinguish paper model from a real school decision.", "Three sentence frames; voice note on school-approved offline device only; AAC or drawing plus explanation.", "The fictional cupboard record stays 24°C, shelf rises 2°C. The note may suggest checking the cupboard, but cannot certify safe storage.", "Give new readings with both settings rising; have learner revise choice and identify missing product guidance.", "Printed fictional records; no actual product or storage decision.", "Tell an adult with the paper data; no home materials needed.", "Fictional data cannot set a real safety or storage policy."),
    ],
    "hass": [
        Card("What does the sign actually say?", "AC9HS3K06 AC9HS3S01", "Read an invented library sign: ‘Return the shared atlas to the marked shelf after use.’ Ask who might make and use such a rule.", "Write one investigable question about the rule and one observation the sign itself supports. Circle any claim about a real school that needs a real source.", "State a question that could guide checking and a claim the invented sign cannot establish.", "Adult reads; child underlines; movable question-mark card.", "The invented sign shows a return instruction in that fictional library. It does not prove our school has this rule or who authorised it.", "Try a new fictional notice and sort ‘says’ from ‘we need to ask’. ", "Original fictional sign; local school rule only if current authorised copy supplied.", "Make a made-up sign for a pretend shared shelf; do not name family rules.", "Invented sign is rehearsal, not local policy evidence."),
        Card("Who makes a school rule?", "AC9HS3K06 AC9HS3S02", "Offer three possible sources: approved current school policy, a pupil suggestion and an invented poster. Ask which can establish an actual current rule.", "Sort source labels by what each can tell us. If an approved current policy is supplied, record its title/date and the relevant wording in a short paraphrase.", "Name the source needed to answer ‘What is our current rule?’", "Colour-free source cards; spoken sort; tactile yes/unknown columns.", "A current school-authorised policy or staff confirmation is needed. A pupil suggestion and invented poster do not establish current policy.", "Swap in an old undated notice; ask how the learner would check currency.", "Blank source card and optional approved school policy; no copied private document published.", "Ask about a pretend school or use paper source labels.", "Do not publish or infer local rules from an invented card."),
        Card("A consequence is not a punishment guess", "AC9HS3K06 AC9HS3S03", "In an invented library, one atlas is left on a desk. Two visitor cards say ‘I could not find it’ and ‘I found it later’. Ask what each actually reports.", "Match each source to a supported consequence. Distinguish an effect on finding the atlas from an invented claim about punishment or intent.", "Explain one likely purpose of the return rule with ‘could’ rather than ‘always’.", "Two speaker cards; comic strip; oral source matching.", "The two fictional cards report different experiences. They do not establish intent or a penalty. Returning items could help finding them.", "Offer an invented missing-pencil case; ask for effect versus assumed motive.", "Two invented visitor notes, deliberately labelled as fiction.", "Use two paper messages about a pretend shared item.", "No real pupil or family behaviour is disclosed or judged."),
        Card("Two views of one rule", "AC9HS3S04 AC9HS3K06", "Read invented voices: Ari values finding a shared atlas quickly; Bela finds the shelf label hard to read. Ask how both perspectives can matter.", "Make a two-column ‘values/needs’ note. Suggest a change that keeps the return aim but makes access easier, such as a larger tactile shelf label.", "Name whose views are represented and whose are still missing.", "Listen to adult-read roles; draw a viewpoint bubble; point to tactile labels.", "Ari prioritises quick return; Bela needs a readable location cue. The two invented voices do not represent all users.", "Use two new views on a fictional notice and ask for one missing perspective.", "Original fiction. Do not role-play a real classmate's disability or speak for a community.", "Invent two neutral character needs about a shared box.", "Fictional perspectives are practice, not testimony."),
        Card("A rule proposal with evidence", "AC9HS3S05 AC9HS3S06", "Fresh fictional issue: a borrowed magnifier cannot be found at the made-up Maru room. Visitor notes say shelf marks are unclear; no real school is named.", "Propose one action, such as a larger return label, and draw a possible positive effect and a possible cost or difficulty. Say which note supports the proposal.", "Finish with ‘This might help because…; we would check…’.", "Voice, picture-plus-caption or AAC; two consequence tokens.", "A clearer label is linked to the stated problem; it may improve locating, but needs testing and staff agreement before real use.", "Give a new fictional missing-box problem; ask for a different action and possible downside.", "Invented visitor note and original source/action mat.", "Use one paper notice in a pretend place; no purchase or real sign change.", "A proposal is not a claim of measured effect."),
        Card("Why join a community task?", "AC9HS3K07 AC9HS3S01", "Describe an invented neighbourhood book swap with optional roles: label maker, book organiser and access checker. Ask why someone might take part.", "List two reasons people could choose to participate and one reason a person might not. Frame participation as voluntary; a role can be private or brief.", "Ask a respectful question that a real organiser would need to answer before inviting people.", "Role tokens; oral list; drawing of optional tasks.", "People may enjoy sharing, help access or contribute skills; time or access barriers may matter. None is a claim about a real person's motive.", "Try a new invented community garden role list and generate a consent/access question.", "Original fictional description; no names or real volunteering data.", "Use a pretend swap on paper; no actual donation or family contribution.", "Real community motives require sourced or invited testimony."),
        Card("Map a contribution carefully", "AC9HS3K07 AC9HS3S02", "Provide an invented service map with hall, return desk and quiet table. It is not a real site or public route.", "Annotate where three optional roles could happen and record ‘source: invented model’. Add one question about access that the map cannot answer.", "Explain how the map could help plan but not prove a real location or accessibility feature.", "Raised-line outline; verbal left/right description; colour-free labels.", "The model places roles at named fictional points. It does not establish actual ramps, distances or availability.", "Show a new unlabeled plan; ask learner to request title, date and source before using it.", "Original fictional diagram; no private school floorplan or personal route.", "Use boxes and arrows for a made-up service.", "A map model is not geospatial evidence for a real community."),
        Card("Action and unintended effect", "AC9HS3S04 AC9HS3S06", "At a pretend book swap, a loud announcement might help some visitors find the desk but bother others. Ask whose perspective is missing.", "Compare two actions: loud announcement or clear written/tactile sign. Give a possible benefit and drawback for each, then choose a trial with a way to invite feedback.", "State the proposed action with ‘may’ and name who would decide in a real setting.", "Two-option cards; short spoken argument; drawn pros/limits.", "Each option has trade-offs. A school or organiser would approve a real change after asking affected people; invented perspectives are not user research.", "Use a new fictional queue problem and ask for a reversible trial and a feedback question.", "Two invented action cards; never make a real safety/access policy alone.", "Compare paper options for a pretend desk.", "Do not claim actual users prefer a solution without asking them."),
        Card("Short sourced explanation", "AC9HS3S03 AC9HS3S07", "Give two clearly labelled fictional cards: sign says ‘return atlas’; visitor says ‘larger label might help me’. Ask for a source-aware account.", "Write or dictate three sentences: what the sign says, what the visitor suggests, and one thing we do not know. Use ‘rule’, ‘source’ and ‘perspective’.", "Share privately and point to the source for each sentence.", "Three-part frame; AAC choices; picture/source matching.", "A complete account attributes each fictional card and withholds whether a real school uses the rule.", "Replace the visitor card with a different suggestion and ask learner to revise attribution.", "Printed original fiction; no child names or class opinion data.", "Tell the three-sentence account orally with paper tokens.", "Sourced language must not turn fictional notes into real facts."),
        Card("New issue, bounded proposal", "AC9HS3K06 AC9HS3K07 AC9HS3S05 AC9HS3S06", "Fresh fictional setting: at the invented Pera shared-games table, a board stays out after closing. One visitor needs a clear return place; another values easy access.", "Name a rule question, two perspectives and a reversible proposal. Add the possible good effect, possible difficulty and the real source/permission needed before trying it locally.", "Give a short evidence-limited recommendation to a chosen listener.", "Move source/view/action tokens; diagram; dictate a proposal with a reason.", "A labelled return place could help locating; it might crowd an access route. Actual site facts, users and approval are still unknown.", "Offer a fresh equipment case with a narrow doorway; reteach source versus assumption before revising.", "Original fictional Pera cards; no actual school layout or policy.", "Build the proposed rule on a paper pretend table.", "The assessment is a fictional transfer, not a real community finding."),
    ],
    "hpe": [
        Card("Ask, hear, accept", "AC9HP4P07 AC9HP4P04", "Use an invented game: Teo asks to borrow a paper marker; Luz says ‘not now’. Ask what Teo can do next.", "Rehearse ask → listen → accept. Try a second version in which Luz says yes, then changes their mind. No real child is asked to share a personal experience.", "Give one respectful sentence for each response, including a changed mind.", "Adult-read role cards; AAC choices; paper puppets instead of personal role-play.", "‘Okay, I will use another marker’ accepts no. A yes can be withdrawn without argument.", "Use a fresh pretend shared-book request and recheck the response to ‘not now’. ", "Two neutral fictional character cards; school safeguarding route available.", "Use two paper circles as roles; no personal disclosure.", "The scene is invented and cannot establish a child's own relationship history."),
        Card("A choice for more people", "AC9HP4P05 AC9HP4P04", "A made-up club offers a loud, fast relay only. Ask who may want another way to join without guessing anyone's identity.", "Design two optional roles or modes, such as quiet token planner and active mover. Ask a hypothetical participant what they prefer, rather than assigning them a need.", "Explain how giving choices could support inclusion while keeping participation voluntary.", "Role tokens; spoken plan; drawn option menu.", "Two genuine participation options and a preference question are better than assigning a role based on an assumed disability or background.", "Use a new pretend club activity and ask for a third safe choice.", "Original fictional club card; no real pupil labelled or singled out.", "Draw an optional club menu on paper.", "The card does not show that real participants feel included; feedback is needed."),
        Card("Two feelings, one event", "AC9HP4P06", "Invented scene: a group is invited to try a new puzzle route. Ask how two people might respond differently.", "Name two possible emotions without assigning either to a real child. Choose a manageable strategy: pause, ask for information or take a quiet break; show when to return or seek support.", "Use ‘might’ in both feeling statements and rehearse one strategy.", "Emoji-free word cards; body-neutral AAC choices; drawing or private speech.", "One person might feel curious, another unsure. Neither response is certain; a pause or help request is a valid strategy.", "Present a new change of plan and compare two possible responses again.", "Neutral fictional puzzle card; no invitation to disclose trauma or diagnosis.", "Point to one of three paper strategy cards.", "Teacher must not infer an actual pupil's feelings from this fiction."),
        Card("Help route, no secrets", "AC9HP4P08", "Invented online scene: an unexpected message asks a game player to send a school password. Ask what a safe next action is.", "Stop and do not reply or share. Identify a school-approved trusted adult/help route, including what to do if the first adult is unavailable. Rehearse a short report with no actual password.", "State or choose the safe action and one helper; never recite a real credential.", "Picture sequence; AAC ‘stop/help’ cards; teacher-read scenario.", "Do not send the password; use the school’s actual reporting route. The chosen adult is a route, not a promise of secrecy.", "Use a different invented request for a name or photo and practise stop/help again.", "Fictional message only; no real account, link, screenshot or child credential.", "Tell a caregiver ‘I would stop and ask you’ about the pretend message.", "If a real disclosure occurs, stop the exercise and use safeguarding procedure."),
        Card("Who wants this message believed?", "AC9HP4P09", "Show an original pretend poster: ‘Only the fastest breaks count!’ Its small line says ‘Join the Swift Club’. Ask about its intention.", "Identify the poster's claim, likely persuading aim and missing evidence. Compose a fairer alternative that lets different people take part safely.", "Explain why ‘only’ needs questioning and name a source a school would check for real activity guidance.", "Circle words; adult reads; draw a revised poster caption.", "The invented poster promotes a club and gives no support for its universal claim. A real health guideline would need a current authoritative source.", "Use a new invented ‘everyone must’ message and ask what it omits.", "Original fictional poster, no third-party health advice reproduced.", "Discuss a pretend club message; no personal activity totals requested.", "This is message analysis, not health advice or an activity target."),
        Card("Move a line in a safe space", "AC9HP4M01 AC9HP4M03", "Put a start and finish on an approved clear route. Ask how direction and tempo could change the movement without a race.", "Learner chooses a safe bodily mode under their plan—standing, seated reach, wheelchair movement or another agreed action—and tries straight then curved paths with a stop cue. Paper tokens are planning only.", "Describe or point to the actual direction/tempo change and whether it was tried.", "Choose bodily mode with staff; visual stop card; tactile path; no need for speed.", "An actual safe movement with a changed direction/tempo is observable. A drawn path shows planning, not movement performance.", "Try a new curved route with one accessible action and a clear stop signal.", "School-approved clear space and optional paper route; follow individual plans.", "Use a small hand-motion route if safe, or just plan with a token.", "Only actual movement supports the movement codes; never grade a body type."),
        Card("A path around a barrier", "AC9HP4M02 AC9HP4M07", "Place a soft paper barrier on a floor or table route. Ask which path reaches a marker with space left clear.", "Propose two routes, then actually try one in an approved accessible movement mode if safe. Change the route after feedback from a willing participant or teacher observation.", "State the strategy chosen and one observed reason for the change.", "Large arrow cards; tabletop planning; actual hand, chair or walking route as approved.", "A route that avoids the barrier and preserves clear space meets the task if tried; a paper route is a design only.", "Move the barrier to a new position and ask for a safe revised route.", "Light paper barrier, no obstacles across a genuine access path.", "Use a finger route on paper as a plan; movement evidence requires an agreed real try.", "Do not obstruct mobility access or claim untried route performance."),
        Card("A fair turn rule", "AC9HP4M08 AC9HP4M09", "In an invented target game, one person has taken three turns and another none. Ask for a rule both can agree to.", "With willing participants, co-develop a turn/pause rule and try two safe soft-token placements, not throws. Assign an optional observer role; ask whether each turn was available.", "Explain the rule, whether it was applied, and one adjustment after the trial.", "Token placement in reach; observer with AAC; noncompetitive two-person option.", "A fair rule offers each participant a turn and a pause. Application requires an actual agreed trial, not just written rules.", "Swap starting order in a new short round and check whether both still get a turn.", "Soft paper tokens, clear table; no contact, hard object or score ranking.", "Use paper tokens with a willing caregiver, or plan alone without claiming collaboration.", "A solo paper plan cannot prove teamwork or applied fair play."),
        Card("Make a movement phrase", "AC9HP4M03 AC9HP4M07", "Offer the original sequence ‘start → curve → pause’. Ask how effort or timing could make it easier for a chosen mover.", "Design a three-action phrase, then try it in an agreed accessible bodily mode. Change one timing or direction element at a time and compare your own trials.", "Show the revised phrase or describe what changed; record actual versus planned.", "Seated upper-body phrase; gentle wheeled movement; hand motion; large visual arrows.", "A deliberate change such as longer pause or gentler turn can be explained against the learner's own trial; no universal ‘best’ route follows.", "Offer ‘straight → pause → turn’ as a new starting phrase and ask for one safe revision.", "Clear staff-approved area, optional tabletop arrows.", "Try a small safe motion or plan with paper only.", "Do not compare learners’ bodies or infer exercise intensity."),
        Card("New route, shared decision", "AC9HP4M01 AC9HP4M02 AC9HP4M08 AC9HP4M09", "Fresh fictional layout: two starts lead toward one wide finish with a paper ‘keep clear’ zone. Ask how willing partners might travel fairly.", "Choose an agreed bodily mode and role, co-create a turn/pause rule, try a safe movement route if approved, then alter one rule or direction based on actual feedback.", "Report route, rule, actual action, partner feedback and an evidence boundary.", "Private partner or teacher trial; AAC role choices; seated or hand movement; tabletop plan if needed.", "A strong account distinguishes planned arrows from observed movement and names a partner’s actual words, not an assumption.", "Move the keep-clear zone and reteach one missing element—permission, route or turn—before a fresh trial.", "Original route mat, soft markers, school access/safety plan and willing partner.", "Plan with paper; a real movement/partner outcome needs a safe consenting trial.", "No partner or movement evidence is claimed if only the paper route happened."),
    ],
    "technologies": [
        Card("Who needs the holder?", "AC9TDE4K01 AC9TDE4P01", "A fictional class wants a reusable paper-card holder so a shared instruction stays visible. Ask whose access needs and waste matter.", "Write a user need and two design criteria: card visible/readable and holder reusable. Test a fold in scrap card for stability; record what happened.", "Name a user, one test observation and an unanswered access question.", "Fold and touch; draw side view; direct adult to test a model.", "A holder must stand or be supported and make the card readable for the named user; one fold test is not a durability certification.", "Use a fresh heavier paper card and retest stability before revising criteria.", "Reused paper/card, no sharp tools or adhesive needed.", "Fold a scrap strip and test a blank instruction card.", "A fictional user story cannot stand in for feedback from real users."),
        Card("Why does the fold hold?", "AC9TDE4K02 AC9TDE4P01", "Show an unfolded strip and a triangle-fold strip from identical card. Ask what a push might do to each.", "Apply a gentle finger push in one direction to both on a flat table. Note bend or collapse without loading heavy objects. Keep strip size/material alike.", "State an observed difference and one reason it may not generalise to all materials.", "Tactile side-view tracing; large printed fold diagrams; child-directed adult push.", "A folded form may resist the gentle push differently. No universal strength ranking follows from one informal trial.", "Repeat with a new fold shape and record the push direction explicitly.", "Two same-size scrap card strips, flat desk, gentle push only.", "Compare two safe folded paper strips; never load books or weights.", "Do not call the paper test an engineering safety certification."),
        Card("Draw two decisions", "AC9TDE4P02 AC9TDE4P05", "Revisit the fictional instruction-card holder. Ask whether a wide base or a back support might work better.", "Sketch and label two designs with fold lines and card position. Sequence three making steps for the chosen idea. Include an attribution line: ‘my drawing from this task’.", "Explain a trade-off between footprint and stability using the Day 12 test only where relevant.", "Large diagram; tactile folded prototype; oral three-step sequence.", "Both designs have a legible card position and feasible fold sequence; the chosen option gives a testable reason, not a guessed guarantee.", "Provide a new narrow table space criterion and ask for revised sketch/sequence.", "Blank design sheet and scrap card; no internet design copying.", "Draw or fold two versions from reclaimed paper.", "A design sketch is not a made product or real user evaluation."),
        Card("Make, then observe", "AC9TDE4P03 AC9TDE4P05", "Ask how to make the selected holder safely and in an order another person could follow.", "Fold scrap card by the learner's three steps; place a paper instruction card; test whether it remains visible after a gentle table tap. Adult handles any necessary cutting, though no cutting is required.", "Show the actual model and mark one step that needed changing.", "Child-directed adult fold; tactile crease; bold guide lines; no forced fine-motor task.", "The model either holds the card visibly under this gentle test or needs revision. Note the observed result rather than ‘works perfectly’.", "Try a different card width and revise one fold step.", "Scrap card and blank insert; flat clear table.", "Fold a no-cut stand from reused paper.", "A single desk test does not prove long-term durability or universal access."),
        Card("Check the criteria", "AC9TDE4P04 AC9TDE4K01", "Use the two criteria from Day 11: visible card and reusable material. Add a newly stated criterion: fits a narrow desk edge.", "Score the actual model yes/not yet for each criterion, cite an observation, and propose one improvement that reduces waste without claiming a life-cycle result.", "Explain which criterion is strongest and which needs another test or user check.", "Three tactile criteria tiles; yes/not-yet table; oral design review.", "A model can be visible/reused in this trial yet fail narrow-footprint; ‘sustainable’ needs a wider evidence base.", "Give a new fictional user needing a larger card and ask which criterion/test changes.", "Model and blank criteria mat; optional real user feedback only with consent.", "Judge the paper model against written criteria; no shopping required.", "Invented criteria are practice, not proof of real community needs."),
        Card("A user story for a shelf", "AC9TDI4P01 AC9TDI4P02", "Fictional user Nia wants a clear sequence to return a borrowed card to the right labelled box. Ask what the algorithm must do.", "Write ‘As Nia, I want… so that…’ and three ordered instructions: read label, compare, place. Walk a paper token through the steps.", "Explain what the sequence does if the labels match and what is still missing if they do not.", "Token path; verbal steps; large-print numbered cards.", "An ordered three-step route works only for matching labels; a nonmatch needs an explicit branch.", "Use a new box label pair and ask learner to add a decision step.", "Original fictional labels, blank paper boxes; no actual school data.", "Use paper labels and a token; no device or account.", "Paper sequence shows algorithm reasoning, not a running visual program."),
        Card("If a label differs", "AC9TDI4P02 AC9TDI4P03", "The card says BLUE; two boxes say BLUE and GREEN. Ask what comparison the rule needs.", "Create a branch: IF card label = box label, place; ELSE keep searching or ask an adult. Test the algorithm with BLUE and GREEN paper tokens.", "Show both branch outcomes and compare with the earlier sequence.", "IF/ELSE tactile cards; spoken role-play; drawn flow arrows.", "BLUE matches BLUE and can be placed; GREEN is not a match and follows ELSE. The rule needs a safe end if no label matches.", "Try a new RED card with no RED box and add a clear ‘ask’ end.", "Three original paper label cards; no live account.", "Use household blank coloured shapes or words on scrap paper.", "Unplugged branching does not prove a digital program was implemented."),
        Card("Repeat without losing a step", "AC9TDI4P02", "Three returned cards need checking. Ask whether writing the same compare step three times is necessary.", "Make a repeat rule: for each card, read its label, scan boxes, place on match, otherwise ask. Run all three paper tokens, including one nonmatch, and mark each iteration.", "Tell how many times the repeated check ran and what happened to the nonmatch.", "Numbered tokens; finger tracing; adult acts as the paper robot.", "The check repeats three times for three cards; an unmatched card must not be placed in a guessed box.", "Test four new tokens with two matching labels and count iterations again.", "Three original labelled tokens and two paper boxes.", "Use pencil circles instead of cards; no device required.", "A paper loop demonstrates logic, not executed software."),
        Card("Same data, different display", "AC9TDI4K03 AC9TDI4P03", "Fictional shelf count: blue 2, green 1. Ask which display helps a new user find a category quickly.", "Represent the same two counts as a labelled table and as three colour-free shape tokens. Compare what each displays clearly; include text labels so colour is not required.", "Verify both representations still show 2 and 1, then name a purpose for each.", "Tactile counters; large print table; spoken category/count pairs.", "Both representations preserve blue=2, green=1. A table supports exact lookup; tokens can show quantity, but neither adds an unrecorded category.", "Use counts 1 and 3 with new labels and check fidelity in both forms.", "Invented counts, blank table, three paper shapes.", "Represent invented book counts with marks and words.", "The numbers are fictional and reveal no real borrowing data."),
        Card("A new user tests the rule", "AC9TDI4P01 AC9TDI4P02 AC9TDI4P05", "Fresh fictional user story: ‘As Ori, I need to sort three labels, including one with no box, so I do not guess.’", "Give a new set A, B, C with only A and C boxes. Trace sequence, branch and repeat for all cards. Compare the result with the user story and change one unclear instruction.", "State where B goes and why; tell the changed step to a partner or adult.", "Paper robot; tactile letter cards; diagram; oral/AAC explanation.", "A and C can match; B must pause/ask, not be forced into a box. A clear algorithm handles all three and meets the no-guess criterion on paper.", "Give a new repeated label or blank label and ask learner to refine the stopping condition.", "Original paper labels only; no live system or pupil records.", "Use letter tokens and two paper boxes.", "This assessment covers unplugged algorithms, not implementation or secure account use."),
    ],
    "arts": [
        Card("Dance: near and far path", "AC9ADA4D01 AC9ADA4C01", "Use the original prompt ‘near → far → still’. Ask what direction, space and timing could communicate a traveller finding a place.", "Create a three-action dance phrase in a safe chosen body mode. Try one version, then alter the size or timing of one action. A token route is an optional plan, not performed dance.", "Share an actual phrase privately if willing and name the changed element.", "Seated or standing safe movement; wheelchair route under plan; hand or eye movement; paper pathway as planning.", "An observable expressive change in space or timing can convey an idea; a drawn token alone is not danced performance.", "Offer fresh phrase ‘small → curve → pause’ and ask for one expressive safe variation.", "Clear school-approved space, no contact or forced public performance.", "Use a small safe hand phrase or paper route at home.", "Claim Dance movement only if a learner actually moves in an agreed accessible mode."),
        Card("Drama: the missing label", "AC9ADR4D01 AC9ADR4C01", "Invented characters Ivo and Peri need to sort a returned book with a missing label. Ask what each role knows.", "Improvise a brief scene with role, space and a changed action: guess a box, then choose to ask the organiser instead. Use puppet, gesture, voice, sign or AAC.", "Show how the changed action altered the fictional problem without casting a pupil as careless.", "Two paper puppets; adult voices chosen by learner; AAC script fragments.", "The scene has a recognisable situation and an intentionally changed action; asking avoids unsupported guessing.", "Introduce a fresh character with a conflicting aim and ask for one revised line/action.", "Original character circles, blank paper book; private share okay.", "Use two drawn circles as puppets; no costume or audience.", "A written summary is drama planning until it is enacted or shared as a scene."),
        Card("Media Arts: frame the object", "AC9AMA4D01 AC9AMA4C01", "Show two original paper shapes on a blank table. Ask how framing one closer changes what a viewer notices.", "With a school-approved offline camera or slide tool, capture only the paper shapes in a wide and close frame, then order them for a fictional viewer. If no approved tool, make a paper storyboard labelled preparation.", "Share the actual two-frame media work privately and explain the order, if technology was used.", "Child directs an adult's approved device; enlarged screen; tactile paper framing before capture.", "Wide versus close crop changes emphasis; code evidence requires actual media technology and a constructed work. Paper frames are planning.", "Use a new triangle/square pair and request a different intended emphasis.", "School-managed offline camera or slide tool; crop paper only; no faces, names, voices or upload.", "Draw two blank frames as an honest paper plan; no family device required.", "Without approved media technology, do not credit media production codes."),
        Card("Music: a pulse with a pause", "AC9AMU4D01 AC9AMU4C01", "Offer an original gentle pattern of six pulses: tap, tap, rest, tap, rest, tap. Display six boxes at the same time.", "Learner makes a different six-pulse pattern and changes one rest to a gentle sound or the reverse. Listen, feel a safe vibration, or follow visual pulse marks as an access route; note actual mode.", "Play or sing a chosen pattern quietly if willing; point to the changed pulse.", "Large pulse boxes; quiet soft tap; tactile pulse card; no forced sound exposure.", "Six beats are accounted for and one pulse changes. A silent card can show composition choice but not sounded performance or a listening response.", "Try a fresh four-pulse pattern and ask where a deliberate rest belongs.", "Paper pulse mat and soft surface, no recorded song or third-party melody.", "Use pencil marks or a gentle tap; no instrument needed.", "Do not claim auditory listening if only a visual/tactile route occurred."),
        Card("Visual Arts: direct the eye", "AC9AVA4D01 AC9AVA4C01", "A fictional viewer needs to find a paper tool-return tray. Ask how line, size and empty space could guide attention.", "Make two original tiny designs using only rectangles, arrows and a self-made symbol. Change one visual convention between drafts and ask a neutral viewer where their eye went first.", "Choose a design and explain which choice served the intended viewer.", "Thick pencil or tactile line; large paper; child-directed adult marks.", "A reason ties line, scale or spacing to an intended meaning; neatness and copying a familiar logo are not criteria.", "Give a new viewer who needs the arrow visible from farther away and revise scale.", "Blank paper; no copied brand or cultural motif.", "Create two paper drafts with pencil or string lines.", "A fictional viewer is not real audience research; actual feedback must be recorded separately."),
        Card("Dance: change the pathway", "AC9ADA4C01 AC9ADA4P01", "A dancer must show ‘look → turn → arrive’ without touching anyone. Ask how a curved route changes the idea.", "Compose and practise a three-action phrase with one direction and one timing choice; safely revise after a private teacher prompt. A tabletop token may plan a route first.", "Perform privately to a chosen audience if willing, or record planning only; say what changed.", "Hand, gaze, seated, rolling or standing safe movement under individual plan; private audience.", "Choreography and informal performance are evidenced by actual chosen bodily movement shown to a willing audience, not token marks alone.", "Offer new ‘arrive → wait → return’ phrase and check an independent change in direction.", "Clear approved space and no contact, chase or public-show demand.", "A gentle small movement phrase works; paper only is a plan.", "No movement/performance credit if the learner chose a paper-only route."),
        Card("Drama: another viewpoint", "AC9ADR4C01 AC9ADR4P01", "Revisit Ivo and Peri but add invented organiser Meli, who does not know the label is missing. Ask how Meli's view differs.", "Devise a two-part scene: first Ivo/Peri decide, then Meli learns the problem. Change one line or gesture to make the new viewpoint clear; rehearse with puppets if preferred.", "Share the scene privately and identify the moment the viewpoint changes.", "Puppet enactment; sign/AAC role lines; adult voices only on learner direction.", "An enacted scene shows a role transition and an altered decision. Written dialogue without sharing is planning.", "Give a fresh lost-ticket situation and ask learner to mark its viewpoint shift.", "Original paper puppets and fictional story only.", "Use three circles as puppets; a family member may be audience by choice.", "Do not assess extroversion or vocal volume as drama quality."),
        Card("Media Arts: sequence for meaning", "AC9AMA4C01 AC9AMA4P01", "Original paper story: empty shelf → paper card in hand → returned card. Ask whether a viewer needs another frame.", "Use approved offline media technology to make a two- or three-frame sequence of paper only. Compare two orders; choose the one that makes the action clearer. Paper storyboard is preparatory if no tool.", "Share the actual media work with a chosen informal audience and ask one neutral question about clarity.", "Adult operates school tool on direction; enlarged frame; tactile ordered cards before capture.", "A coherent sequence communicates a chosen action when captured/organised using technology; share code needs an actual informal audience.", "Use a new paper-only ‘take → repair → return’ idea and adjust frame order.", "Approved offline camera or slides; no person, name, voice, school layout, upload or family account.", "Draw a storyboard if no approved tool; label it planning only.", "No media production or sharing claim from a paper-only storyboard."),
        Card("Music: answer a quiet call", "AC9AMU4C01 AC9AMU4P01", "Teacher offers an original soft four-pulse call: tap, rest, tap, tap, with visual/tactile marks.", "Create a distinct four-pulse answer, join call and answer, then change the answer's ending. Practise in a personally comfortable sound mode; silent composition remains an honest alternative.", "Play/sing the eight-pulse exchange privately if willing; identify the changed ending.", "Soft tap; adult plays child-selected rhythm; tactile beat tokens; visual count.", "Four call plus four answer pulses are ordered, with an intentional changed ending. Sounded performance only if sung or played, not from a silent strip.", "Give a new call with two rests and ask for a contrasting response.", "Original pulse boxes and gentle sound only; no recording or copyrighted tune.", "Mark eight boxes or tap softly by choice.", "Do not equate a silent composition with performed music or claim heard evidence from a visual route."),
        Card("Visual Arts: a revised sign", "AC9AVA4C01 AC9AVA4P01", "Fresh fictional viewer: a new person needs to notice a return-tray direction on a busy notice. No existing logo or sign is shown.", "Make a new original line-and-shape sign, get a neutral chosen viewer response, then revise one visual decision. Label the before and after with the reason.", "Share both privately and state what the revision intended to improve.", "Tactile string line; bold marker; adult makes directed marks; AAC reason.", "A visual change such as larger arrow or clearer spacing relates to the stated purpose. Record real feedback only if actually received.", "Change the sign's target from tray to door and ask which visual part needs revising.", "Blank paper and pencil; no named real school sign, copied brand or cultural design.", "Draw two signs on scrap and ask a trusted adult a neutral viewing question.", "Sharing can be private; ‘effective for all viewers’ needs broader real testing."),
    ],
}

INTRO = {
    "science": "Two connected short inquiries: sealed rock-surface observation and careful reading/planning of temperature data. Room-safe model routes are explicitly marked. No handling of dust, hot water, ice, unidentified minerals or unapproved samples.",
    "hass": "Source-aware, entirely fictional shared-place rule and community-participation cases. A real local conclusion requires a current authorised local source; this pack does not supply one. No invented First Nations knowledge, Country/Place or testimony.",
    "hpe": "Five safe relationship/help-message cards and five optional accessible movement cards. Follow individual safety and access plans, school safeguarding routes and a pupil's consent. No body ranking, personal disclosure, forced touch or public performance.",
    "technologies": "Five low-material Design and Technologies cards plus five unplugged Digital Technologies algorithm/data cards. Paper algorithms are valuable reasoning but do not demonstrate a running program, account security or digital-tool use.",
    "arts": "Two sessions each in Dance, Drama, Media Arts, Music and Visual Arts. Share privately by choice. Actual movement, enacted drama, approved media technology and sounded music are recorded separately from paper planning; do not fabricate cultural forms.",
}

LEARNER_PROMPTS = {
    "science": [
        "Look through the closed bags at samples R and S. Describe three visible features of each. Mark your guess about a difference as a prediction. What is still unknown? If you have drawings instead, write MODEL.",
        "You want to compare how light or dark R and S look. Plan a fair view: what stays the same about light, distance and bag? What one thing changes? Use the paper tokens if useful.",
        "Measure the visible longest span of the sealed sample or its bag with a ruler. Start at zero and record two whole-centimetre readings. Name exactly what object you measured.",
        "These are invented notes: R—large visible grains; S—fine visible grains; T—large visible grains. Make a table, group the matching notes and leave unknown details as unknown. Write MODEL.",
        "Two invented observers disagree about R: Jo saw large visible grains from arm's length; Min saw fine grains close to the page. What would you keep the same in a repeat check? Do not decide who is correct yet.",
        "This invented record says a sealed bottle was 24°C at 0 minutes and 25°C at 2 minutes. What changed? What question would you ask about the cause? Write MODEL.",
        "Plan an adult-managed comparison of two sealed bottles. Choose what stays the same, what changes, when an adult reads a scaled thermometer and how everyone stays safe. A plan is enough today.",
        "If the teacher has approved real readings, label them REAL. Otherwise use MODEL: 0 minutes—22°C; 2 minutes—23°C; 4 minutes—24°C. Make a table and simple labelled column graph. Which is greatest?",
        "Invented records over four minutes: A 22→24°C; B 22→22°C. Work out both changes. What can you compare, and what information is missing before you explain why? Write MODEL.",
        "A pretend art material box has two invented records over four minutes: shelf 24→26°C; cupboard 24→24°C. Write a short note with data, a cautious idea and what a real school would need to check. Write MODEL.",
    ],
    "hass": [
        "Invented sign: ‘Return the shared atlas to the marked shelf after use.’ What does it actually ask people to do? Write one question about a real school's rule that this sign cannot answer.",
        "Which could tell you a real school's current rule: an approved current policy, a learner's suggestion or an invented poster? Sort the sources and name what you would check.",
        "Invented visitor cards: ‘I could not find the atlas’ and ‘I found it later.’ Match each report to its speaker. What might a return rule help with? What does neither card tell us?",
        "Invented Ari values finding the atlas quickly. Invented Bela finds the shelf label hard to read. Record both views. Suggest a change that could help without pretending these two speak for everyone.",
        "At the made-up Maru room, a magnifier cannot be found and a visitor says the shelf marks are unclear. Propose one reversible change. Name a possible benefit, a possible difficulty and what you would check.",
        "A pretend book swap has optional roles: label maker, organiser and access checker. Why might someone choose to help? Why might they choose not to? Write a question for a real organiser.",
        "Draw an invented hall with a return desk and quiet table. Place optional roles on your map and label it MODEL. What access detail can this pretend map not tell you about a real place?",
        "A pretend loud announcement might help some book-swap visitors and bother others. Compare it with a clear written or tactile sign: one possible benefit and one drawback of each. Who should be asked before a real change?",
        "Two invented cards: a sign says ‘return atlas’; a visitor says ‘a larger label might help me’. Tell a three-sentence account that names each source and one thing you still do not know.",
        "At the fictional Pera games table, a board remains out after closing. One visitor wants a clear return place; another values an open route. Propose a reversible rule, explain two possible effects and name what a real school would need to check.",
    ],
    "hpe": [
        "Pretend scene: Teo asks to borrow Luz's paper marker. Luz says ‘not now’. What respectful reply can Teo give? What if Luz said yes earlier and then changed their mind?",
        "A made-up club offers only a loud, fast relay. Invent two optional roles or ways to join. How can you ask someone what they prefer without guessing their needs?",
        "Two people are invited to a new puzzle route. Name two different feelings they *might* have. Choose a safe strategy for someone who wants a pause or more information.",
        "Pretend online message: ‘Send your school password to play.’ Choose your next steps without saying any real password. Who is an approved helper in your school?",
        "Invented poster: ‘Only the fastest breaks count! Join the Swift Club.’ What does it want you to believe or do? Which word needs checking? Write a fairer message.",
        "Choose a school-approved safe way to move. Try a straight path and a curved path with a stop cue if safe. If you only use a paper token, label the work PLAN.",
        "A paper barrier is on a pretend route. Draw two possible ways around it, then try one in an approved safe movement mode if available. What changed after feedback?",
        "In a pretend target game, one person has had three turns and another none. Make a fair turn-and-pause rule. With willing people, try it using soft paper tokens; otherwise label your rule PLAN.",
        "Make a safe three-action phrase using start, curve and pause. Try it in an approved movement mode if available, then change one timing or direction choice. What did you observe?",
        "Fresh route: two starts, one wide finish and a keep-clear zone. With a willing partner and approval, choose roles, a fair rule and a movement path. Report only what actually happened; otherwise label PLAN.",
    ],
    "technologies": [
        "A pretend class needs a reusable holder for a shared instruction card. Who is it for? Name two things it should do, fold a scrap-card idea and record whether it stands in one gentle test.",
        "Compare two same-size scrap strips: one flat, one folded into a triangle. Gently push each in the same direction on a table. What did you see? What has this one test not proved?",
        "Draw two different paper-card holders. Label folds and where the instruction card goes. Choose one and number three steps for making it. Give a reason for the choice.",
        "Make your selected holder by folding scrap card. Put in a blank instruction card and give the table one gentle tap. What did your model actually do? What step would you change?",
        "Check your holder against three criteria: card visible, material reusable, fits a narrow desk edge. For each, write YES, NOT YET or UNKNOWN and an observation. Choose one revision.",
        "Fictional Nia wants to return a card to the correctly labelled box. Write a user story, then three ordered paper-robot steps. What happens if a label does not match?",
        "A card says BLUE. Boxes say BLUE and GREEN. Write an IF/ELSE rule and test both branches with paper tokens. What happens if no box matches?",
        "Three cards need checking. Write one compare-and-place rule that repeats for each card. Run three paper tokens, including one without a matching box. Mark each repeat.",
        "Invented shelf count: blue 2, green 1. Show the same counts as a labelled table and as three paper shapes with words. Check that both displays keep the same information.",
        "Fictional Ori must sort A, B and C but only A and C boxes exist. Trace sequence, comparison and repeat for all three cards. Where does B go? Change any unclear step.",
    ],
    "arts": [
        "Dance idea: near → far → still. Make a safe three-action movement phrase in your chosen body mode. Try it, change its size or timing, and tell what changed. A paper path can be a PLAN.",
        "Drama story: invented Ivo and Peri find a returned book with no label. Use paper puppets, sign, AAC, voice or gesture to act two possible next actions. How does the scene change?",
        "Media Arts: use a school-approved offline tool to capture only two original paper shapes in a wide and close frame. Which order changes emphasis? If no tool is available, draw a storyboard and label it PLAN.",
        "Music: the original six-pulse pattern is tap, tap, rest, tap, rest, tap. Make a different six-pulse pattern and change one place. You may tap softly or plan with marks; say which you did.",
        "Visual Arts: a pretend viewer needs to find a paper return tray. Make two original designs with your own shape, line and spacing. Which choice guides attention?",
        "Dance idea: look → turn → arrive. Create and, if safe, perform a three-action phrase with one direction and one timing change for a chosen private audience. Paper arrows can be a PLAN.",
        "Drama: invented organiser Meli learns that Ivo and Peri found a missing label. Act a short two-part scene with puppets or another chosen drama mode. Where does the viewpoint change?",
        "Media Arts: empty shelf → paper card in hand → returned card. Use an approved offline tool to make and privately share a short paper-only frame sequence. Otherwise label a paper storyboard PLAN.",
        "Music: an original quiet four-pulse call is tap, rest, tap, tap. Make a different four-pulse answer, then change its ending. You may play softly or mark a silent PLAN.",
        "Visual Arts: make your own line-and-shape direction sign for a pretend tray. Ask a chosen viewer what they notice first, revise one feature and explain why. A private share is enough.",
    ],
}


def render(subject: str) -> dict[str, str]:
    cards = CARDS[subject]
    assert len(cards) == 10
    title = subject.upper() if subject == "hpe" else subject.title()
    teacher = [f"# Year 3 {title} · optional Weeks 3–4 teacher sequence", "", INTRO[subject], "", "Each Day 11–20 block is **12 minutes**: notice 2, try/make 7, show 3. Choose what fits the timetable; these are supplements, not a complete subject allocation. Prepare the stated safe materials, give the separate [learner card](LEARNER.md), and retain the [checks and next moves](ASSESSMENT.md) teacher-side. The original [print mat and text route](../print/TEXT-ALTERNATIVES.md) support spoken, visual, tactile and low-print access. Code links are partial and exact in the [crosswalk](../CURRICULUM-CROSSWALK.md).", ""]
    learner = [f"# Year 3 {title} · clean learner cards, Days 11–20", "", "Choose how to respond: speak, sign, use AAC, point, draw, move, make or direct an adult as the task allows. You can ask for a quiet/private route. Nobody needs to tell us about their home, body, identity or personal experiences. The original [print mat and complete text route](../print/TEXT-ALTERNATIVES.md) are optional. Your teacher will tell you whether a card uses **real observation**, an **invented model** or a **plan only**. Keep that label with your work.", ""]
    assess = [f"# Year 3 {title} · teacher-only checks and next moves", "", "Keep this separate from learner cards. Capture `exact action/words | source or actual mode | help offered | next move` without identifiable child data in this public pack. These short checks are formative, not a full achievement-standard judgement. Score 2 for independent evidence with access available, 1 after a model/prompt, 0 for not yet evidenced; **not assessed** if access, approval or opportunity was unavailable. Do not mark planning as an actual experiment, bodily movement, shared drama, sounded music or media-tool use. Recheck with the fresh task below.", "", "| Day | Observable check / acceptable response | If not yet, teach and recheck | Evidence limit |", "| ---: | --- | --- | --- |"]
    for idx, card in enumerate(cards, 11):
        heading = f"Day {idx} — {card.title}"
        teacher += [f"## {heading}", "", f"**Codes:** {', '.join('`'+c+'`' for c in card.codes.split())}. **Prepare:** {card.prepare}", "", f"1. **Notice · 2 min.** {card.notice}", f"2. **Try/make · 7 min.** {card.try_}", f"3. **Show · 3 min.** {card.show}", "", f"**Learner choices:** {card.choices}", "", f"**Home/low-material:** {card.home}", "", f"**Evidence boundary:** {card.boundary or 'Record only the action and source that actually occurred; a plan is not a trial.'}", ""]
        learner += [f"## {heading}", "", LEARNER_PROMPTS[subject][idx-11], "", f"**Choose a route:** {card.choices}", "", f"**Show:** {card.show}", "", f"**Home/low-material:** {card.home}", ""]
        assess.append(f"| {idx} | {card.check.replace('|', 'or')} | {card.next_.replace('|', 'or')} | {(card.boundary or 'Record actual route only.').replace('|', 'or')} |")
    teacher += [RIGHTS, ""]
    learner += [RIGHTS, ""]
    assess += ["", "**Fresh transfer:** Day 20 uses a new situation within its subject. After a miss, use the named *different* scenario in the third column rather than rehearsing the same answer. Record support and a future teaching action. A specialist/local educator should review these prompts and each learner's current pathway before classroom use.", "", RIGHTS, ""]
    return {"TEACHER.md": "\n".join(teacher), "LEARNER.md": "\n".join(learner), "ASSESSMENT.md": "\n".join(assess)}


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--write", action="store_true")
    args = parser.parse_args()
    for subject in CARDS:
        for name, content in render(subject).items():
            path = ROOT / subject / name
            if args.write:
                path.write_text(content, encoding="utf-8")
            elif not path.is_file() or path.read_text(encoding="utf-8") != content:
                raise SystemExit(f"FAIL: {subject}/{name} differs; review source and use --write")
    print("PASS: 50 distinct authored cards, clean learner routes and separate keys")


if __name__ == "__main__":
    main()
