@graffiticode/l0175 0.2.0 → 0.3.0

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 (78) hide show
  1. package/dist/compiler.d.ts.map +1 -1
  2. package/dist/compiler.js +50 -124
  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 +35 -2
  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 +12 -4
  15. package/dist/lexicon.js.map +1 -1
  16. package/dist/static/instructions.md +187 -10
  17. package/dist/static/language-info.json +3 -3
  18. package/dist/static/lexicon.json +98 -0
  19. package/dist/static/scope.json +1 -1
  20. package/dist/static/spec.html +2 -1
  21. package/dist/static/stems.md +14 -0
  22. package/dist/static/targets.json +209 -0
  23. package/dist/static/template.gc +7 -67
  24. package/dist/static/unparse-hints.json +3 -0
  25. package/dist/static/usage-guide.md +22 -2
  26. package/dist/targets.d.ts +25 -0
  27. package/dist/targets.d.ts.map +1 -0
  28. package/dist/targets.js +169 -0
  29. package/dist/targets.js.map +1 -0
  30. package/dist/verify-example.d.ts +27 -0
  31. package/dist/verify-example.d.ts.map +1 -0
  32. package/dist/verify-example.js +82 -0
  33. package/dist/verify-example.js.map +1 -0
  34. package/package.json +1 -1
  35. package/spec/docs.md +5 -2
  36. package/spec/examples/c1-t10-tm1-multiplechoice.expect.json +1 -0
  37. package/spec/examples/c1-t10-tm1-multiplechoice.gc +15 -0
  38. package/spec/examples/c1-t10-tm2-multiselect.expect.json +1 -0
  39. package/spec/examples/c1-t10-tm2-multiselect.gc +15 -0
  40. package/spec/examples/c1-t10-tm3-hottext.expect.json +1 -0
  41. package/spec/examples/c1-t10-tm3-hottext.gc +13 -0
  42. package/spec/examples/c1-t11-tm1-ebsr.expect.json +4 -0
  43. package/spec/examples/c1-t11-tm1-ebsr.gc +30 -0
  44. package/spec/examples/c1-t11-tm2-hottext.expect.json +4 -0
  45. package/spec/examples/c1-t11-tm2-hottext.gc +30 -0
  46. package/spec/examples/c1-t11-tm3-shorttext.expect.json +4 -0
  47. package/spec/examples/c1-t11-tm3-shorttext.gc +30 -0
  48. package/spec/examples/c1-t4-tm1-ebsr.expect.json +4 -0
  49. package/spec/examples/c1-t4-tm1-ebsr.gc +30 -0
  50. package/spec/examples/c1-t4-tm2-hottext.expect.json +4 -0
  51. package/spec/examples/c1-t4-tm2-hottext.gc +30 -0
  52. package/spec/examples/c1-t4-tm3-shorttext.expect.json +4 -0
  53. package/spec/examples/c1-t4-tm3-shorttext.gc +30 -0
  54. package/spec/examples/c1-t8-tm1-multiplechoice.expect.json +1 -0
  55. package/spec/examples/c1-t8-tm1-multiplechoice.gc +25 -0
  56. package/spec/examples/c1-t8-tm2-multiselect.expect.json +1 -0
  57. package/spec/examples/c1-t8-tm2-multiselect.gc +25 -0
  58. package/spec/examples/c1-t8-tm3-hottext.expect.json +1 -0
  59. package/spec/examples/c1-t8-tm3-hottext.gc +25 -0
  60. package/spec/examples/c1-t9-tm1-multiplechoice.expect.json +1 -0
  61. package/spec/examples/c1-t9-tm1-multiplechoice.gc +23 -0
  62. package/spec/examples/c1-t9-tm2-multiselect.expect.json +1 -0
  63. package/spec/examples/c1-t9-tm2-multiselect.gc +24 -0
  64. package/spec/examples/c1-t9-tm3-ebsr.expect.json +10 -0
  65. package/spec/examples/c1-t9-tm3-ebsr.gc +30 -0
  66. package/spec/examples/c1-t9-tm4-hottext.expect.json +10 -0
  67. package/spec/examples/c1-t9-tm4-hottext.gc +20 -0
  68. package/spec/examples/c1-t9-tm5-shorttext.expect.json +10 -0
  69. package/spec/examples/c1-t9-tm5-shorttext.gc +20 -0
  70. package/spec/examples.md +55 -11
  71. package/spec/instructions.md +187 -10
  72. package/spec/language-info.json +2 -2
  73. package/spec/rag-examples-design.md +74 -0
  74. package/spec/scope.json +1 -1
  75. package/spec/spec.md +9 -1
  76. package/spec/stems.md +14 -0
  77. package/spec/template.gc +7 -67
  78. package/spec/usage-guide.md +22 -2
