S

Salmon EDU

Worksheet Builder · Math Edition v1.3
AionSystem · Educational Division
Theme
Template
Quick Templates
Click a template to load it instantly
Addition
Subtraction
Multiplication
Division
Linear Equations
Mixed Ops
Fractions (Like)
Fractions (Unlike)
Percentages
Order of Operations
Exponents
Interleaved Practice
Custom
📄 Worksheet Info
Problem Pattern
Options
Explanation Lines
2 lines for students to show reasoning
Answer Key
Auto-generated on separate section
Student Name & Date Fields
Header lines for student info
Salmon EDU Branding
Small footer credit on printed sheet
Allow Negative Numbers
Enables negative operands in arithmetic problems. Grade 6–7.
Worksheet Preview 0
📄
Configure your worksheet settings on the left, then click Generate to preview.
Red Team Report — Full Audit History
Every finding, fix, and feature. This log is permanent and public.
4
Passes Run
10
Bugs Fixed
1
Open Limitations
9
Features Added
// Pass 1 — Input Validation Audit  ·  March 2026
✓ RT-PASS1-FIX1 — FIXED: Range Inversion Guard
When aMin > aMax or bMin > bMax, rnd(min, max) receives a negative range. Math.floor(Math.random() * negative) produces garbage — large negative numbers that become nonsensical problem text. Fixed: explicit guard fires before any problem generates, exits with a named error message explaining which range is inverted.
✓ RT-PASS1-FIX2 — FIXED: Linear Coefficient Floor (a < 2)
If laMin was set to 1, the generator produced equations like 1x + 5 = 8. This is not a meaningful algebra problem — it's trivially x = c − b with no coefficient to solve through. Fixed: guard requires a ≥ 2 with an explanation of why.
✓ RT-PASS1-FIX3 — FIXED: Count = 0 Silent Empty Sheet
If the problem count field was cleared or set to 0, the generator looped 0 times producing an empty sheet with no error. Fixed: explicit guard exits with named error before any rendering occurs.
★ RT-PASS1-BADGE — ADDED: AION Certification Badge
AION certification badge added to footer, linking to CERTIFICATION.md in the Sovereign Trace Protocol repository. Gold SVG seal matches the RCS Physics Simulator. This product is certified under the AION Constitutional Stack.
// Pass 2 — Architecture & Visual Standards  ·  March 2026
✓ RT-PASS2-FIX1 — FIXED: Red Team Log in Footer (Wrong Location)
Pass 1 placed the red team audit log inside the page footer — visible only by scrolling, not a first-class record. Fixed: dedicated Red Team tab added to the main tab bar. The log is now a first-class document — styled, structured, permanent, and reachable in one click.
★ RT-PASS2-FEATURE1 — ADDED: Living Background System
Static background replaced with three-layer system: (1) canvas-animated floating math symbols (+, −, ×, ÷, =, x, √, π, ², ∫, ∑, %) drifting upward continuously; (2) CSS-animated mesh gradient using theme variables across 18-second cycles; (3) backdrop-filter glass on all cards. Theme-aware — works across all three themes without JS intervention. Salmon EDU gold standard template for all future HTML builds.
// Pass 3 — v1.3 Feature Audit  ·  March 2026
✓ RT-PASS3-FIX1 — FIXED: LIMITATION-1 — Division b=0 Silent Override Resolved
Previously: if bMin and bMax were both 0, Math.max(0,1)=1 overrode silently — displayed range said "0–0" but problems generated with divisor=1. Fixed: explicit pre-generate guard detects bMin===0 && bMax===0 and exits with named error: "Divisor range cannot be 0–0. Set B Min to at least 1." No silent override remains.
★ RT-PASS3-FEATURE1 — ADDED: Integers / Negative Numbers Toggle
New toggle in Options card: "Allow Negative Numbers." When ON: arithmetic operands may be negative (down to −99), subtraction swap guard is suspended (negative results allowed), negative numbers display in parentheses (−3). When OFF (default): all existing positive-integer behavior preserved. Division divisor always remains >0 regardless of toggle. Grade 6–7 pre-algebra support.
★ RT-PASS3-FEATURE2 — ADDED: Fractions (6 Sub-Types, GCD Simplification)
New pattern type: Fractions with 6 sub-types (like-add, like-sub, unlike-add, unlike-sub, multiply, divide). GCD helper (Euclidean algorithm) and simplify(n, d) function reduce all answers to lowest terms. Inline display format (a/b — not stacked, print-safe). Guards: denominator clamp ≥1; subtraction ensures numerator result ≥0. Quick templates: "Fractions (Like)" and "Fractions (Unlike)."
★ RT-PASS3-FEATURE3 — ADDED: Percentages (3 Forms)
New pattern type: Percentages. Form 1: "Find X% of N"; Form 2: "A is ___% of B"; Form 3: "A is X% of ___." Values chosen algorithmically to guarantee whole-number answers (Form 1: N is multiple of 20, X is multiple of 5; Form 2: A/B ratio reduces cleanly; Form 3: A divisible by X/100). Guards: percentage range 1–100.
★ RT-PASS3-FEATURE4 — ADDED: Order of Operations / PEMDAS
New pattern type: PEMDAS. Configurable step count (2–4). Generator builds expressions with randomly selected ops (+, −, ×), inserts one pair of parentheses around a random sub-expression. Evaluated internally via JS (safe — no user input enters eval). Whole-number results enforced (retry up to 20 times). No division-by-zero in generated expressions. Display: expression with parentheses = ___.
★ RT-PASS3-FEATURE5 — ADDED: Exponents (Basic)
New pattern type: Exponents. Configurable base range (2–12) and exponent range (2–4, hard max 5). Display uses HTML <sup> superscript — verified functional in preview and PDF print window. Hard cap at exponent 5 enforced in both UI (max="5") and JS generator. Quick template: "Exponents."
★ RT-PASS3-FEATURE6 — ADDED: Interleaved Practice Mode
New pattern type: Interleaved Practice ★. Multi-select checkbox group selects which types to pull from (all types available). Fisher-Yates shuffle distributes type assignments across N problems with no-two-consecutive enforcement (where pool ≥ 2 types). Each problem calls its type's generator with current configured ranges. Research citation displayed in panel: Taylor & Rohrer (2010). Guards: ≥2 types required; all selected type ranges validated before generation. Default: open (no pre-selection). Quick template: "Interleaved Practice."
★ RT-PASS3-FEATURE7 — ADDED: How-To Tab
New tab: "? How To Use" — guide-card format covering Quick Templates, Worksheet Info, all pattern types, Integers toggle, Interleaved Practice (with pedagogical rationale), Options (each toggle explained), Toolbar (Save/Load JSON, PDF Export, Print), and Teacher Copy tip. Written for teachers, not engineers. Consistent with existing card design language.
// Pass 4 — Enterprise Math & Logic Audit  ·  March 2026
✓ RT-PASS4-FIX1 — FIXED: Unlike-Denominator Subtraction — Wrong Swap (Critical Math Bug)
unlike-sub swapped only the numerators when ensuring a/c ≥ b/d, while keeping denominators c and d in their original positions. This is mathematically incorrect — swapping numerators without swapping their paired denominators can produce negative answers (e.g. 2/10 − 1/1 = negative). Fixed: swap the full fraction pairs [n1,d1,n2,d2] = [n2,d2,n1,d1] so the larger fraction always appears first. The cross-product comparison now correctly guards the paired units.
✓ RT-PASS4-FIX2 — FIXED: PEMDAS — ASCII Hyphen-Minus in Display Expressions
The PEMDAS generator used ops = ['+', '-', '×'] — the ASCII hyphen-minus for subtraction. Every other generator in this tool uses the Unicode minus sign (U+2212). Result: PEMDAS subtraction displayed as 3 - 5 while all other types display 3 − 5. Fixed: split into separate display and eval arrays. dispOps = ['+', '−', '×'] (Unicode) drives the worksheet display; evalOps = ['+', '-', '*'] (ASCII) drives the JS evaluator. Both arrays indexed by the same random index per operation.
✓ RT-PASS4-FIX3 — FIXED: Division with Negatives — Dividend Not Formatted
When "Allow Negative Numbers" is ON, the arithmetic generators format negative operands as (−3) using fmtNum(). The division generator formatted both operands in the display text using raw ${a*b} — bypassing fmtNum() for the dividend. If a=-3, b=4, the worksheet showed -12 ÷ 4 instead of (−12) ÷ 4. Fixed: fmtNum(a*b, allowNeg) now applied to the dividend consistently.
✓ RT-PASS4-FIX4 — FIXED: Canvas Background — Particle Density Frozen After Resize
The resize handler called resize() to update canvas dimensions W and H, but did not rebuild the particle array. Particles were created at initial viewport density (e.g. laptop window) and stayed at that count regardless of how the window was resized. On a large monitor, the background would be sparse; on a narrow viewport, it would be crowded. Fixed: resize handler now rebuilds particles array at the new density calculation immediately after updating W and H.
✓ RT-PASS4-FIX5 — FIXED: Linear Equation — Displays "ax + 0 = c" When Constant Is Zero
genLinear built the constant display as b ≥ 0 ? '+ b' : '− |b|'. When b=0 (reachable via JSON template load, bypassing the HTML min="1" constraint), the equation displayed as 3x + 0 = 9 — not a valid algebra worksheet format. Fixed: three-branch display: b === 0 → '${a}x = ${c}', b > 0 → '${a}x + ${b} = ${c}', b < 0 → '${a}x − ${|b|} = ${c}'. The negative-constant branch also corrects a separate display issue: previously b could only be positive (HTML enforced), but JSON loading bypasses that constraint.
✓ RT-PASS4-FIX6 — FIXED: PEMDAS Fallback — Used 2-Step Expression Regardless of Configured Step Count
When all 20 generation attempts failed (narrow number range, rare), the fallback hardcoded (a + b) × c — always a 2-step expression — even when the configured step count was 3 or 4. Fixed: fallback now builds a proper addition/subtraction chain matching the configured step count, evaluates it, and confirms a non-negative integer result before returning. A guaranteed-safe last-resort remains if the fallback chain also fails.
Red Team Pass 4: March 2026  ·  6 bugs fixed   |   Auditor: ALBEDO  ·  Enterprise math audit — all generators, all branches, all edge cases
// Known Limitations — Open
⚠ LIMITATION-2 — OPEN: Custom Pattern eval() Security Surface
The custom pattern parser uses eval() to compute answers from user-entered expressions. A character whitelist (/[^0-9+\-*/() .]/g) blocks arbitrary code execution before evaluation. For a local-use, no-backend, zero-network tool this is acceptable. If Salmon EDU ever moves to a hosted platform, this must be replaced with a proper expression parser (e.g. math.js). Logged for architecture awareness. LIMITATION-1 (division b=0) resolved in Pass 3.
Red Team Pass 1: March 2026  ·  3 bugs fixed · 1 feature   |   Red Team Pass 2: March 2026  ·  1 bug fixed · 1 feature   |   Red Team Pass 3: March 2026  ·  1 bug fixed · 7 features   |   Red Team Pass 4: March 2026  ·  6 bugs fixed (enterprise math audit)   |   Total: 10 bugs fixed · 9 features · 1 open limitation  ·  Architect: Sheldon K. Salmon × ALBEDO  ·  Stack: AION Constitutional Stack
? How To Use — Salmon EDU Worksheet Builder v1.3
A complete guide for teachers. Everything in one place.

