{"id": "cmb-01-paint-sum-quantity", "expect": "solved", "text": "Anna paints 3 rooms per hour and Ben paints 2 rooms per hour. Working together, how many rooms do they paint in 4 hours?", "rate_unit": {"numerator": "room", "denominator": "hour"}, "rate_a": 3, "rate_b": 2, "combine_mode": "sum", "time": 4, "time_unit": "hour", "quantity": null, "query": "quantity", "gold": 20, "options": {"A": 20, "B": 12, "C": 8, "D": 5}, "answer": "A", "notes": "Cooperation cue 'working together' -> sum. effective_rate = 3+2 = 5 room/hour; 5 x 4 = 20 room. Distractors: 12=only Anna, 8=only Ben, 5=forgot to multiply by time."}
{"id": "cmb-02-tank-difference-quantity", "expect": "solved", "text": "A pipe fills a tank at 5 liters per minute while a drain removes 2 liters per minute. How many liters are in the tank after 6 minutes?", "rate_unit": {"numerator": "liter", "denominator": "minute"}, "rate_a": 5, "rate_b": 2, "combine_mode": "difference", "time": 6, "time_unit": "minute", "quantity": null, "query": "quantity", "gold": 18, "options": {"A": 18, "B": 42, "C": 30, "D": 12}, "answer": "A", "notes": "Opposing-flow cue 'fills ... removes' -> difference. effective_rate = 5-2 = 3 liter/minute; 3 x 6 = 18 liter. Distractors: 42=sum-mode (5+2)x6, 30=only fill, 12=only drain."}
{"id": "cmb-03-paint-sum-time", "expect": "solved", "text": "Anna paints 3 rooms per hour and Ben paints 2 rooms per hour. Working together, how many hours do they take to paint 20 rooms?", "rate_unit": {"numerator": "room", "denominator": "hour"}, "rate_a": 3, "rate_b": 2, "combine_mode": "sum", "time": null, "time_unit": "hour", "quantity": 20, "query": "time", "gold": 4, "options": {"A": 4, "B": 10, "C": 100, "D": 5}, "answer": "A", "notes": "sum, query time: 20 / (3+2) = 4 hour. Distractors: 10=only Ben (20/2), 100=20x5, 5=effective rate."}
{"id": "cmb-04-tank-difference-time", "expect": "solved", "text": "A pipe fills a tank at 5 liters per minute while a drain removes 2 liters per minute. How many minutes does it take to put 18 liters in the tank?", "rate_unit": {"numerator": "liter", "denominator": "minute"}, "rate_a": 5, "rate_b": 2, "combine_mode": "difference", "time": null, "time_unit": "minute", "quantity": 18, "query": "time", "gold": 6, "options": {"A": 6, "B": 9, "C": 54, "D": 3}, "answer": "A", "notes": "difference, query time: 18 / (5-2) = 6 minute. Distractors: 9=only drain inverse, 54=18x3, 3=net rate."}
{"id": "cmb-05-tank-difference-rate", "expect": "solved", "text": "A pipe fills a tank at 9 liters per minute while a drain removes 4 liters per minute. What is the net rate in liters per minute at which the tank fills?", "rate_unit": {"numerator": "liter", "denominator": "minute"}, "rate_a": 9, "rate_b": 4, "combine_mode": "difference", "time": null, "time_unit": "minute", "quantity": null, "query": "effective_rate", "gold": 5, "options": {"A": 5, "B": 13, "C": 36, "D": 4}, "answer": "A", "notes": "difference, query effective_rate: 9-4 = 5 liter/minute. Distractors: 13=sum-mode, 36=9x4, 4=only drain."}
{"id": "cmb-06-hoses-sum-rate", "expect": "solved", "text": "Two hoses fill a pool together, one at 6 gallons per minute and one at 4 gallons per minute. What is their combined fill rate in gallons per minute?", "rate_unit": {"numerator": "gallon", "denominator": "minute"}, "rate_a": 6, "rate_b": 4, "combine_mode": "sum", "time": null, "time_unit": "minute", "quantity": null, "query": "effective_rate", "gold": 10, "options": {"A": 10, "B": 2, "C": 24, "D": 6}, "answer": "A", "notes": "sum, query effective_rate: 6+4 = 10 gallon/minute. Distractors: 2=difference-mode, 24=6x4, 6=one hose."}
{"id": "cmb-07-tank-non-positive-net", "expect": "solver_refuses", "solver_reason": "non_positive_net_rate", "text": "A pump fills a tank at 4 liters per minute while a drain removes 4 liters per minute. How many liters are in the tank after 5 minutes?", "rate_unit": {"numerator": "liter", "denominator": "minute"}, "rate_a": 4, "rate_b": 4, "combine_mode": "difference", "time": 5, "time_unit": "minute", "quantity": null, "query": "quantity", "gold": null, "notes": "Well-formed setup (reader can read it: two rates, opposing-flow cue, duration, quantity query). effective_rate = 4-4 = 0. The accumulate query is not supported by a non-positive net rate -> solver REFUSES (non_positive_net_rate); it does NOT silently return 0."}
{"id": "cmb-08-paint-non-integer-time", "expect": "solver_refuses", "solver_reason": "non_integer_solution", "text": "Anna paints 3 rooms per hour and Ben paints 2 rooms per hour. Working together, how many hours do they take to paint 12 rooms?", "rate_unit": {"numerator": "room", "denominator": "hour"}, "rate_a": 3, "rate_b": 2, "combine_mode": "sum", "time": null, "time_unit": "hour", "quantity": 12, "query": "time", "gold": null, "notes": "Well-formed setup. effective_rate = 5; 12 / 5 is not an integer -> solver REFUSES (non_integer_solution), never rounds."}
{"id": "cmb-07b-net-negative", "expect": "solver_refuses", "solver_reason": "non_positive_net_rate", "text": "A pump fills a tank at 2 liters per minute while a drain removes 5 liters per minute. How many liters are in the tank after 3 minutes?", "rate_unit": {"numerator": "liter", "denominator": "minute"}, "rate_a": 2, "rate_b": 5, "combine_mode": "difference", "time": 3, "time_unit": "minute", "quantity": null, "query": "quantity", "gold": null, "notes": "effective_rate = 2-5 = -3 (drain exceeds fill) -> NEGATIVE net. The accumulate query is not supported by a non-positive net rate -> solver REFUSES (non_positive_net_rate); it never returns a negative quantity (-9). Exercises the eff<0 branch (cmb-07 covers the eff=0 boundary point)."}
{"id": "cmb-07c-net-zero-time-query", "expect": "solver_refuses", "solver_reason": "non_positive_net_rate", "text": "A pump fills a tank at 4 liters per minute while a drain removes 4 liters per minute. How many minutes does it take to put 12 liters in the tank?", "rate_unit": {"numerator": "liter", "denominator": "minute"}, "rate_a": 4, "rate_b": 4, "combine_mode": "difference", "time": null, "time_unit": "minute", "quantity": 12, "query": "time", "gold": null, "notes": "effective_rate = 4-4 = 0; a time query would compute 12 / 0. The non_positive_net_rate guard refuses BEFORE dividing -> no division by zero. Exercises the eff=0 + query=time cell."}
{"id": "cmb-07d-net-negative-time-query", "expect": "solver_refuses", "solver_reason": "non_positive_net_rate", "text": "A pump fills a tank at 2 liters per minute while a drain removes 5 liters per minute. How many minutes does it take to put 9 liters in the tank?", "rate_unit": {"numerator": "liter", "denominator": "minute"}, "rate_a": 2, "rate_b": 5, "combine_mode": "difference", "time": null, "time_unit": "minute", "quantity": 9, "query": "time", "gold": null, "notes": "effective_rate = 2-5 = -3 (NEGATIVE net) on a time query — never fills, so 'how long to reach 9' is unanswerable. REFUSE (non_positive_net_rate). Closes the eff<0 + query=time cell (cmb-07b is eff<0/quantity, cmb-07c is eff=0/time). All inputs positive; only the net is negative."}
{"id": "cmb-09-unit-mismatch", "expect": "reader_refuses", "reader_reason": "rate_unit_mismatch", "text": "Anna paints 3 rooms per hour and a pipe fills 2 liters per minute. Working together, how much do they complete in 4 hours?", "gold": null, "notes": "Two rates but incompatible units (room/hour vs liter/minute) — they do not share one compound unit, so no single CombinedRateProblem is representable. REFUSE (rate_unit_mismatch)."}
{"id": "cmb-10-combine-ambiguous", "expect": "reader_refuses", "reader_reason": "combine_mode_ambiguous", "text": "One machine runs at 3 widgets per minute. Another machine runs at 5 widgets per minute. How many widgets are produced in 4 minutes?", "gold": null, "notes": "Two rates, same unit, but NO explicit cooperation ('together'/'combined'/'both') or opposing-flow ('fills ... drains') cue. Direction must not be inferred from vibes. REFUSE (combine_mode_ambiguous)."}
{"id": "cmb-11-missing-second-rate", "expect": "reader_refuses", "reader_reason": "missing_second_rate", "text": "Anna and Ben paint a house together. Anna paints 3 rooms per hour. How many rooms do they paint in 4 hours?", "gold": null, "notes": "A cooperation cue IS present ('together') and only ONE rate is given -> REFUSE (missing_second_rate). The CMB domain-entry rule is 2-dimensional (rate-count x cue), NOT cue-gated: (two rates + clear sum/difference cue -> solved); (two rates + no cue -> combine_mode_ambiguous, cmb-10); (one rate + combination cue -> missing_second_rate, here); (one rate or foreign + no cue -> not_combined_rate_shaped, cmb-15). So two rates alone make it CMB's domain even with no cue, while a single rate needs a combination cue to be CMB's substantive domain rather than R3's."}
{"id": "cmb-12-three-rates", "expect": "reader_refuses", "reader_reason": "three_or_more_rates", "text": "Anna paints 3 rooms per hour, Ben paints 2 rooms per hour, and Carla paints 4 rooms per hour. Working together, how many rooms do they paint in 2 hours?", "gold": null, "notes": "Three explicit rates. CMB v1 combines exactly two. REFUSE (three_or_more_rates) — deferred to a later slice."}
{"id": "cmb-13-reciprocal-work-rate", "expect": "reader_refuses", "reader_reason": "reciprocal_work_rate_deferred", "text": "Anna can paint a house in 3 hours, and Ben can paint the same house in 6 hours. Working together, how many hours do they take?", "gold": null, "notes": "Durations to complete a whole job, NOT explicit per-unit rates — the classic reciprocal work-rate form 1/(1/3 + 1/6). A different representation (reciprocal rates, rational arithmetic). REFUSE (reciprocal_work_rate_deferred) — deferred."}
{"id": "cmb-14-clock-interval", "expect": "reader_refuses", "reader_reason": "clock_interval_deferred", "text": "A pipe fills a tank at 5 liters per minute and another fills it at 3 liters per minute, running together from 2 pm to 5 pm. How many liters are in the tank?", "gold": null, "notes": "Elapsed clock time (2 pm to 5 pm), not an explicit duration. REFUSE (clock_interval_deferred) — deferred (the CMB twin of R3's temporal_state)."}
{"id": "cmb-15-not-combined-shaped", "expect": "reader_refuses", "reader_reason": "not_combined_rate_shaped", "text": "A car travels 60 miles per hour for 3 hours. How many miles does it travel?", "gold": null, "notes": "A single explicit rate with no second rate and no combination cue — single-rate R3 territory, not CMB's. CMB must step aside, NOT claim a substantive boundary. REFUSE (not_combined_rate_shaped) -> maps to the input_shape family in CMB-d (router-organ-hygiene invariant)."}
{"id": "cmb-16-single-agent-attribution", "expect": "reader_refuses", "reader_reason": "not_combined_rate_shaped", "text": "Alice types 5 words per minute and Bob types 3 words per minute. How many words does Alice type in 3 minutes?", "gold": null, "notes": "Two same-unit rates present, but the query attributes the answer to a SINGLE agent ('how many words does Alice type') -> a single-rate question with a distractor rate, NOT a combined query. CMB must step aside (not_combined_rate_shaped), never the substantive combine_mode_ambiguous. (CMB-lookback hazard H3: the combined-query gate must exclude single-agent 'does <Agent>' attribution; the combined cases use 'do they' / 'are produced' / 'does it'.)"}