@@ -409,6 +409,41 @@
409
409
  "length": 0,
410
410
  "arity": 0
411
411
  },
412
+ "tm1": {
413
+ "tk": 22,
414
+ "name": "TAG",
415
+ "cls": "val",
416
+ "length": 0,
417
+ "arity": 0
418
+ },
419
+ "tm2": {
420
+ "tk": 22,
421
+ "name": "TAG",
422
+ "cls": "val",
423
+ "length": 0,
424
+ "arity": 0
425
+ },
426
+ "tm3": {
427
+ "tk": 22,
428
+ "name": "TAG",
429
+ "cls": "val",
430
+ "length": 0,
431
+ "arity": 0
432
+ },
433
+ "tm4": {
434
+ "tk": 22,
435
+ "name": "TAG",
436
+ "cls": "val",
437
+ "length": 0,
438
+ "arity": 0
439
+ },
440
+ "tm5": {
441
+ "tk": 22,
442
+ "name": "TAG",
443
+ "cls": "val",
444
+ "length": 0,
445
+ "arity": 0
446
+ },
412
447
  "c1-t4": {
413
448
  "tk": 22,
414
449
  "name": "TAG",
@@ -675,6 +710,13 @@
675
710
  "length": 0,
676
711
  "arity": 0
677
712
  },
713
+ "rl-2": {
714
+ "tk": 22,
715
+ "name": "TAG",
716
+ "cls": "val",
717
+ "length": 0,
718
+ "arity": 0
719
+ },
678
720
  "rl-3": {
679
721
  "tk": 22,
680
722
  "name": "TAG",
@@ -682,6 +724,20 @@
682
724
  "length": 0,
683
725
  "arity": 0
684
726
  },
727
+ "rl-4": {
728
+ "tk": 22,
729
+ "name": "TAG",
730
+ "cls": "val",
731
+ "length": 0,
732
+ "arity": 0
733
+ },
734
+ "rl-5": {
735
+ "tk": 22,
736
+ "name": "TAG",
737
+ "cls": "val",
738
+ "length": 0,
739
+ "arity": 0
740
+ },
685
741
  "rl-6": {
686
742
  "tk": 22,
687
743
  "name": "TAG",
@@ -689,6 +745,13 @@
689
745
  "length": 0,
690
746
  "arity": 0
691
747
  },
748
+ "rl-7": {
749
+ "tk": 22,
750
+ "name": "TAG",
751
+ "cls": "val",
752
+ "length": 0,
753
+ "arity": 0
754
+ },
692
755
  "rl-9": {
693
756
  "tk": 22,
694
757
  "name": "TAG",
@@ -724,6 +787,13 @@
724
787
  "length": 0,
725
788
  "arity": 0
726
789
  },
790
+ "ri-5": {
791
+ "tk": 22,
792
+ "name": "TAG",
793
+ "cls": "val",
794
+ "length": 0,
795
+ "arity": 0
796
+ },
727
797
  "ri-6": {
728
798
  "tk": 22,
729
799
  "name": "TAG",
@@ -780,6 +850,27 @@
780
850
  "length": 0,
781
851
  "arity": 0
782
852
  },
853
+ "l-5": {
854
+ "tk": 22,
855
+ "name": "TAG",
856
+ "cls": "val",
857
+ "length": 0,
858
+ "arity": 0
859
+ },
860
+ "l-5a": {
861
+ "tk": 22,
862
+ "name": "TAG",
863
+ "cls": "val",
864
+ "length": 0,
865
+ "arity": 0
866
+ },
867
+ "l-5b": {
868
+ "tk": 22,
869
+ "name": "TAG",
870
+ "cls": "val",
871
+ "length": 0,
872
+ "arity": 0
873
+ },
783
874
  "l-5c": {
784
875
  "tk": 22,
785
876
  "name": "TAG",
@@ -913,6 +1004,13 @@
913
1004
  "length": 2,
914
1005
  "arity": 2
915
1006
  },
