S1–S3 U9 · new templates inspector — 2026-04-24

First eyeballable proof of: (a) chain-length pipeline via the new age 2-time word problem, and (b) the graphical line-reading template with two new diagram validators wired in.

Status. Both new templates registered and generating clean. Age template: 200/200 algebraically self-consistent across smoke runs. Line-graph template: 12/12 pass both validators (slope/intercept + grid-scale) across this 12-sample inspection.

1 · s1s3-word-age-2time — chain-length proof

Targeted band: EdCity 150s / 2-mark advanced word-problem questions. Each generation produces a 7-stage solution chain (define vars → translate 2 conditions → expand both → eliminate → solve y → back-substitute → verify), matching real S1–S3 word problems. Below: 12 samples of stem + answer + the explicit solution chain rendered for the first 3.

#R1R2T1T2 A ageB agemarkest. timechain
1 102 62 167 2 150s 7
2 104 33 336 2 150s 7
3 53 71 4715 2 150s 7
4 32 55 3515 2 150s 7
5 105 23 426 2 150s 7
6 85 21 346 2 150s 7
7 32 53 2913 2 150s 7
8 32 23 177 2 150s 7
9 104 62 4610 2 150s 7
10 103 61 268 2 150s 7
11 53 44 4412 2 150s 7
12 32 81 3517 2 150s 7
6 years ago, Sophie was 10 times as old as Tim. 2 years from now, Sophie will be 2 times as old as Tim. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Sophie is 16, Tim is 7
Solution chain (stage-by-stage)
  1. Stage 1. Let Sophie's current age = x, Tim's current age = y.
  2. Stage 2. Translate "6 years ago": x − 6 = 10(y − 6). Expand → x − 10y = -54.
  3. Stage 3. Translate "2 years from now": x + 2 = 2(y + 2). Expand → x − 2y = 2.
  4. Stage 4. Subtract eq.2 from eq.1: -8y = -56 → multiply by −1: 8y = 56.
  5. Stage 5. Solve for y: y = 7.
  6. Stage 6. Substitute back into eq.1: x = 10 × 1 + 6 = 16.
  7. Stage 7. Sanity check: 10 = 10 × 1 ✓ and 18 = 2 × 9 ✓.
3 years ago, Anna's age was 10 times Ben's age. 3 years from now, Anna's age will be 4 times Ben's age. Find their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Anna is 33, Ben is 6
Solution chain (stage-by-stage)
  1. Stage 1. Let Anna's current age = x, Ben's current age = y.
  2. Stage 2. Translate "3 years ago": x − 3 = 10(y − 3). Expand → x − 10y = -27.
  3. Stage 3. Translate "3 years from now": x + 3 = 4(y + 3). Expand → x − 4y = 9.
  4. Stage 4. Subtract eq.2 from eq.1: -6y = -36 → multiply by −1: 6y = 36.
  5. Stage 5. Solve for y: y = 6.
  6. Stage 6. Substitute back into eq.1: x = 10 × 3 + 3 = 33.
  7. Stage 7. Sanity check: 30 = 10 × 3 ✓ and 36 = 4 × 9 ✓.
7 years ago, Anna's age was 5 times Ben's age. 1 year from now, Anna's age will be 3 times Ben's age. Find their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Anna is 47, Ben is 15
Solution chain (stage-by-stage)
  1. Stage 1. Let Anna's current age = x, Ben's current age = y.
  2. Stage 2. Translate "7 years ago": x − 7 = 5(y − 7). Expand → x − 5y = -28.
  3. Stage 3. Translate "1 years from now": x + 1 = 3(y + 1). Expand → x − 3y = 2.
  4. Stage 4. Subtract eq.2 from eq.1: -2y = -30 → multiply by −1: 2y = 30.
  5. Stage 5. Solve for y: y = 15.
  6. Stage 6. Substitute back into eq.1: x = 5 × 8 + 7 = 47.
  7. Stage 7. Sanity check: 40 = 5 × 8 ✓ and 48 = 3 × 16 ✓.
