@@ -47,42 +47,44 @@ Run it with `FACTOR=/path/to/factor bin/check-accretive [slug...]`.
4747
4848## Results
4949
50- The initial audit found 11 of 47 not Accretive. The 5 Mode-B exercises have
51- since been fixed (test- only changes); 6 remain open (5 Mode A + 1 structural) .
50+ The initial audit found 11 of 47 not Accretive. The 5 Mode-B and 5 Mode-A
51+ exercises have since been fixed; only the 1 structural case remains open .
5252
5353| Verdict | Count | Exercises |
5454| ---| ---| ---|
55- | Accretive | 41 | all others |
56- | Mode A (open ) | 5 | bering-bearings, boatswains-bilge, dragons-descendants, factory-failsafe, pirates-path |
55+ | Accretive | 46 | all others |
56+ | Mode A (fixed ) | 5 | bering-bearings, boatswains-bilge, dragons-descendants, factory-failsafe, pirates-path |
5757| Mode B (fixed) | 5 | garden-gathering, lighthouse-logbook, poetry-club, quayside-crew, tellers-triage |
5858| Structural (open) | 1 | telegraphers-tape |
5959
60- ## Mode A — a definition is introduced after task 1
61-
62- - ** factory-failsafe** — ` ERROR: machine-error ` is created in task 3, but the
63- tests reference ` machine-error ` / ` machine-error? ` (tasks 3–4). The stub only
64- has a comment, so tasks 1–2 cannot compile.
65- * Fix:* pre-ship the error class in the stub, exactly as ` rpn-calculator `
66- already ships ` zero-divisor-error ` .
67- - ** pirates-path** — ` gold-count ` (a ` MEMO: ` word, task 4) is left as a comment
68- in the stub instead of a stub body, so the tests reference an undefined
69- ` gold-count ` and nothing compiles.
70- * Fix:* pre-stub it, e.g. ` MEMO: gold-count ( cove -- n ) "unimplemented" throw ; ` .
60+ ## Mode A — a definition was introduced after task 1 (fixed)
61+
62+ - ** factory-failsafe** — ` ERROR: machine-error ` was created in task 3, but the
63+ tests reference ` machine-error ` / ` machine-error? ` at compile time, so tasks
64+ 1–2 could not compile. * Fixed* by reordering so defining the error class is
65+ task 1; the check/monitor tasks follow.
66+ - ** pirates-path** — ` gold-count ` (a ` MEMO: ` word, task 4) was a comment in the
67+ stub, so the tests referenced an undefined ` gold-count ` . * Fixed* by shipping it
68+ as a ` : ` stub; task 4 now asks the student to change ` : ` to ` MEMO: ` .
7169- ** dragons-descendants** — the subtuples ` fire-dragon ` / ` ice-dragon ` /
72- ` volcano-dragon ` and their constructors are defined across tasks 2–4 (the stub
73- is comment-only), so implementing only task 1 leaves them undefined.
74- * Fix:* bundle all tuple/constructor definitions into task 1.
75- - ** bering-bearings** — tuples ` polar ` (task 2) and ` relative ` (task 3), plus the
76- direction symbols and the ` >cartesian ` /` flip ` generics, are scattered across
77- tasks (comment-only stub).
78- * Fix:* bundle all tuple/symbol/generic definitions into task 1.
70+ ` volcano-dragon ` and their constructors were defined across tasks 2–4 (the stub
71+ was comment-only). * Fixed* by bundling the whole tuple hierarchy into task 1
72+ (the student still defines it); the descendant constructors are pre-stubbed so
73+ the file compiles.
74+ - ** bering-bearings** — the ` polar ` /` relative ` tuples, direction symbols, and the
75+ ` >cartesian ` /` flip ` generics were scattered across tasks. * Fixed* by bundling
76+ all the data and generic declarations into task 1; the per-class methods stay
77+ in their own tasks.
7978- ** boatswains-bilge** — task 5's ` valve ` tuple, ` <valve> ` constructor, and
80- ` is-open ` slot are not declared; the tests reference ` <valve> ` /` is-open>> ` , so
81- tasks 1–4 cannot compile. (Tasks 1–4 themselves use a ` test-pump ` fixture
82- defined inside the test file and are otherwise fine.)
83- * Fix:* pre-ship the valve skeleton in the stub —
84- ` TUPLE: valve < disposable is-open ; ` , a stubbed ` <valve> ` , and `M: valve
85- dispose* drop ;` — so the file compiles; task 5 fills in the bodies.
79+ ` is-open ` slot were not declared; the tests reference ` <valve> ` /` is-open>> ` , so
80+ tasks 1–4 could not compile. * Fixed* by pre-shipping the valve skeleton
81+ (` TUPLE: valve < disposable is-open ; ` , a stubbed ` <valve> ` , and `M: valve
82+ dispose* `); task 5 fills in the bodies.
83+
84+ ` factory-failsafe ` , ` dragons-descendants ` , and ` bering-bearings ` now rely on a
85+ task-1 definition to compile (like ` lasagna ` and ` role-playing-game ` ): the bare
86+ stub does not compile on its own, which ` bin/check-accretive ` recognises via its
87+ ` ACCRETIVE_VIA_TASK1 ` list.
8688
8789## Mode B — an early task's test called a later task's word (fixed)
8890
0 commit comments