1007
+ "task-model": {
1008
+ "tk": 1,
1009
+ "name": "TASK_MODEL",
1010
+ "cls": "function",
1011
+ "length": 2,
1012
+ "arity": 2
1013
+ },
916
1014
  "subject": {
917
1015
  "tk": 1,
918
1016
  "name": "SUBJECT",
@@ -14,7 +14,7 @@
14
14
  "c1-t10 (Word Meanings) dimension: word-meaning — the question asks the meaning of a targeted word/phrase; options are meanings authored as word/meaning (not claims)",
15
15
  "Item types: ebsr (two-part selected response), hot-text (select text — sentence-level for R&E/Central-Ideas/Key Details, word-level click-the-word for Word Meanings), short-text (constructed response), multiple-choice (one correct), multi-select (exact correct set); the allowed set is per-target",
16
16
  "Authored, error-typed distractors — R&E: misreads-detail / erroneous-inference / faulty-reasoning; Central Ideas (c1-t9): too-narrow / too-broad / misreads-detail / insignificant; Key Details (c1-t8): non-supporting sources (supports-wrong-claim / irrelevant), not distractor claims; Word Meanings (c1-t10): distractor meanings other-meaning / misinterprets / wrong-context — with rationales",
17
- "Standards rl-1/rl-3/rl-6/rl-9 (c1-t4), ri-1/ri-3/ri-6/ri-7/ri-8/ri-9 (c1-t11), ri-1/ri-2 (c1-t9), ri-1/ri-7 (c1-t8), ri-4/l-4/l-4a/l-4b/l-4c/l-5c (c1-t10); DOK r-dok1..r-dok3 (R&E r-dok3; T9 r-dok2, written summary r-dok3; T8 & T10 r-dok2)",
17
+ "Standards: the full CCSS Grade-5 strand for the target's text type is accepted (literary c1-t4 → RL rl-1..rl-7/rl-9, no rl-8; informational c1-t11/t9/t8/t10 → RI ri-1..ri-9; c1-t10 also the L-4/L-5 vocabulary families). The dimension's companion is inferred when standard is omitted — primary companions: c1-t4 rl-1 + rl-2 (theme/topic) / rl-3 / rl-6; c1-t11 ri-1 + ri-3/ri-6/ri-7/ri-8; c1-t9 ri-1+ri-2; c1-t8 ri-1+ri-7; c1-t10 ri-4 + the L-4 family. DOK r-dok1..r-dok3 (R&E r-dok3; T9 r-dok2, written summary r-dok3; T8 & T10 r-dok2)",
18
18
  "A reading-level target set by the guideline/target's grade (Grade 5 for c1-t4/c1-t11), overridable by an optional top-level `grade`; the compiler estimates the passage's reading level and warns when it runs above the target grade"
19
19
  ],