5 years ago, Sam's age was 3 times Eva's age. 5 years from now, Sam's age will be 2 times Eva's age. Find their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Sam is 35, Eva is 15
Solution chain
  1. Stage 1. Let Sam's current age = x, Eva's current age = y.
  2. Stage 2. Translate "5 years ago": x − 5 = 3(y − 5). Expand → x − 3y = -10.
  3. Stage 3. Translate "5 years from now": x + 5 = 2(y + 5). Expand → x − 2y = 5.
  4. Stage 4. Subtract eq.2 from eq.1: -1y = -15 → multiply by −1: 1y = 15.
  5. Stage 5. Solve for y: y = 15.
  6. Stage 6. Substitute back into eq.1: x = 3 × 10 + 5 = 35.
  7. Stage 7. Sanity check: 30 = 3 × 10 ✓ and 40 = 2 × 20 ✓.
2 years ago, Sam was 10 times as old as Eva. 3 years from now, Sam will be 5 times as old as Eva. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Sam is 42, Eva is 6
Solution chain
  1. Stage 1. Let Sam's current age = x, Eva's current age = y.
  2. Stage 2. Translate "2 years ago": x − 2 = 10(y − 2). Expand → x − 10y = -18.
  3. Stage 3. Translate "3 years from now": x + 3 = 5(y + 3). Expand → x − 5y = 12.
  4. Stage 4. Subtract eq.2 from eq.1: -5y = -30 → multiply by −1: 5y = 30.
  5. Stage 5. Solve for y: y = 6.
  6. Stage 6. Substitute back into eq.1: x = 10 × 4 + 2 = 42.
  7. Stage 7. Sanity check: 40 = 10 × 4 ✓ and 45 = 5 × 9 ✓.
2 years ago, Sophie was 8 times as old as Tim. 1 year from now, Sophie will be 5 times as old as Tim. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Sophie is 34, Tim is 6
Solution chain
  1. Stage 1. Let Sophie's current age = x, Tim's current age = y.
  2. Stage 2. Translate "2 years ago": x − 2 = 8(y − 2). Expand → x − 8y = -14.
  3. Stage 3. Translate "1 years from now": x + 1 = 5(y + 1). Expand → x − 5y = 4.
  4. Stage 4. Subtract eq.2 from eq.1: -3y = -18 → multiply by −1: 3y = 18.
  5. Stage 5. Solve for y: y = 6.
  6. Stage 6. Substitute back into eq.1: x = 8 × 4 + 2 = 34.
  7. Stage 7. Sanity check: 32 = 8 × 4 ✓ and 35 = 5 × 7 ✓.
5 years ago, Peter was 3 times as old as May. 3 years from now, Peter will be 2 times as old as May. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Peter is 29, May is 13
Solution chain
  1. Stage 1. Let Peter's current age = x, May's current age = y.
  2. Stage 2. Translate "5 years ago": x − 5 = 3(y − 5). Expand → x − 3y = -10.
  3. Stage 3. Translate "3 years from now": x + 3 = 2(y + 3). Expand → x − 2y = 3.
  4. Stage 4. Subtract eq.2 from eq.1: -1y = -13 → multiply by −1: 1y = 13.
  5. Stage 5. Solve for y: y = 13.
  6. Stage 6. Substitute back into eq.1: x = 3 × 8 + 5 = 29.
  7. Stage 7. Sanity check: 24 = 3 × 8 ✓ and 32 = 2 × 16 ✓.
2 years ago, Sam was 3 times as old as Eva. 3 years from now, Sam will be 2 times as old as Eva. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Sam is 17, Eva is 7
Solution chain
  1. Stage 1. Let Sam's current age = x, Eva's current age = y.
  2. Stage 2. Translate "2 years ago": x − 2 = 3(y − 2). Expand → x − 3y = -4.
  3. Stage 3. Translate "3 years from now": x + 3 = 2(y + 3). Expand → x − 2y = 3.
  4. Stage 4. Subtract eq.2 from eq.1: -1y = -7 → multiply by −1: 1y = 7.
  5. Stage 5. Solve for y: y = 7.
  6. Stage 6. Substitute back into eq.1: x = 3 × 5 + 2 = 17.
  7. Stage 7. Sanity check: 15 = 3 × 5 ✓ and 20 = 2 × 10 ✓.
