Appearance
Worked examples
Four complete recipes, each stated as a goal in plain language, then the full configuration, then what the generated output looks like. Rule slugs and names refer to the canonical seeded catalog — see Canonical rules.
1. A single-technique recipe
Goal. Train the "no rule 9" Plain family in the ones: 9 is the technique being learned, 7 and 8 are recent enough to be worth reviewing, and everything smaller is fair padding.
Recipe settings
| Field | Value |
|---|---|
sumMax | 9 |
minStepsCount | 2 |
sumMax: 9 does the place restriction on its own here: the operand alphabet derived from a ceiling of 9 contains only the ones place, so no place constraint is needed.
Rule attachments
| Rule | Name | Usage | Place |
|---|---|---|---|
RULE-43 | Plain (9) - Addition | target | 0 |
RULE-52 | Plain (9) - Subtraction | target | 0 |
RULE-41 | Plain (7) - Addition | review | 0 |
RULE-42 | Plain (8) - Addition | review | 0 |
RULE-50 | Plain (7) - Subtraction | review | 0 |
RULE-51 | Plain (8) - Subtraction | review | 0 |
RULE-35…RULE-40 | Plain (1)…(6) - Addition | filler | 0 |
RULE-44…RULE-49 | Plain (1)…(6) - Subtraction | filler | 0 |
RULE-53 | No negative sum | constraint | 0 |
Count fields are left null throughout. The recipe leans on the whitelist rather than quotas: because a step must match some target, review, or filler rule to be admitted, the 18 Plain rules already define exactly the space the student is allowed to work in.
What it generates. Single-digit steps only, running sums walking around 0..9, mixing the target ±9 moves with smaller Plain padding. A typical trace: 0 → +3 → +5 → -1 → +2 → -9.
Add a quota when the target must actually appear
With no minCount on the target rules, nothing forces a ±9 step into any given exercise — the search is free to produce an all-filler sequence. Adding minCount: 1 to one or both target attachments makes the technique mandatory, at the cost of a slightly harder search.
2. A bounded-sum recipe (0..19)
Goal. Train carrying into the tens, with every running sum confined to 0..19.
Recipe settings
| Field | Value |
|---|---|
sumMax | 19 |
minStepsCount | 6 |
Rule attachments
| Rule | Name | Usage | Place |
|---|---|---|---|
RULE-43 | Plain (9) - Addition | target | 0 |
RULE-52 | Plain (9) - Subtraction | target | 0 |
RULE-35…RULE-40 | Plain (1)…(6) - Addition | filler | 0 |
RULE-44…RULE-49 | Plain (1)…(6) - Subtraction | filler | 0 |
RULE-53 | No negative sum | constraint | 0 |
Setting sumMax: 19 is the whole story when the window starts at 0. The ceiling is enforced structurally, and it also caps the operand alphabet at the tens.
If the window does not start at 0 — or if you want a 0..19 window on a recipe whose sumMax is deliberately looser — add one more constraint attachment:
current_sum >= 0 AND current_sum <= 19 AND prev_sum <= 19| Rule | Name | Usage | Place |
|---|---|---|---|
| (new constraint rule) | Sums within 0..19 | constraint | 0 |
The prev_sum <= 19 clause is not redundant. current_sum only describes the state after a step, so bounding it alone leaves the opening value free to sit outside the window — Sum range has the measured demonstration and the reasoning.
What it generates. Sequences whose running total crosses 10 and comes back, never exceeding 19 and never going negative.
3. Multi-place: "10-19, tens fixed at 1 bead"
Goal. Children learn the numbers 10-19. The tens digit only ever moves by exactly one bead, while the ones digit follows the full "no rule 9" Plain family.
This is the first recipe on this page that produces composite steps — single steps touching two decimal places at once, such as +11 or -11. That works by attaching rules to a place-channel rather than globally. Multi-place combo steps explains the mechanism; here is the configuration.
Recipe settings
| Field | Value |
|---|---|
sumMax | 19 |
minStepsCount | 7 |
Tens channel — one bead, no variety
| Rule | Name | Usage | Place |
|---|---|---|---|
RULE-35 | Plain (1) - Addition | filler | 10 |
RULE-44 | Plain (1) - Subtraction | filler | 10 |
Ones channel — the full 18-rule Plain family
| Rule | Name | Usage | Place |
|---|---|---|---|
RULE-43 | Plain (9) - Addition | target | 1 |
RULE-52 | Plain (9) - Subtraction | target | 1 |
RULE-41 | Plain (7) - Addition | review | 1 |
RULE-42 | Plain (8) - Addition | review | 1 |
RULE-50 | Plain (7) - Subtraction | review | 1 |
RULE-51 | Plain (8) - Subtraction | review | 1 |
RULE-35…RULE-40 | Plain (1)…(6) - Addition | filler | 1 |
RULE-44…RULE-49 | Plain (1)…(6) - Subtraction | filler | 1 |
Global attachment
| Rule | Name | Usage | Place |
|---|---|---|---|
RULE-53 | No negative sum | constraint | 0 |
RULE-35 and RULE-44 are attached twice each — once at place: 10 as the fixed-bead tens channel, once again at place: 1 inside the ones channel's family. That is not a mistake: the same rule legitimately plays two different roles in two different channels of the same recipe, and uniqueness is on (recipe, rule, place). Drop the place: 1 copies and the ones channel loses its digit 1, which makes +11 and -11 unreachable.
Cost. 20 pattern-role attachments. The ceiling is 31, and channels multiply against it — see the note below.
What it generates. A mix of composite steps such as +11, +19, -13 and ordinary atomic steps. A -10 in the output is not a bug: it is an atomic step where the ones channel simply contributed nothing that particular step. Atomic and composite steps coexist naturally, because a channel-tagged rule also admits a standalone atomic step at that same place.
Do not add a place constraint to a channel recipe
Attaching a place = 1-style constraint rule here would reject every composite step silently — place is null on composite steps. See Restricting places and Multi-place combo steps.
Similarly, a last-step constraint written for single-digit work (e.g. one requiring current_value > -6 AND current_value < 6) is incompatible with a tens-channel step and will make this recipe infeasible.
4. Multi-place: "10-99, both digits follow no rule 9"
Goal. Children learn the numbers 10-99, where the tens digit and the ones digit each independently avoid Rule 9 — that is, 9 is the target digit at both places, not merely permitted there.
Recipe settings
| Field | Value |
|---|---|
sumMax | 99 |
minStepsCount | 6 |
Rule attachments
| Rule | Name | Usage | Place |
|---|---|---|---|
RULE-62 | Plain (any) | target | 1 |
RULE-62 | Plain (any) | target | 10 |
RULE-53 | No negative sum | constraint | 0 |
Three attachments; two of them pattern-role. RULE-62 is a consolidated rule — one expression covering the whole Plain family, both signs, every digit — attached once per channel.
Why consolidate. The alternative is the 18-rule family duplicated across two channels: 18 × 2 = 36 pattern-role attachments, over the ceiling of 31, which simply will not compile. Consolidating sidesteps the multiplication entirely.
What you give up. A consolidated rule cannot carry a per-digit target/review/filler split. This configuration says "any Plain digit at either place", not "Plain(9) is specifically the target and Plain(7)/(8) are specifically review". For this recipe's stated intent that is the correct reading anyway — but if you need per-digit quotas on one channel, attach the full family to that channel and the consolidated rule to the other (18 + 1 = 19, comfortably under the ceiling).
The other consolidated rules follow the same pattern: RULE-59 (Rule 5 (any)), RULE-60 (Rule 10 (any)), RULE-61 (Combo (any)), RULE-62 (Plain (any)).
What it generates. Two-digit composite steps such as +47 or -83, alongside atomic steps at either place, with running sums inside 0..99.
Choosing between examples 3 and 4
The two multi-place recipes sit at opposite ends of the same tradeoff:
| Example 3 | Example 4 | |
|---|---|---|
| Pattern-role attachments | 20 | 2 |
| Per-digit target/review/filler split | Yes, on the ones channel | No |
| Channels | 2 (tens fixed, ones full family) | 2 (both consolidated) |
| Headroom under the 31-attachment ceiling | 11 | 29 |
Reach for consolidated "(any)" rules whenever a per-digit quota split is not actually needed for a given channel. Reach for the full family when the pedagogy depends on naming which digit is the target.
See also
- Recipe concepts — usage categories, count quotas,
minStepsCount. - Sum range — the
0..19window technique in full. - Restricting places — place expressions and opening-value pinning.
- Multi-place combo steps — how channels actually work.
- Troubleshooting — when one of these stops generating.