20
20
  "out_of_scope": [
@@ -428,7 +428,7 @@ outcomes [ outcome ... {} outcome ... {} ]
428
428
  <li><strong><code>dimension</code> (c1-t9)</strong>: <code>central-idea</code>, <code>key-detail</code>, <code>summary</code> · <strong>(c1-t8)</strong>: <code>supporting-evidence</code> · <strong>(c1-t10)</strong>: <code>word-meaning</code></li>
429
429
  <li><strong>claim <code>status</code></strong>: <code>supported</code>, <code>distractor</code> · <strong>source <code>status</code></strong>: <code>directly-supports</code>, <code>supports-wrong-claim</code>, <code>irrelevant</code> · <strong>meaning <code>status</code> (c1-t10)</strong>: <code>correct</code>, <code>distractor</code></li>
430
430
  <li><strong><code>error-type</code> (c1-t4 / c1-t11)</strong>: <code>misreads-detail</code>, <code>erroneous-inference</code>, <code>faulty-reasoning</code> · <strong>(c1-t9)</strong>: <code>too-narrow</code>, <code>too-broad</code>, <code>misreads-detail</code>, <code>insignificant</code> · <strong>(c1-t8)</strong>: none &mdash; non-supporting sources · <strong>(c1-t10)</strong>: <code>other-meaning</code>, <code>misinterprets</code>, <code>wrong-context</code></li>
431
- <li><strong><code>standard</code> (c1-t4)</strong>: <code>rl-1</code>, <code>rl-3</code>, <code>rl-6</code>, <code>rl-9</code> · <strong>(c1-t11)</strong>: <code>ri-1</code>, <code>ri-3</code>, <code>ri-6</code>, <code>ri-7</code>, <code>ri-8</code>, <code>ri-9</code> · <strong>(c1-t9)</strong>: <code>ri-1</code>, <code>ri-2</code> · <strong>(c1-t8)</strong>: <code>ri-1</code>, <code>ri-7</code> · <strong>(c1-t10)</strong>: <code>ri-4</code>, <code>l-4</code>, <code>l-4a</code>, <code>l-4b</code>, <code>l-4c</code>, <code>l-5c</code> · <strong><code>dok</code></strong>: <code>r-dok1</code>, <code>r-dok2</code>, <code>r-dok3</code></li>
431
+ <li><strong><code>standard</code></strong> &mdash; the full CCSS Grade-5 strand for the target&rsquo;s text type is accepted; the dimension&rsquo;s companion is inferred when you omit it. Primary companions: <strong>(c1-t4)</strong> <code>rl-1</code> + <code>rl-2</code> (theme/topic) / <code>rl-3</code> / <code>rl-6</code> &mdash; full <strong>RL</strong> strand <code>rl-1</code>&ndash;<code>rl-7</code>/<code>rl-9</code> accepted (no <code>rl-8</code>) · <strong>(c1-t11)</strong> <code>ri-1</code> + <code>ri-3</code> / <code>ri-6</code> / <code>ri-7</code> / <code>ri-8</code> · <strong>(c1-t9)</strong> <code>ri-1</code> + <code>ri-2</code> · <strong>(c1-t8)</strong> <code>ri-1</code> + <code>ri-7</code> &mdash; c1-t11/t9/t8 accept the full <strong>RI</strong> strand <code>ri-1</code>&ndash;<code>ri-9</code> · <strong>(c1-t10)</strong> <code>ri-4</code> + the <code>l-4</code> / <code>l-5</code> families. <strong><code>dok</code></strong>: <code>r-dok1</code>, <code>r-dok2</code>, <code>r-dok3</code></li>
432
432
  </ul>
433
433
  </section>
434
434
  <section id="sec-How-composition-uses-the-vocabulary" secid="2.8">
@@ -541,6 +541,7 @@ outcomes [
541
541
  ]
542
542
  {}..
543
543
  </code></pre>
544
+ <p>The example above is Target 4 (literary, R&amp;E). The other targets keep the same flat-chain shape but differ in what the options are: <strong>T11</strong> is the same R&amp;E shape over an informational passage (RI standards); <strong>T9</strong> (Central Ideas) options are <code>claim</code>s judged by significance (<code>too-narrow</code> / <code>too-broad</code> / <code>insignificant</code> / <code>misreads-detail</code>); <strong>T8</strong> (Key Details) gives the inference in the stem and the options are <code>source</code>s (no distractor claims); <strong>T10</strong> (Word Meanings) options are <code>meaning</code>s of a targeted <code>word</code> authored in a top-level <code>words</code> list. See <code>instructions.md</code> for a full worked program per target and <code>stems.md</code> for each target&rsquo;s stem catalog. </p>
544
545
  </section>
545
546
  </section>
546
547
  </article>
@@ -28,6 +28,20 @@ dual-text-stimuli stems are out of scope).
28
28
  3. Pick the **one stem template** that matches the task and the dimension, and fill its
29
29
  bracketed `[...]` slot.
30
30
 
