@graffiticode/l0175 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/compiler.d.ts.map +1 -1
  2. package/dist/compiler.js +94 -130
  3. package/dist/compiler.js.map +1 -1
  4. package/dist/embedding.d.ts +1 -0
  5. package/dist/embedding.d.ts.map +1 -1
  6. package/dist/embedding.js +105 -11
  7. package/dist/embedding.js.map +1 -1
  8. package/dist/index.d.ts +4 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/lexicon.d.ts +7 -0
  13. package/dist/lexicon.d.ts.map +1 -1
  14. package/dist/lexicon.js +16 -8
  15. package/dist/lexicon.js.map +1 -1
  16. package/dist/static/examples.md +105 -0
  17. package/dist/static/instructions.md +397 -47
  18. package/dist/static/language-info.json +19 -4
  19. package/dist/static/lexicon.json +112 -0
  20. package/dist/static/scope.json +9 -8
  21. package/dist/static/spec.html +81 -15
  22. package/dist/static/stems.md +181 -5
  23. package/dist/static/targets.json +279 -0
  24. package/dist/static/template.gc +7 -67
  25. package/dist/static/unparse-hints.json +3 -0
  26. package/dist/static/usage-guide.md +48 -5
  27. package/dist/targets.d.ts +27 -0
  28. package/dist/targets.d.ts.map +1 -0
  29. package/dist/targets.js +250 -0
  30. package/dist/targets.js.map +1 -0
  31. package/dist/verify-example.d.ts +27 -0
  32. package/dist/verify-example.d.ts.map +1 -0
  33. package/dist/verify-example.js +82 -0
  34. package/dist/verify-example.js.map +1 -0
  35. package/package.json +2 -2
  36. package/spec/#template.gc# +20 -0
  37. package/spec/docs.md +51 -16
  38. package/spec/examples/c1-t1-tm1-multiplechoice.expect.json +1 -0
  39. package/spec/examples/c1-t1-tm1-multiplechoice.gc +27 -0
  40. package/spec/examples/c1-t1-tm2-multiselect.expect.json +1 -0
  41. package/spec/examples/c1-t1-tm2-multiselect.gc +27 -0
  42. package/spec/examples/c1-t1-tm3-hottext.expect.json +1 -0
  43. package/spec/examples/c1-t1-tm3-hottext.gc +27 -0
  44. package/spec/examples/c1-t10-tm1-multiplechoice.expect.json +1 -0
  45. package/spec/examples/c1-t10-tm1-multiplechoice.gc +15 -0
  46. package/spec/examples/c1-t10-tm2-multiselect.expect.json +1 -0
  47. package/spec/examples/c1-t10-tm2-multiselect.gc +15 -0
  48. package/spec/examples/c1-t10-tm3-hottext.expect.json +1 -0
  49. package/spec/examples/c1-t10-tm3-hottext.gc +13 -0
  50. package/spec/examples/c1-t11-tm1-ebsr.expect.json +4 -0
  51. package/spec/examples/c1-t11-tm1-ebsr.gc +30 -0
  52. package/spec/examples/c1-t11-tm2-hottext.expect.json +4 -0
  53. package/spec/examples/c1-t11-tm2-hottext.gc +30 -0
  54. package/spec/examples/c1-t11-tm3-shorttext.expect.json +4 -0
  55. package/spec/examples/c1-t11-tm3-shorttext.gc +30 -0
  56. package/spec/examples/c1-t2-tm1-multiplechoice.expect.json +1 -0
  57. package/spec/examples/c1-t2-tm1-multiplechoice.gc +29 -0
  58. package/spec/examples/c1-t2-tm2-multiselect.expect.json +1 -0
  59. package/spec/examples/c1-t2-tm2-multiselect.gc +28 -0
  60. package/spec/examples/c1-t2-tm3-ebsr.expect.json +1 -0
  61. package/spec/examples/c1-t2-tm3-ebsr.gc +29 -0
  62. package/spec/examples/c1-t2-tm4-hottext.expect.json +1 -0
  63. package/spec/examples/c1-t2-tm4-hottext.gc +19 -0
  64. package/spec/examples/c1-t2-tm5-shorttext.expect.json +1 -0
  65. package/spec/examples/c1-t2-tm5-shorttext.gc +20 -0
  66. package/spec/examples/c1-t4-tm1-ebsr.expect.json +4 -0
  67. package/spec/examples/c1-t4-tm1-ebsr.gc +30 -0
  68. package/spec/examples/c1-t4-tm2-hottext.expect.json +4 -0
  69. package/spec/examples/c1-t4-tm2-hottext.gc +30 -0
  70. package/spec/examples/c1-t4-tm3-shorttext.expect.json +4 -0
  71. package/spec/examples/c1-t4-tm3-shorttext.gc +30 -0
  72. package/spec/examples/c1-t8-tm1-multiplechoice.expect.json +1 -0
  73. package/spec/examples/c1-t8-tm1-multiplechoice.gc +25 -0
  74. package/spec/examples/c1-t8-tm2-multiselect.expect.json +1 -0
  75. package/spec/examples/c1-t8-tm2-multiselect.gc +25 -0
  76. package/spec/examples/c1-t8-tm3-hottext.expect.json +1 -0
  77. package/spec/examples/c1-t8-tm3-hottext.gc +25 -0
  78. package/spec/examples/c1-t9-tm1-multiplechoice.expect.json +1 -0
  79. package/spec/examples/c1-t9-tm1-multiplechoice.gc +23 -0
  80. package/spec/examples/c1-t9-tm2-multiselect.expect.json +1 -0
  81. package/spec/examples/c1-t9-tm2-multiselect.gc +24 -0
  82. package/spec/examples/c1-t9-tm3-ebsr.expect.json +10 -0
  83. package/spec/examples/c1-t9-tm3-ebsr.gc +30 -0
  84. package/spec/examples/c1-t9-tm4-hottext.expect.json +10 -0
  85. package/spec/examples/c1-t9-tm4-hottext.gc +20 -0
  86. package/spec/examples/c1-t9-tm5-shorttext.expect.json +10 -0
  87. package/spec/examples/c1-t9-tm5-shorttext.gc +20 -0
  88. package/spec/examples.md +100 -86
  89. package/spec/instructions.md +367 -44
  90. package/spec/language-info.json +18 -3
  91. package/spec/rag-examples-design.md +74 -0
  92. package/spec/scope.json +9 -8
  93. package/spec/spec.md +90 -15
  94. package/spec/stems.md +181 -5
  95. package/spec/template.gc +7 -67
  96. package/spec/usage-guide.md +48 -5
