Reaction Rate Modulator — controlled science investigation (revision 2)

Authorised scope: targeted improvement to the existing integrated simulation. The user selected controlled-comparison marks and requested that experiment/action history no longer stop at the latest 20/100 records.

Scientific task and rubric (3 marks):
1. Complete two experiments with different initial temperature, holding both concentrations constant: 1 mark.
2. Complete two experiments with different X concentration, holding Y and initial temperature constant: 1 mark.
3. Complete two experiments with different Y concentration, holding X and initial temperature constant: 1 mark.
Any two completed experiments can supply the evidence, including nonadjacent runs. Each criterion earns at most one mark. Repeats, slider changes and interrupted runs alone do not earn marks. A fourth run can complete the three criteria using a baseline and successive one-variable changes. These marks assess evidence of the investigation method, not collision-theory explanations or conceptual mastery. Pending criteria are not diagnosed as misconceptions.

Preservation and changes:
- Original simulation equations, animation, apparatus, controls, styling rules, model run numbers and four-curve graph remain intact.
- The original control positions are retained; a task checklist and optional suggested method follow the controls. An optional full report and JSON download follow the original content.
- xAPI.js and xapiwrapper.min.js remain byte-identical to the verified working baseline. Launch, identity, caching and delivery code are unchanged. Original fonts remain bundled with OFL licences.
- Changed application files: index.html (targeted task/report UI, interruption/initial-rate hooks), reactor-xapi.js (rubric, complete retention, reporting and schema migration), integration/verification/provenance documents.

Analytics and retention:
- Every committed setting, run start, natural completion, interruption, reset, graph clear and suggested-method view is retained chronologically.
- Every started experiment has a stable consecutive experiment number independent of the action sequence and the original graph's resettable run count.
- Completed/interrupted experiments retain their available time-volume curve samples, initial rate, final gas, reaction time, final temperature, remaining amounts and method-view context.
- No latest-N experiment, action, comparison, report-row or restore count cap remains in the application. Reset flask and Clear runs preserve the whole record and earned marks. The four-curve display is only a visual limit, not a data retention limit.
- Full human-readable feedback contains every experiment and action. Full evidence also appears in structured xAPI state and statement extensions. The unchanged vendor library retains its short result.response preview; it does not replace the complete state feedback or full extensions. No claim is made that SLS/browser storage can accept arbitrarily large records. The full JSON download contains all application evidence, without copied launch credentials or learner identity.
- Only meaningful committed events and the original model's sampled curves are recorded; raw keystrokes, every animation frame and unrelated browser data are not collected.
- Automatic scoring and completion happen when a reaction finishes, before visiting the report. Payload score/max, quiz items, hidden marks, feedback and UI use one rubric. Completion means all three comparison tasks achieved. Further exploration remains available and continues accumulating.

Scientific interpretation:
Use initial gas rate/initial slope for reaction-rate comparisons. Time to approximately 99% conversion is not by itself a fair rate measure when final gas amount changes. Compare plateaus separately to investigate limiting amounts. Model temperature rises exothermically; a 10-degree increase in initial temperature doubles initial rate at fixed concentrations. The simulation is deterministic and does not model experimental uncertainty. Explanations remain teacher-discussion prompts; they are not silently graded.

Restore and migration:
Compatible version-2 state restores the full investigation, method-view count, marks (recomputed), controls, flask and latest four displayed curves without adding attempts. Running work resumes at the saved checkpoint. Version-1 records migrate with original event IDs preserved and consecutive experiment IDs; its already-discarded records cannot be reconstructed. Older experiments without saved curves/initial rates are explicitly incomplete historical evidence rather than fabricated data.

Verification:
See VERIFICATION.json for actual checks. User supplied evidence confirms receipt/display of the earlier unscored report in live SLS. This revised scored package still requires live SLS confirmation; local mock-LRS results are separate from SLS learner attribution and teacher rendering.