31
+ Task-model number → item type, per target (the numbers collide across targets, so a number is
32
+ meaningless without its target):
33
+
34
+ <!-- GENERATED:task-models START (from targets.json — regenerated by tools/build-static.js; do not edit by hand) -->
35
+ | Target | tm1 | tm2 | tm3 | tm4 | tm5 |
36
+ |--------|-----|-----|-----|-----|-----|
37
+ | `c1-t4` — Grade 5 · Claim 1 · Target 4 (Reasoning & Evidence) | ebsr | hot-text | short-text | — | — |
38
+ | `c1-t11` — Grade 5 · Claim 1 · Target 11 (Reasoning & Evidence) | ebsr | hot-text | short-text | — | — |
39
+ | `c1-t9` — Grade 5 · Claim 1 · Target 9 (Central Ideas) | multiple-choice | multi-select | ebsr | hot-text | short-text |
40
+ | `c1-t8` — Grade 5 · Claim 1 · Target 8 (Key Details) | multiple-choice | multi-select | hot-text | — | — |
41
+ | `c1-t10` — Grade 5 · Claim 1 · Target 10 (Word Meanings) | multiple-choice | multi-select | hot-text | — | — |
42
+ <!-- GENERATED:task-models END -->
43
+
44
+
31
45
  **Specificity rule (required, both targets).** The `[...]` slot must name the concrete thing the
32
46
  question is about — a character's name (`Mother`), a specific event (`the turkey-feeding`), a
33
47
  specific idea (`the relationship between the bridge designs`), the author's point of view, etc.