📄 What This Tool Is

The Salmon EDU Worksheet Builder is a single HTML file that runs entirely in your browser — no internet required after the first load, no login, no subscription, no IT approval needed. Download once, open forever. Generate unlimited worksheets, save templates as JSON files, and export to PDF using your browser's print dialog.

★ Quick Templates

Click any chip in the Quick Templates card to instantly load a pre-configured worksheet. Templates set the pattern type, number ranges, problem count, and title. You can then adjust any setting before generating. Templates do not overwrite your saved JSON files.

📄 Worksheet Info

Set your assignment title, student instructions, number of problems (1–50), and column layout (1 or 2 columns). 2 columns fits more problems per page — good for arithmetic. 1 column gives more space per problem — good for multi-step types like PEMDAS or Linear Equations.

✎ Problem Types

  • Addition / Subtraction / Multiplication / Division: Standard arithmetic with configurable A and B ranges. Division always produces whole-number answers.
  • Linear Equation (ax + b = c): Coefficient a is always ≥2 (trivial 1x problems excluded). Configure the coefficient, constant, and answer ranges independently.
  • Fractions: Six sub-types — like denominators (add/subtract), unlike denominators (add/subtract), multiply, divide. Configure numerator and denominator ranges. All answers auto-simplified to lowest terms. Display: inline a/b format (print-safe).
  • Percentages: Three forms — "Find X% of N," "A is ___% of B," "A is X% of ___." Values are chosen to guarantee whole-number answers every time.
  • Order of Operations (PEMDAS): Configurable step count (2–4 operations). One pair of parentheses inserted randomly. Always produces a whole-number answer.
  • Exponents (Basic): Evaluate ab. Configurable base (2–12) and exponent (2–5, hard cap). Prevents unreasonably large answers.
  • Mixed Operations: Randomly selects addition, subtraction, multiplication, or division for each problem. Uses your A/B range settings.
  • Interleaved Practice ★: See section below.
  • Custom Pattern: Use {a:min-max} placeholders. Example: {a:1-10} + {b:1-10}. Answers computed automatically for +, −, ×, ÷ expressions.