package/spec/template.gc CHANGED
@@ -1,67 +1,7 @@
1
- /* Revised: 2026-06-20 */
2
- target c1-t4
3
- passage "The Tide Pool"
4
- type literary
5
- /* lines are PARAGRAPHS (auto-numbered 1..N). EBSR Part B sources add a `quote` with the exact
6
- supporting sentence so options stay sentence-tight while `line` points at the paragraph. */
7
- lines [
8
- "Mara crouched at the edge of the tide pool, ignoring the picnic her family had spread out behind her. Her brother called twice, but she did not turn around. A tiny crab scuttled under a rock, and Mara smiled for the first time all day."
9
- "She had spent the whole car ride staring out the window, saying nothing. Now her fingers traced the cold water as if the pool were the only thing that mattered. \"Five more minutes,\" she whispered, though no one was listening."
10
- "Behind her, paper plates rustled and her mother laughed at someone's joke. Mara did not hear them."
11
- ]
12
- claims [
13
- claim id "c1" status supported dimension character subject "Mara" standard rl-1 dok r-dok3
14
- text "Mara is more interested in the tide pool than in her family's picnic."
15
- rationale "Paragraphs 1 and 2 show Mara absorbed by the tide pool while she ignores her family."
16
- cites ["e1" "e2" "e3" "e4"] {}
17
- claim id "c5" status supported dimension character subject "the brother"
18
- text "Mara's brother wants her attention."
19
- cites ["e2"] {}
20
- /* Distractors target the question(s) they foil (here, all foil the Mara items q1/q2/q3). */
21
- claim id "c2" status distractor error-type misreads-detail plausibility 0.85 targets ["q1" "q2" "q3"]
22
- text "Mara is angry at her brother for calling her."
23
- rationale "Misreads 'she did not turn around': absorption, not anger."
24
- cites ["e2"] {}
25
- claim id "c6" status distractor error-type misreads-detail plausibility 0.6 targets ["q1" "q2" "q3"]
26
- text "Mara is bored and impatient to leave."
27
- rationale "Misreads her stillness as boredom; the crab makes her smile — delight, not boredom."
28
- cites ["e6"] {}
29
- claim id "c3" status distractor error-type erroneous-inference plausibility 0.55 targets ["q1" "q2" "q3"]
30
- text "Mara dislikes spending time outdoors."
31
- rationale "Over-generalizes from her quiet to a dislike her smile at the crab contradicts."
32
- cites ["e6"] {}
33
- claim id "c7" status distractor error-type erroneous-inference plausibility 0.5 targets ["q1" "q2" "q3"]
34
- text "Mara wishes she were somewhere else with her friends."
35
- rationale "Invents an off-text desire; nothing in the passage mentions friends."
36
- cites ["e7"] {}
37
- claim id "c4" status distractor error-type faulty-reasoning plausibility 0.45 targets ["q1" "q2" "q3"]
38
- text "Because Mara whispers, she must be afraid of her family."
39
- rationale "Whispering is treated as fear without textual support."
40
- cites ["e5"] {}
41
- claim id "c8" status distractor error-type faulty-reasoning plausibility 0.4 targets ["q1" "q2" "q3"]
42
- text "Because Mara ignores the picnic, she must not love her family."
43
- rationale "Leaps from one moment of focus to a sweeping claim about her feelings."
44
- cites ["e6"] {}
45
- ]
46
- evidence [
47
- source id "e1" line 1 quote "Mara crouched at the edge of the tide pool, ignoring the picnic her family had spread out behind her." status directly-supports supports ["c1"] {}
48
- source id "e2" line 1 quote "Her brother called twice, but she did not turn around." status supports-wrong-claim supports ["c1" "c2"]
49
- rationale "Real evidence, but props up the 'anger' misreading, not the inference." {}
50
- source id "e3" line 1 quote "A tiny crab scuttled under a rock, and Mara smiled for the first time all day." status directly-supports supports ["c1"] {}
51
- source id "e4" line 2 quote "Now her fingers traced the cold water as if the pool were the only thing that mattered." status directly-supports supports ["c1"] {}
52
- source id "e5" line 2 quote "\"Five more minutes,\" she whispered, though no one was listening." status supports-wrong-claim supports ["c4"]
53
- rationale "Her whisper is real, but it shows focus, not fear." {}
54
- source id "e6" line 3 quote "Behind her, paper plates rustled and her mother laughed at someone's joke." status irrelevant supports [] {}
55
- source id "e7" line 3 quote "Mara did not hear them." status irrelevant supports [] {}
56
- source id "e8" line 2 quote "She had spent the whole car ride staring out the window, saying nothing." status irrelevant supports [] {}
57
- ]
58
- outcomes [
59
- outcome id "q1" type ebsr dimension character subject "Mara" standard rl-1 focus "c1"
60
- stem "Which of these inferences about Mara is supported by the passage?"
61
- stem-b "Which sentence(s) from the passage best support your answer in Part A?" {}
62
- outcome id "q2" type short-text dimension character subject "Mara" standard rl-1 focus "c1"
63
- stem "What inference can be made about Mara? Explain using key details from the passage to support your answer." {}
64
- outcome id "q3" type hot-text dimension character subject "Mara" standard rl-1 focus "c1"
65
- stem "Click on the statement that best provides an inference about Mara that is supported by the passage." {}
66
- ]
67
- {}..
1
+ passage "Title"
2
+ type literary
3
+ lines [
4
+ "Line one."
5
+ ] claims []
6
+ evidence []
7
+ outcomes [] {}..
@@ -7,7 +7,16 @@ Agent-facing guide for authoring L0175 programs. Read this before composing a `c
7
7
 
8
8
  ## Overview
9
9
 
10
- L0175 is a content-composition language for 5th-grade English Language Arts assessment items (Smarter Balanced spec ELA · Grade 5 · Claim 1 · Reasoning & Evidence). One language serves **multiple learning targets**; **every program first declares a top-level `target`**: `c1-t4` (Target 4 — *literary* texts, RL standards, dimensions like character/theme/point-of-view) or `c1-t11` (Target 11 — *informational* texts, RI standards, dimensions like relationships-interactions/author-use-of-information/point-of-view/purpose). Choose the target from the request (literary vs. informational text and the skill assessed); the dimensions, standards, and stem catalog (`stems.md`) are then scoped to that target, and mixing targets' vocabularies is a compile error. It is **item-first**: after picking the target you compose the questions (`outcome`s) first — each with a unique `id`, a `focus` naming its correct claim, and an explicit `stem` (and `stem-b` on EBSR) instantiated from the guideline's Appropriate-Stem catalog (`stems.md`) — then author the supported `claim`s and a *superset* of distractor `claim`s, each tagging the question(s) it foils via `targets`, plus evidence `source`s. The compiler then *composes* each outcome deterministically: it takes the correct claim from `focus`, draws that question's foils ONLY from the distractors that `targets` it, uses the authored stem, and assembles a finished item in one of three task models: `ebsr` (two-part evidence-based selected response), `hot-text` (select-text), or `short-text` (constructed response). One passage + superset can yield several items, each with its own bound foil set. The compiler performs no generation and no stem synthesis — it selects, validates against the guideline, and warns when a question's pool falls short. Distractors are tagged by the SBAC error taxonomy (Part A: `misreads-detail`, `erroneous-inference`, `faulty-reasoning`; Part B: `supports-wrong-claim`, `irrelevant`), each carrying a rationale; composition picks foils for error-type coverage and couples Part B evidence to the claims it plausibly supports. **For each EBSR/Hot-Text question author at least 5 viable distractors that `targets` it (aim for 5–8, over-generating since some are filtered as near-duplicates or accidentally correct) — covering all three error types with ≥2 alternatives in at least two of them, and giving each a `plausibility` score (0–1). An item draws only 3 foils, so a richer targeted pool yields stronger items; fewer than 3 targeting a question is a hard error, fewer than 5 a warning. Likewise, for EBSR Part B author at least 5 non-supporting evidence lines (`supports-wrong-claim` + `irrelevant`) so the compiler can choose the most tempting 3 foil options. No-giveaway rule: at least one of those `supports-wrong-claim` lines must list BOTH the correct claim's id AND a distractor's id in its `supports` (a line that seems to support the right answer but actually backs a misreading) — otherwise the correct evidence line stands alone, Part B telegraphs Part A, and the compiler warns "possible A↔B giveaway." Do not make every wrong-claim line point only at distractors.**
10
+ L0175 is a content-composition language for 5th-grade English Language Arts assessment items (Smarter Balanced spec ELA · Grade 5 · Claim 1 · Reasoning & Evidence). One language serves **multiple learning targets**; **every program first declares a top-level `target`**: `c1-t4` (Target 4 — *literary* texts, RL standards, dimensions like character/theme/point-of-view) or `c1-t11` (Target 11 — *informational* texts, RI standards, dimensions like relationships-interactions/author-use-of-information/point-of-view/purpose). Choose the target from the request (literary vs. informational text and the skill assessed); the dimensions, standards, and stem catalog (`stems.md`) are then scoped to that target, and mixing targets' vocabularies is a compile error. It is **item-first**: after picking the target you compose the questions (`outcome`s) first — each with a unique `id`, a `focus` naming its correct claim, and an explicit `stem` (and `stem-b` on EBSR) instantiated from the guideline's Appropriate-Stem catalog (`stems.md`) — then author the supported `claim`s and a *superset* of distractor `claim`s, each tagging the question(s) it foils via `targets`, plus evidence `source`s. The compiler then *composes* each outcome deterministically: it takes the correct claim from `focus`, draws that question's foils ONLY from the distractors that `targets` it, uses the authored stem, and assembles a finished item in the task model named by its item type — for Reasoning & Evidence (T4/T11): `ebsr` (two-part evidence-based selected response), `hot-text` (select-text), or `short-text` (constructed response); other targets also offer `multiple-choice`/`multi-select` (the allowed set and the per-target task-model numbering are in *Vocabulary Cues*). One passage + superset can yield several items, each with its own bound foil set. The compiler performs no generation and no stem synthesis — it selects, validates against the guideline, and warns when a question's pool falls short. Distractors are tagged by the SBAC error taxonomy (Part A: `misreads-detail`, `erroneous-inference`, `faulty-reasoning`; Part B: `supports-wrong-claim`, `irrelevant`), each carrying a rationale; composition picks foils for error-type coverage and couples Part B evidence to the claims it plausibly supports. **For each EBSR/Hot-Text question author at least 5 viable distractors that `targets` it (aim for 5–8, over-generating since some are filtered as near-duplicates or accidentally correct) — covering all three error types with ≥2 alternatives in at least two of them, and giving each a `plausibility` score (0–1). An item draws only 3 foils, so a richer targeted pool yields stronger items; fewer than 3 targeting a question is a hard error, fewer than 5 a warning. Likewise, for EBSR Part B author at least 5 non-supporting evidence lines (`supports-wrong-claim` + `irrelevant`) so the compiler can choose the most tempting 3 foil options. No-giveaway rule: at least one of those `supports-wrong-claim` lines must list BOTH the correct claim's id AND a distractor's id in its `supports` (a line that seems to support the right answer but actually backs a misreading) — otherwise the correct evidence line stands alone, Part B telegraphs Part A, and the compiler warns "possible A↔B giveaway." Do not make every wrong-claim line point only at distractors.**
11
+
12
+ **Name the item type; task-model NUMBERS are per-target and collide.** Phrase a request by item
13
+ type (`ebsr` / `hot-text` / `short-text` / `multiple-choice` / `multi-select`) — that is unambiguous.
14
+ Task-model *numbers* (TM1…TM5) are numbered **per target**, so the same number means different things
15
+ in different targets: `tm3` is **short-text** in `c1-t4`/`c1-t11`, **`ebsr`** in `c1-t9`, and
16
+ **`hot-text`** in `c1-t1`/`c1-t8`/`c1-t10`. A bare "task model 3" is therefore meaningless without
17
+ its target — never assume the Reasoning & Evidence (T4/T11) numbering carries over to the others. When a
18
+ request names a task model by number, resolve it against the **program's target** (see the per-target
19
+ task-model table in *Vocabulary Cues*) and state the item type, e.g. for `c1-t9` "task model 3 → EBSR".
11
20
 
12
21
  **Targets are different skills — pick the one the request assesses.** Beyond the two Reasoning &
13
22
  Evidence targets above (`c1-t4` literary, `c1-t11` informational — infer/conclude and justify with
@@ -26,6 +35,16 @@ correct selection). Two new item types — `multiple-choice` (4 options, one cor
26
35
  `multi-select` (5–6 options, an exact correct set) — are single-part: author the `stem` and a
27
36
  `focus`, no Part B.
28
37
 
38
+ **`c1-t2` — Central Ideas over LITERARY texts** is T9's twin on a story, with the same five item
39
+ types, the same significance taxonomy, and standards `rl-1`+`rl-2`. Choose it over `c1-t9` by the
40
+ passage: story/poem → `c1-t2`, article → `c1-t9`. Two rules are T2's alone. **Theme leads**: its
41
+ dimensions are `theme`, `central-idea`, `key-detail`, `summary`, and for a story you normally want
42
+ `theme` with the correct answer phrased as a *lesson or message* ("Keeping at something can matter
43
+ more than winning"), not a plot event — reserve `central-idea` for a prompt that says "main idea".
44
+ **Summary is scoped**: the guideline forbids asking students to summarize the *entire* text, so a
45
+ T2 `summary` stem must name a section or key event ("Summarize what happens after…"). A plain
46
+ "summarize the passage" belongs to T9, not T2.
47
+
29
48
  L0175 also composes **`c1-t8` — Key Details** (informational): the inference/conclusion is **GIVEN
30
49
  in the stem** and the student selects the supporting **evidence** (the answer is *evidence*, not a
31
50
  chosen statement). Use `c1-t8` when the request **states an idea and asks which detail/sentence
@@ -35,6 +54,13 @@ supports it**; dimension `supporting-evidence`, standards `ri-1`+`ri-7`, DOK 1
35
54
  options: `directly-supports` = correct evidence (with a `quote`), `supports-wrong-claim`/`irrelevant`
36
55
  = distractor evidence. No distractor claims.
37
56
 
57
+ **`c1-t1` — Key Details over LITERARY texts** is the same model as `c1-t8` on a story rather than an
58
+ article: same dimension `supporting-evidence`, same item types, same DOK 1–2, same authoring recipe.
59
+ The one difference is the standard — the guideline names **`rl-1` and no companion**, so a composed
60
+ item's `standards` is exactly `["rl-1"]`; omit `standard` on the outcome. Choose between them by the
61
+ passage: story/poem/narrative → `c1-t1`, article/report → `c1-t8`. T1's stems offer `line` as a
62
+ selectable unit and say "[author/**narrator**]"; its Multi-Select is exactly two correct.
63
+
38
64
  L0175 also composes **`c1-t10` — Word Meanings** (informational): the question asks for the
39
65
  **meaning of a targeted word/phrase in context**, so the answer choices are **meanings**, authored
40
66
  as a dedicated `word`/`meaning` structure (not claims). Use `c1-t10` when the request asks **what a
@@ -71,7 +97,7 @@ Author the passage **and** every claim, option, and rationale to that grade (fig
71
97
 
72
98
  Say this to get that:
73
99
 
74
- - **Target** — `target c1-t4` (literary, Reasoning & Evidence), `target c1-t11` (informational, Reasoning & Evidence), `target c1-t9` (informational, Central Ideas), `target c1-t8` (informational, Key Details — given-inference → evidence), or `target c1-t10` (informational, Word Meanings — meaning of a targeted word); required, first top-level form. Selects the dimensions, standards, distractor taxonomy, DOK, item types, and stem catalog.
100
+ - **Target** — `target c1-t4` (literary, Reasoning & Evidence), `target c1-t11` (informational, Reasoning & Evidence), `target c1-t2` (**literary**, Central Ideas), `target c1-t9` (informational, Central Ideas), `target c1-t1` (**literary**, Key Details — given-inference → evidence), `target c1-t8` (informational, Key Details — same model), or `target c1-t10` (informational, Word Meanings — meaning of a targeted word); required, first top-level form. Selects the dimensions, standards, distractor taxonomy, DOK, item types, and stem catalog.
75
101
  - **Grade** — optional top-level `grade <n>` (e.g. `grade 5`). Defaults to the target/guideline's grade; author one only to override when the user asks for a different grade. Sets the reading-level target the compiler checks the passage against.
76
102
  - **Passage** — `passage "Title"` sets the heading; `type literary` (or `informational`, matching the target); `lines [ "..." "..." ]` are the passage **paragraphs** — one entry per paragraph, auto-numbered from 1. Always split by paragraph, including for Hot Text: the compiler segments each paragraph into sentences and exposes each sentence as a Part B selection, so the passage keeps its paragraph format. For EBSR Part B, evidence sources carry a `quote` with the exact supporting sentence so options stay sentence-tight while `line` points at the paragraph.
77
103
  - **Outcome** — the question, composed first. `outcome id "q1" type ebsr dimension character subject "Mara" focus "c1" stem "Which of these inferences about Mara is supported by the passage?" stem-b "Which sentence(s) from the passage best support your answer in Part A?" {}`. `id` is the handle distractors target; `focus` names the correct claim; `stem` (and `stem-b` on EBSR) come from `stems.md`. Vary `type` (`ebsr` / `hot-text` / `short-text`) for different task models. **Keep the Part A stem a neutral question** — fill the template's slot with the subject/skill only, and do **not** echo the correct option's wording (if the stem restates the answer, it gives it away). Paraphrase so stem and key share only the subject; the compiler warns when the stem reuses most of the correct option's words. Applies to every Hot Text and EBSR question, across all targets. **For Hot Text, Part A asks for the best STATEMENT** ("Click on the statement that best provides an inference about [X]…") whose options are inference claims — it is NOT a "click the sentences" instruction (that's Part B, fixed by the compiler). If a request says "select the sentences that show [X]", translate it: Part A is a statement prompt about [X], and the sentences that show [X] are `directly-supports` evidence (with exact `quote`s) that become Part B's answer. The compiler warns when a Hot Text Part A stem mentions sentences.
@@ -79,12 +105,26 @@ Say this to get that:
79
105
  - **Evidence source** — a passage line tagged by its support role. `source id "e1" line 1 status directly-supports supports ["c1"] {}`. Statuses: `directly-supports`, `supports-wrong-claim`, `irrelevant`. An optional `rationale` explains a foil. For **Hot Text**, give each `directly-supports` source a `quote` naming the exact supporting **sentence** so that sentence is marked correct in Part B; a `directly-supports` source with no `quote` marks every sentence of its `line` correct. Part B asks for an **exact number** of sentences (one less than the valid count, floored at 1, capped at 3) and **any selection of that many from the valid set is correct** (a superset) — so **author ≥3 directly-supporting sentences** so the asked count is ≥2 and students aren't forced to find every one.
80
106
  - **Dimensions (c1-t4)** — `character`, `setting`, `event`, `point-of-view`, `theme`, `topic`, `narrators-feelings`, `character-relationship`.
81
107
  - **Dimensions (c1-t11)** — `relationships-interactions`, `author-use-of-information`, `point-of-view`, `purpose`, `authors-opinion`.
108
+ - **Dimensions (c1-t2)** — `theme` (prefer it for a story: the lesson/message), `central-idea`, `key-detail` (covers key events), `summary` (scoped to a section or key event, never the whole text).
82
109
  - **Dimensions (c1-t9)** — `central-idea`, `key-detail`, `summary`.
83
- - **Dimensions (c1-t8)** — `supporting-evidence` (the answer is evidence; the inference is given in the stem).
110
+ - **Dimensions (c1-t1 / c1-t8)** — `supporting-evidence` (the answer is evidence; the inference is given in the stem). `c1-t1` is the literary target, `c1-t8` the informational one.
84
111
  - **Dimensions (c1-t10)** — `word-meaning` (the answer is a meaning; authored via `word`/`meaning`).
85
112
  - **Word / meaning (c1-t10)** — `words [ word id "w1" text "aqueduct" line 1 quote "…" meanings [ meaning id "m1" status correct text "a water channel" {} meaning id "m2" status distractor error-type other-meaning text "a boat" rationale "…" {} ] {} ]`; the outcome's `focus` names the word.
86
113
  - **Item types** — `ebsr` (two-part: statement → evidence), `hot-text` (R&E/Central-Ideas: click the supporting/main-idea sentences; Key Details: click the evidence sentences; Word Meanings: click the word matching a definition), `short-text` (constructed response), `multiple-choice` (one correct, single-part), `multi-select` (exact correct set, single-part). MC/Multi-Select have no Part B. The allowed set is per-target (the compiler rejects others).
87
- - **Central Ideas (c1-t9) distractor `error-type`** `too-narrow`, `too-broad`, `misreads-detail`, `insignificant` (true-but-not-central); R&E targets use `misreads-detail`/`erroneous-inference`/`faulty-reasoning`.
114
+ - **Task models are per-target — resolve a number against the target.** Task-model NUMBERS (TM1…TM5) are numbered per target and collide, so name the item type rather than a bare number; if a request says "task model N", map N to the item type for the program's target using the table below (e.g. `c1-t9` TM3 `ebsr`, TM4 `hot-text`). **Specify the task model on the outcome as `task-model tm3` whenever it is known** — the compiler resolves it against the target's table and **hard-errors if it disagrees with `type`** (or supplies `type` when omitted), so the intended task model is checked, not guessed. It stays optional, but the compiler emits a (non-blocking) warning when an outcome omits it, so include it whenever you know it.
115
+
116
+ <!-- GENERATED:task-models START (from targets.json — regenerated by tools/build-static.js; do not edit by hand) -->
117
+ | Target | tm1 | tm2 | tm3 | tm4 | tm5 |
118
+ |--------|-----|-----|-----|-----|-----|
119
+ | `c1-t4` — Grade 5 · Claim 1 · Target 4 (Reasoning & Evidence) | ebsr | hot-text | short-text | — | — |
120
+ | `c1-t11` — Grade 5 · Claim 1 · Target 11 (Reasoning & Evidence) | ebsr | hot-text | short-text | — | — |
121
+ | `c1-t2` — Grade 5 · Claim 1 · Target 2 (Central Ideas) | multiple-choice | multi-select | ebsr | hot-text | short-text |
122
+ | `c1-t9` — Grade 5 · Claim 1 · Target 9 (Central Ideas) | multiple-choice | multi-select | ebsr | hot-text | short-text |
123
+ | `c1-t1` — Grade 5 · Claim 1 · Target 1 (Key Details) | multiple-choice | multi-select | hot-text | — | — |
124
+ | `c1-t8` — Grade 5 · Claim 1 · Target 8 (Key Details) | multiple-choice | multi-select | hot-text | — | — |
125
+ | `c1-t10` — Grade 5 · Claim 1 · Target 10 (Word Meanings) | multiple-choice | multi-select | hot-text | — | — |
126
+ <!-- GENERATED:task-models END -->
127
+ - **Central Ideas (c1-t2 / c1-t9) distractor `error-type`** — `too-narrow`, `too-broad`, `misreads-detail`, `insignificant` (true-but-not-central); R&E targets use `misreads-detail`/`erroneous-inference`/`faulty-reasoning`. Keep an `insignificant` foil plausible — the guideline warns against details so trivial the option is implausible.
88
128
  - **Program terminator** — top-level forms chain with no `{}` between them; the program ends with a single `{}..`.
89
129
 
90
130
  ## Example Prompts
@@ -95,16 +135,19 @@ Say this to get that:
95
135
  - *"Make an EBSR item about how the author uses evidence to support a point in an informational article about bridges, standard ri-8."* → `target c1-t11`, `dimension author-use-of-information`
96
136
  - *"Write an item about the relationships between the events in a history passage."* → `target c1-t11`, `dimension relationships-interactions`
97
137
  - *"Which sentence best states the main idea of this article? (multiple choice)"* → `target c1-t9`, `type multiple-choice`, `dimension central-idea`
138
+ - *"What is the theme of this story? Make it a two-part item with the evidence in Part B."* → `target c1-t2`, `type ebsr` (tm3), `dimension theme`; the correct answer is a lesson, not a plot event
139
+ - *"Have students summarize what happens after the storm, using details from the story."* → `target c1-t2`, `type short-text` (tm5), `dimension summary` — scoped to a key event, which is the only kind of summary T2 allows
98
140
  - *"Make a multi-select asking for the two sentences that belong in a summary."* → `target c1-t9`, `type multi-select`, `dimension summary`, `focus` is a list of the two correct claims
99
141
  - *"The article says aqueducts brought water to distant cities — which detail best supports that? (multiple choice)"* → `target c1-t8`, `type multiple-choice`, `dimension supporting-evidence`; the inference goes in the `stem`, the options are `source`s
100
142
  - *"Make a click-the-sentence item where students select the evidence for a stated conclusion."* → `target c1-t8`, `type hot-text` (single-part), `dimension supporting-evidence`
143
+ - *"In this story, the reader can conclude the boy regrets what he said — which line best supports that?"* → `target c1-t1` (the literary Key Details target), `type multiple-choice`, `dimension supporting-evidence`; standards are `rl-1` alone
101
144
  - *"What does the word 'aqueduct' mean as used in this article? (multiple choice)"* → `target c1-t10`, `type multiple-choice`, `dimension word-meaning`; a `word` with candidate `meaning`s, `focus` names the word
102
145
  - *"Read the paragraph below. Click the word that means 'a channel that carries water'."* → `target c1-t10`, `type hot-text` (click-the-word); author the candidate `word`s (correct one is `focus` with its paragraph's `line`, plus a few distractor candidate words from the same paragraph); definition in the stem, passage NOT in the stem
103
146
  - *"Keep the passage at a 4th-grade reading level."* → top-level `grade 4`; author shorter sentences and simpler vocabulary (the default is the guideline's Grade 5)
104
147
 
105
148
  ## Out of Scope
106
149
 
107
- - **Other targets / grades / claims** — L0175 covers G5 · Claim 1 · Reasoning & Evidence, targets T4 (literary) and T11 (informational). Other targets belong in their own dialects.
150
+ - **Other targets / grades / claims** — L0175 covers G5 · Claim 1, targets T4 (Reasoning & Evidence, literary), T11 (Reasoning & Evidence, informational), T9 (Central Ideas), T8 (Key Details), and T10 (Word Meanings). Other claims, grades, or Claim-1 targets belong in their own dialects.
108
151
  - **Dual-text stimuli** — a single passage only in this version.
109
152
  - **Compile-time generation** — the compiler selects and validates authored content; it does not invent claims, distractors, or evidence.
110
153
  - **Auto-scoring** — short-text responses are hand-scored against the rubric; the compiler emits the rubric only.