@@ -0,0 +1,209 @@
1
+ {
2
+ "revised": "2026-06-30",
3
+ "standardFamilies": {
4
+ "RL_G5": [
5
+ "rl-1",
6
+ "rl-2",
7
+ "rl-3",
8
+ "rl-4",
9
+ "rl-5",
10
+ "rl-6",
11
+ "rl-7",
12
+ "rl-9"
13
+ ],
14
+ "RI_G5": [
15
+ "ri-1",
16
+ "ri-2",
17
+ "ri-3",
18
+ "ri-4",
19
+ "ri-5",
20
+ "ri-6",
21
+ "ri-7",
22
+ "ri-8",
23
+ "ri-9"
24
+ ],
25
+ "L_G5": [
26
+ "l-4",
27
+ "l-4a",
28
+ "l-4b",
29
+ "l-4c",
30
+ "l-5",
31
+ "l-5a",
32
+ "l-5b",
33
+ "l-5c"
34
+ ]
35
+ },
36
+ "targets": {
37
+ "c1-t4": {
38
+ "id": "c1-t4",
39
+ "label": "Grade 5 · Claim 1 · Target 4 (Reasoning & Evidence)",
40
+ "grade": 5,
41
+ "textType": "literary",
42
+ "baseStandard": "rl-1",
43
+ "defaultDok": "r-dok3",
44
+ "answerKind": "statement",
45
+ "singlePartHotText": false,
46
+ "taskModels": {
47
+ "tm1": "ebsr",
48
+ "tm2": "hot-text",
49
+ "tm3": "short-text"
50
+ },
51
+ "standards": [
52
+ "RL_G5"
53
+ ],
54
+ "dimensions": [
55
+ "character",
56
+ "setting",
57
+ "event",
58
+ "point-of-view",
59
+ "theme",
60
+ "topic",
61
+ "narrators-feelings",
62
+ "character-relationship"
63
+ ],
64
+ "errorTypes": [
65
+ "misreads-detail",
66
+ "erroneous-inference",
67
+ "faulty-reasoning"
68
+ ],
69
+ "dimStandard": {
70
+ "character": "rl-3",
71
+ "character-relationship": "rl-3",
72
+ "setting": "rl-3",
73
+ "event": "rl-3",
74
+ "point-of-view": "rl-6",
75
+ "narrators-feelings": "rl-6",
76
+ "theme": "rl-2",
77
+ "topic": "rl-2"
78
+ }
79
+ },
80
+ "c1-t11": {
81
+ "id": "c1-t11",
82
+ "label": "Grade 5 · Claim 1 · Target 11 (Reasoning & Evidence)",
83
+ "grade": 5,
84
+ "textType": "informational",
85
+ "baseStandard": "ri-1",
86
+ "defaultDok": "r-dok3",
87
+ "answerKind": "statement",
88
+ "singlePartHotText": false,
89
+ "taskModels": {
90
+ "tm1": "ebsr",
91
+ "tm2": "hot-text",
92
+ "tm3": "short-text"
93
+ },
94
+ "standards": [
95
+ "RI_G5"
96
+ ],
97
+ "dimensions": [
98
+ "relationships-interactions",
99
+ "author-use-of-information",
100
+ "point-of-view",
101
+ "purpose",
102
+ "authors-opinion"
103
+ ],
104
+ "errorTypes": [
105
+ "misreads-detail",
106
+ "erroneous-inference",
107
+ "faulty-reasoning"
108
+ ],
109
+ "dimStandard": {
110
+ "relationships-interactions": "ri-3",
111
+ "author-use-of-information": "ri-8",
112
+ "point-of-view": "ri-6",
113
+ "purpose": "ri-8",
114
+ "authors-opinion": "ri-8"
115
+ }
116
+ },
117
+ "c1-t9": {
118
+ "id": "c1-t9",
119
+ "label": "Grade 5 · Claim 1 · Target 9 (Central Ideas)",
120
+ "grade": 5,
121
+ "textType": "informational",
122
+ "baseStandard": "ri-1",
123
+ "defaultDok": "r-dok2",
124
+ "answerKind": "statement",
125
+ "singlePartHotText": true,
126
+ "taskModels": {
127
+ "tm1": "multiple-choice",
128
+ "tm2": "multi-select",
129
+ "tm3": "ebsr",
130
+ "tm4": "hot-text",
131
+ "tm5": "short-text"
132
+ },
133
+ "standards": [
134
+ "RI_G5"
135
+ ],
136
+ "dimensions": [
137
+ "central-idea",
138
+ "key-detail",
139
+ "summary"
140
+ ],
141
+ "errorTypes": [
142
+ "too-narrow",
143
+ "too-broad",
144
+ "misreads-detail",
145
+ "insignificant"
146
+ ],
147
+ "dimStandard": {
148
+ "central-idea": "ri-2",
149
+ "key-detail": "ri-2",
150
+ "summary": "ri-2"
151
+ }
152
+ },
153
+ "c1-t8": {
154
+ "id": "c1-t8",
155
+ "label": "Grade 5 · Claim 1 · Target 8 (Key Details)",
156
+ "grade": 5,
157
+ "textType": "informational",
158
+ "baseStandard": "ri-1",
159
+ "defaultDok": "r-dok2",
160
+ "answerKind": "evidence",
161
+ "singlePartHotText": true,
162
+ "taskModels": {
163
+ "tm1": "multiple-choice",
164
+ "tm2": "multi-select",
165
+ "tm3": "hot-text"
166
+ },
167
+ "standards": [
168
+ "RI_G5"
169
+ ],
170
+ "dimensions": [
171
+ "supporting-evidence"
172
+ ],
173
+ "errorTypes": [],
174
+ "dimStandard": {
175
+ "supporting-evidence": "ri-7"
176
+ }
177
+ },
178
+ "c1-t10": {
179
+ "id": "c1-t10",
180
+ "label": "Grade 5 · Claim 1 · Target 10 (Word Meanings)",
181
+ "grade": 5,
182
+ "textType": "informational",
183
+ "baseStandard": "ri-4",
184
+ "defaultDok": "r-dok2",
185
+ "answerKind": "meaning",
186
+ "singlePartHotText": false,
187
+ "taskModels": {
188
+ "tm1": "multiple-choice",
189
+ "tm2": "multi-select",
190
+ "tm3": "hot-text"
191
+ },
192
+ "standards": [
193
+ "RI_G5",
194
+ "L_G5"
195
+ ],
196
+ "dimensions": [
197
+ "word-meaning"
198
+ ],
199
+ "errorTypes": [
200
+ "other-meaning",
201
+ "misinterprets",
202
+ "wrong-context"
203
+ ],
204
+ "dimStandard": {
205
+ "word-meaning": "l-4"
206
+ }
207
+ }
208
+ }
209
+ }
@@ -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 [] {}..
@@ -0,0 +1,3 @@
1
+ {
2
+ "LINES": "treat lines as paragraphs in the original passage"
3
+ }
@@ -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-t8`/`c1-t10`. A bare "task model 3" is therefore meaningless without its
17
+ target — never assume the Reasoning & Evidence (T4/T11) numbering carries over to T9/T8/T10. 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
@@ -84,6 +93,17 @@ Say this to get that:
84
93
  - **Dimensions (c1-t10)** — `word-meaning` (the answer is a meaning; authored via `word`/`meaning`).
85
94
  - **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
95
  - **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).
96
+ - **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`). You may also author the number on the outcome as `task-model tm3` — 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.
97
+
98
+ <!-- GENERATED:task-models START (from targets.json — regenerated by tools/build-static.js; do not edit by hand) -->
99
+ | Target | tm1 | tm2 | tm3 | tm4 | tm5 |
100
+ |--------|-----|-----|-----|-----|-----|
101
+ | `c1-t4` — Grade 5 · Claim 1 · Target 4 (Reasoning & Evidence) | ebsr | hot-text | short-text | — | — |
102
+ | `c1-t11` — Grade 5 · Claim 1 · Target 11 (Reasoning & Evidence) | ebsr | hot-text | short-text | — | — |
103
+ | `c1-t9` — Grade 5 · Claim 1 · Target 9 (Central Ideas) | multiple-choice | multi-select | ebsr | hot-text | short-text |
104
+ | `c1-t8` — Grade 5 · Claim 1 · Target 8 (Key Details) | multiple-choice | multi-select | hot-text | — | — |
105
+ | `c1-t10` — Grade 5 · Claim 1 · Target 10 (Word Meanings) | multiple-choice | multi-select | hot-text | — | — |
106
+ <!-- GENERATED:task-models END -->
87
107
  - **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`.
88
108
  - **Program terminator** — top-level forms chain with no `{}` between them; the program ends with a single `{}..`.
89
109
 
@@ -104,7 +124,7 @@ Say this to get that:
104
124
 
105
125
  ## Out of Scope
106
126
 
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.
127
+ - **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
128
  - **Dual-text stimuli** — a single passage only in this version.
109
129
  - **Compile-time generation** — the compiler selects and validates authored content; it does not invent claims, distractors, or evidence.
110
130
  - **Auto-scoring** — short-text responses are hand-scored against the rubric; the compiler emits the rubric only.
@@ -0,0 +1,25 @@
1
+ export declare const TARGETS_REVISED = "2026-06-30";
2
+ export declare const STANDARD_FAMILIES: {
3
+ readonly RL_G5: readonly ["rl-1", "rl-2", "rl-3", "rl-4", "rl-5", "rl-6", "rl-7", "rl-9"];
4
+ readonly RI_G5: readonly ["ri-1", "ri-2", "ri-3", "ri-4", "ri-5", "ri-6", "ri-7", "ri-8", "ri-9"];
5
+ readonly L_G5: readonly ["l-4", "l-4a", "l-4b", "l-4c", "l-5", "l-5a", "l-5b", "l-5c"];
6
+ };
7
+ export type StandardFamily = keyof typeof STANDARD_FAMILIES;
8
+ export type TargetData = {
9
+ id: string;
10
+ label: string;
11
+ grade: number;
12
+ textType: "literary" | "informational";
13
+ baseStandard: string;
14
+ defaultDok: string;
15
+ answerKind: "statement" | "evidence" | "meaning";
16
+ singlePartHotText: boolean;
17
+ taskModels: Record<string, string>;
18
+ standards: StandardFamily[];
19
+ dimensions: string[];
20
+ errorTypes: string[];
21
+ dimStandard: Record<string, string>;
22
+ };
23
+ export declare function taskModelNumber(target: string, itemType: string): string | undefined;
24
+ export declare const TARGETS_DATA: Record<string, TargetData>;
25
+ //# sourceMappingURL=targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,eAAe,eAAe,CAAC;AAM5C,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAI5D,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,eAAe,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAInB,UAAU,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAGjD,iBAAiB,EAAE,OAAO,CAAC;IAK3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAMF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKpF;AAYD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAwHnD,CAAC"}