± Allow Negative Numbers Toggle

In the Options card, turn on "Allow Negative Numbers" to enable negative operands in arithmetic problems (Addition, Subtraction, Multiplication, Division, Mixed). Negative numbers display in parentheses: (−3) + 7 = ___. Appropriate for Grades 6–7 pre-algebra. Division divisors always remain positive regardless of this setting.

Teacher tip

When negatives are on, subtraction can produce negative results. Prepare students for this before assigning, or pair with a mini-lesson on the number line.

★ Interleaved Practice

Select "Interleaved Practice ★" from the pattern dropdown. Choose at least 2 problem types using the checkboxes. The generator distributes problems across types using a shuffled order — no two problems of the same type appear consecutively. Each type uses whatever ranges you've configured in its own field panel.

Why interleaving works

Interleaving problem types — rather than practicing one type at a time — has been shown to double test scores compared to blocked practice (Taylor & Rohrer, 2010; Rohrer, Dedrick & Stershic, 2015). Blocked practice feels easier but produces weaker long-term retention. Interleaving forces students to identify which strategy applies to each problem — the key skill tested on exams.

⚙ Options

  • Explanation Lines: Adds two blank lines under each problem labeled "Show work:" — space for students to write their reasoning. Recommended for graded assignments.
  • Answer Key: Generates an auto-computed answer key below the problems, separated by a dashed border. Appears on the same page in preview; can be separated by page break in print.
  • Student Name & Date Fields: Adds Name / Date / Period header lines to the worksheet.
  • Salmon EDU Branding: Adds a small footer credit on the printed sheet. Toggle off for a clean unbranded copy.
  • Allow Negative Numbers: See section above.

📄 Toolbar — Save, Load, Export, Print

  • Save JSON: Downloads your current settings as a .json file. Use this to save a worksheet configuration and reload it later — or share it with a colleague.
  • Load JSON: Opens a file picker. Select a previously saved .json file to restore all settings instantly.
  • Generate / New Values: Generate refreshes the worksheet with the same settings but new random numbers.
  • PDF Export: Opens a print-ready version in a new window and triggers your browser's print dialog. Choose "Save as PDF" to save, or select your printer to print directly.
  • Print: Directly triggers print on the current page, hiding all UI elements and showing only the worksheet.
Teacher Copy Tip

Generate your worksheet with "Answer Key" turned ON. Print once for yourself — that's your teacher copy. Then turn Answer Key OFF and print the class set. Same problems, no answers. No extra steps.