6 years ago, Tom was 10 times as old as Lily. 2 years from now, Tom will be 4 times as old as Lily. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Tom is 46, Lily is 10
Solution chain
  1. Stage 1. Let Tom's current age = x, Lily's current age = y.
  2. Stage 2. Translate "6 years ago": x − 6 = 10(y − 6). Expand → x − 10y = -54.
  3. Stage 3. Translate "2 years from now": x + 2 = 4(y + 2). Expand → x − 4y = 6.
  4. Stage 4. Subtract eq.2 from eq.1: -6y = -60 → multiply by −1: 6y = 60.
  5. Stage 5. Solve for y: y = 10.
  6. Stage 6. Substitute back into eq.1: x = 10 × 4 + 6 = 46.
  7. Stage 7. Sanity check: 40 = 10 × 4 ✓ and 48 = 4 × 12 ✓.
6 years ago, Sophie was 10 times as old as Tim. 1 year from now, Sophie will be 3 times as old as Tim. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Sophie is 26, Tim is 8
Solution chain
  1. Stage 1. Let Sophie's current age = x, Tim's current age = y.
  2. Stage 2. Translate "6 years ago": x − 6 = 10(y − 6). Expand → x − 10y = -54.
  3. Stage 3. Translate "1 years from now": x + 1 = 3(y + 1). Expand → x − 3y = 2.
  4. Stage 4. Subtract eq.2 from eq.1: -7y = -56 → multiply by −1: 7y = 56.
  5. Stage 5. Solve for y: y = 8.
  6. Stage 6. Substitute back into eq.1: x = 10 × 2 + 6 = 26.
  7. Stage 7. Sanity check: 20 = 10 × 2 ✓ and 27 = 3 × 9 ✓.
4 years ago, Sophie was 5 times as old as Tim. 4 years from now, Sophie will be 3 times as old as Tim. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Sophie is 44, Tim is 12
Solution chain
  1. Stage 1. Let Sophie's current age = x, Tim's current age = y.
  2. Stage 2. Translate "4 years ago": x − 4 = 5(y − 4). Expand → x − 5y = -16.
  3. Stage 3. Translate "4 years from now": x + 4 = 3(y + 4). Expand → x − 3y = 8.
  4. Stage 4. Subtract eq.2 from eq.1: -2y = -24 → multiply by −1: 2y = 24.
  5. Stage 5. Solve for y: y = 12.
  6. Stage 6. Substitute back into eq.1: x = 5 × 8 + 4 = 44.
  7. Stage 7. Sanity check: 40 = 5 × 8 ✓ and 48 = 3 × 16 ✓.
8 years ago, Sam was 3 times as old as Eva. 1 year from now, Sam will be 2 times as old as Eva. Find both their current ages.
chain=7 mark 2 est 150s advanced multi-condition-2eq mixed-neg
→ Sam is 35, Eva is 17
Solution chain
  1. Stage 1. Let Sam's current age = x, Eva's current age = y.
  2. Stage 2. Translate "8 years ago": x − 8 = 3(y − 8). Expand → x − 3y = -16.
  3. Stage 3. Translate "1 years from now": x + 1 = 2(y + 1). Expand → x − 2y = 1.
  4. Stage 4. Subtract eq.2 from eq.1: -1y = -17 → multiply by −1: 1y = 17.
  5. Stage 5. Solve for y: y = 17.
  6. Stage 6. Substitute back into eq.1: x = 3 × 9 + 8 = 35.
  7. Stage 7. Sanity check: 27 = 3 × 9 ✓ and 36 = 2 × 18 ✓.

2 · s1s3-graphical-read-coords — diagram pipeline first build

Single straight line on a 13×13 integer grid, with two labeled lattice points. Four question variants ask the student to read off slope, y-intercept, full equation, or a specific (x,y) point. Below: 3 samples per variant.

Validator coverage

Each generated SVG passes through two new validators wired into verify_diagrams.js:

ValidatorChecksFailure mode it catches
(A) slope/intercept Reads the drawn blue line endpoints, inverts the affine to plot coords, confirms drawn slope and y-intercept match diagramSpec.params within 0.05/0.10 tolerance Generator emits "slope = 2" but actually draws a m=3 line
(C) grid-scale Confirms integer tick labels exist for −5 ≤ n ≤ 5 on both axes (only ±6 may be omitted at the arrowhead) Renderer drops half the tick labels — student can't read coordinates unambiguously

This 12-sample run: 12 pass

V0 — Find the slope (chain=1, 30s)

m=-2, c=-1 · chain=1 · 30s
The figure shows a straight line on the rectangular coordinate plane. Find the slope of the line.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-3, 5) (2, -5)
→ -2
slope/intercept ✓
grid-scale ✓
m=3, c=1 · chain=1 · 30s
The figure shows a straight line on the rectangular coordinate plane. Find the slope of the line.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-2, -5) (1, 4)
→ 3
slope/intercept ✓
grid-scale ✓
m=-1, c=-3 · chain=1 · 30s
The figure shows a straight line on the rectangular coordinate plane. Find the slope of the line.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-6, 3) (3, -6)
→ -1
slope/intercept ✓
grid-scale ✓

V1 — Find the y-intercept (chain=1, 25s)

m=-2, c=4 · chain=1 · 25s
The figure shows a straight line on the rectangular coordinate plane. Find the y-intercept of the line.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-1, 6) (5, -6)
→ 4
slope/intercept ✓
grid-scale ✓
m=3, c=0 · chain=1 · 25s
The figure shows a straight line on the rectangular coordinate plane. Find the y-intercept of the line.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-2, -6) (2, 6)
→ 0
slope/intercept ✓
grid-scale ✓
m=-3, c=-3 · chain=1 · 25s
The figure shows a straight line on the rectangular coordinate plane. Find the y-intercept of the line.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-3, 6) (1, -6)
→ -3
slope/intercept ✓
grid-scale ✓

V2 — Find the equation (chain=3, 60s)

m=2, c=-2 · chain=3 · 60s
The figure shows a straight line on the rectangular coordinate plane. Find the equation of the line in the form y = mx + c.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-2, -6) (4, 6)
→ y = 2x − 2
slope/intercept ✓
grid-scale ✓
m=2, c=2 · chain=3 · 60s
The figure shows a straight line on the rectangular coordinate plane. Find the equation of the line in the form y = mx + c.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-4, -6) (2, 6)
→ y = 2x + 2
slope/intercept ✓
grid-scale ✓
m=1, c=-3 · chain=3 · 60s
The figure shows a straight line on the rectangular coordinate plane. Find the equation of the line in the form y = mx + c.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-3, -6) (6, 3)
→ y = x − 3
slope/intercept ✓
grid-scale ✓

V3 — Find y given x (chain=2, 30s)

m=3, c=-4 · chain=2 · 30s
The figure shows a straight line on the rectangular coordinate plane. Find the value of y when x = 3.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (0, -4) (3, 5)
→ 5
slope/intercept ✓
grid-scale ✓
m=1, c=-2 · chain=2 · 30s
The figure shows a straight line on the rectangular coordinate plane. Find the value of y when x = 3.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-4, -6) (6, 4)
→ 1
slope/intercept ✓
grid-scale ✓
m=1, c=-3 · chain=2 · 30s
The figure shows a straight line on the rectangular coordinate plane. Find the value of y when x = -3.
x y -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 0 (-3, -6) (6, 3)
→ -6
slope/intercept ✓
grid-scale ✓

3 · What's still ahead

Generated 2026-04-24T13:06:02.124Z from /tmp/build-u9-inspector.js against workdir/math/diagrams/generators/s1s3_algebra.js (age) and s1s3_graphical.js (line). Validators in workdir/math/diagrams/verify_diagrams.js.