@graffiticode/l0175 0.2.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.
- package/dist/compiler.d.ts +12 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +1285 -0
- package/dist/compiler.js.map +1 -0
- package/dist/embedding.d.ts +64 -0
- package/dist/embedding.d.ts.map +1 -0
- package/dist/embedding.js +294 -0
- package/dist/embedding.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lexicon.d.ts +644 -0
- package/dist/lexicon.d.ts.map +1 -0
- package/dist/lexicon.js +101 -0
- package/dist/lexicon.js.map +1 -0
- package/dist/static/instructions.md +527 -0
- package/dist/static/language-info.json +85 -0
- package/dist/static/lexicon.json +1112 -0
- package/dist/static/schema.json +162 -0
- package/dist/static/scope.json +28 -0
- package/dist/static/spec.html +572 -0
- package/dist/static/stems.md +374 -0
- package/dist/static/template.gc +67 -0
- package/dist/static/usage-guide.md +111 -0
- package/package.json +33 -0
- package/spec/README.md +18 -0
- package/spec/data/examples.gc +84 -0
- package/spec/data/examples_with_explanations.md +124 -0
- package/spec/data/training_examples.json +122 -0
- package/spec/docs.md +102 -0
- package/spec/examples.md +91 -0
- package/spec/instructions.md +337 -0
- package/spec/language-info.json +78 -0
- package/spec/schema.json +162 -0
- package/spec/scope.json +28 -0
- package/spec/spec.md +277 -0
- package/spec/stems.md +374 -0
- package/spec/template.gc +67 -0
- package/spec/unparse-hints.json +3 -0
- package/spec/usage-guide.md +111 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
|
|
2
|
+
<!-- gc:model=opus -->
|
|
3
|
+
# L0175 Dialect Extensions
|
|
4
|
+
|
|
5
|
+
_Revised: 2026-06-19_
|
|
6
|
+
|
|
7
|
+
L0175 composes 5th-grade ELA assessment items (Smarter Balanced · Grade 5 · Claim 1 ·
|
|
8
|
+
Reasoning & Evidence) from an authored, inline superset of tagged content. One language serves
|
|
9
|
+
**multiple learning targets**; a program selects its target up front.
|
|
10
|
+
|
|
11
|
+
## Step 0 — pick the learning target
|
|
12
|
+
|
|
13
|
+
Always declare a top-level `target` (the SBAC learning target the program composes for):
|
|
14
|
+
|
|
15
|
+
- **`c1-t4`** — Target 4: Reasoning & Evidence over **literary** texts (RL standards). Dimensions:
|
|
16
|
+
`character`, `setting`, `event`, `point-of-view`, `theme`, `topic`, `narrators-feelings`,
|
|
17
|
+
`character-relationship`. Standards: `rl-1` (always) + `rl-3` / `rl-6` / `rl-9`.
|
|
18
|
+
- **`c1-t11`** — Target 11: Reasoning & Evidence over **informational** texts (RI standards).
|
|
19
|
+
Dimensions: `relationships-interactions`, `author-use-of-information`, `point-of-view`,
|
|
20
|
+
`purpose`, `authors-opinion`. Standards: `ri-1` (always) + `ri-3` / `ri-6` / `ri-7` / `ri-8` / `ri-9`.
|
|
21
|
+
- **`c1-t9`** — Target 9: **Central Ideas** over **informational** texts (RI standards). A
|
|
22
|
+
DIFFERENT skill from Reasoning & Evidence — synthesize and condense: the main/central idea, the
|
|
23
|
+
key details that build it, and summary (NOT inference + justification). Dimensions: `central-idea`,
|
|
24
|
+
`key-detail`, `summary`. Standards: `ri-1` (always) + `ri-2`. **DOK 2** (3 only for the written
|
|
25
|
+
summary). Item types: `multiple-choice`, `multi-select`, `ebsr`, `short-text`, and single-part
|
|
26
|
+
`hot-text` (click the sentence(s) that show the main idea — its directly-supporting `source`s are
|
|
27
|
+
the correct selection). Distractors use a **significance** taxonomy (`too-narrow`,
|
|
28
|
+
`too-broad`, `misreads-detail`, `insignificant`) — usually true statements that just aren't the
|
|
29
|
+
central idea.
|
|
30
|
+
- **`c1-t8`** — Target 8: **Key Details** over **informational** texts (RI standards). A DIFFERENT
|
|
31
|
+
model: the inference/conclusion is **GIVEN in the stem**, and the student selects the supporting
|
|
32
|
+
**evidence** (the answer is evidence, not a chosen statement). Dimension: `supporting-evidence`.
|
|
33
|
+
Standards: `ri-1` (always) + `ri-7`. **DOK 1–2**. Item types: `multiple-choice`, `multi-select`,
|
|
34
|
+
`hot-text` (single-part) — no EBSR, no short-text. **Author ONE supported `claim` = the given
|
|
35
|
+
inference (its `focus`), state it in the `stem`, and author `source`s as the options:
|
|
36
|
+
`directly-supports` = correct evidence (with a `quote`), `supports-wrong-claim`/`irrelevant` =
|
|
37
|
+
distractor evidence. No distractor claims.**
|
|
38
|
+
- **`c1-t10`** — Target 10: **Word Meanings** over **informational** texts. The MOST different
|
|
39
|
+
model: the question asks for the **meaning of a targeted word/phrase in context**, so the answer
|
|
40
|
+
choices are **meanings**, authored as `word`/`meaning` (not claims). Dimension: `word-meaning`.
|
|
41
|
+
Standards: `ri-4` (always) + the L-4 family by strategy (`l-4a` context, `l-4b` roots/affixes,
|
|
42
|
+
`l-5c` word relationships, `l-4c` reference). **DOK 1–2**. Item types: `multiple-choice`,
|
|
43
|
+
`multi-select`, and `hot-text` (click the word in the excerpt matching a given definition).
|
|
44
|
+
**Author a top-level `words` list: a
|
|
45
|
+
`word` (the targeted word, with `line`/`quote` for context) holding `meanings` — one (MC) or ≥2
|
|
46
|
+
(Multi-Select) `status correct` + `status distractor` meanings (each with a T10 `error-type`
|
|
47
|
+
+ `rationale`). The outcome's `focus` names the word; state the word + its context in the `stem`.**
|
|
48
|
+
|
|
49
|
+
**Infer the target — the user need not state it.** Decide from the passage and the skill asked: a
|
|
50
|
+
**literary** text (story/poem/narrative) → `c1-t4`; an **informational** text → an RI target. Among
|
|
51
|
+
informational targets, choose by skill: **reasoning** — infer/conclude and justify with evidence
|
|
52
|
+
(relationships between ideas, author's use of evidence, point of view/purpose/opinion) → `c1-t11`;
|
|
53
|
+
**central ideas** — the main idea, the key details that support it, or a summary → `c1-t9`;
|
|
54
|
+
**key details** — the request **states an inference/conclusion and asks which detail/sentence
|
|
55
|
+
supports it** (the answer is evidence) → `c1-t8`; **word meanings** — the request asks **what a
|
|
56
|
+
word/phrase means in context** → `c1-t10`. The skill also signals T4: character / theme /
|
|
57
|
+
narrator's point of view. When the text type is genuinely ambiguous, prefer `c1-t4`; for an
|
|
58
|
+
informational request, match the verbs: "infer/conclude/why" → T11; "main idea/summarize/most
|
|
59
|
+
about" → T9; "which detail/sentence supports [this stated idea]" → T8; "what does [word] mean" → T10.
|
|
60
|
+
Write the choice as the first top-level form: `target c1-t11`. Use the dimensions, standards, and
|
|
61
|
+
stem catalog (in `stems.md`) for that target; mixing targets' vocabularies is a compile error,
|
|
62
|
+
and the passage `type` should match the target (literary for T4; informational for T11 and T9). If
|
|
63
|
+
`target` is omitted entirely the compiler defaults to `c1-t4` and warns — so always emit one
|
|
64
|
+
explicitly rather than relying on the default.
|
|
65
|
+
|
|
66
|
+
## Authoring contract
|
|
67
|
+
|
|
68
|
+
**Compose questions first (item-first).** After picking the target, author the N `outcome`s you
|
|
69
|
+
want — each with a unique `id`, a `focus` naming its correct claim, and an explicit `stem` (and
|
|
70
|
+
`stem-b` on EBSR) taken from the target's section of the Appropriate-Stem catalog (`stems.md`).
|
|
71
|
+
THEN author the supported claims each `focus` names, and a superset of distractor claims, each
|
|
72
|
+
tagged with `targets` listing the question id(s) it foils. The compiler draws an item's foils
|
|
73
|
+
ONLY from the distractors that target that outcome — so every wrong answer is authored against
|
|
74
|
+
that exact stem and key.
|
|
75
|
+
|
|
76
|
+
A program is ONE flat builder chain ending in a single `{}..`. Top-level forms
|
|
77
|
+
(`target`, `passage`, `type`, `lines`, `claims`, `evidence`, `outcomes`) chain with no `{}`
|
|
78
|
+
between them. Inside the `claims` / `evidence` / `outcomes` lists, each element (`claim` /
|
|
79
|
+
`source` / `outcome`) is its own attribute chain terminated by its own `{}`; whitespace separates
|
|
80
|
+
elements (commas are optional).
|
|
81
|
+
|
|
82
|
+
Quote free text (`text`, `rationale`, `subject`, passage heading) and id labels (`id`,
|
|
83
|
+
`cites`, `supports`). Write closed-enum values as bare kebab-case identifiers (`c1-t4`, `ebsr`,
|
|
84
|
+
`character`, `misreads-detail`, `directly-supports`, `rl-1`, `r-dok3`).
|
|
85
|
+
|
|
86
|
+
## Forms and attributes
|
|
87
|
+
|
|
88
|
+
- **target** `c1-t4` | `c1-t11` — top level; selects the learning-target profile (dimensions,
|
|
89
|
+
standards, stem catalog). Always author one; if omitted, the compiler defaults to `c1-t4`.
|
|
90
|
+
- **grade** `<n>` — optional, top level (e.g. `grade 5`). The reading-level target the compiler
|
|
91
|
+
checks the passage against. Defaults to the guideline/target's grade (5 for `c1-t4`/`c1-t11`);
|
|
92
|
+
author one only to override when the user's prompt asks for a different grade.
|
|
93
|
+
- **passage** `"heading"` — plus `type` (`literary` | `informational`) and
|
|
94
|
+
`lines [ "..." ... ]`. **By default each entry is one PARAGRAPH of the passage**, auto-numbered
|
|
95
|
+
from 1 (so the passage shows numbered paragraphs, matching SBAC). **Preserve the paragraph breaks
|
|
96
|
+
the request supplies** — emit one `lines` entry per source paragraph; do not merge the passage
|
|
97
|
+
into a single entry or re-chunk it. Split by paragraph for **every** task model, including Hot
|
|
98
|
+
Text: the compiler segments each paragraph into sentences and makes each sentence individually
|
|
99
|
+
selectable in Hot Text Part B, so the passage keeps its paragraph layout — do **not** author the
|
|
100
|
+
passage as one sentence per line.
|
|
101
|
+
- **claim** — `id`, `status` (`supported` | `distractor`), `dimension` (required on supported
|
|
102
|
+
claims), `text`. A `distractor` also requires `error-type`, a non-empty `rationale`, and
|
|
103
|
+
`targets` (the outcome id(s) of the question(s) it foils). Optional: `cites` (evidence ids),
|
|
104
|
+
`subject`, `standard`, `dok`, and `plausibility` (a 0–1 override for how tempting a distractor
|
|
105
|
+
is — otherwise the compiler computes it from evidence overlap, structure, and error type when
|
|
106
|
+
choosing among the foils of the same error type that target the outcome).
|
|
107
|
+
- **source** — `id`, `line` (the numbered passage entry — a paragraph by default) or `quote`,
|
|
108
|
+
`status` (`directly-supports` | `supports-wrong-claim` | `irrelevant`), `supports` (claim ids).
|
|
109
|
+
Optional `rationale` explaining a foil. **For EBSR Part B, give the source a `quote` with the
|
|
110
|
+
exact supporting SENTENCE** while `line` points at the paragraph that contains it — so Part B
|
|
111
|
+
options stay tight sentences even though the passage is numbered by paragraph. (Without `quote`,
|
|
112
|
+
the option text is the whole paragraph at `line`.)
|
|
113
|
+
- **outcome** — `id` (required, unique — distractors target it), `type`
|
|
114
|
+
(`ebsr` | `hot-text` | `short-text` | `multiple-choice` | `multi-select`), `dimension`, `focus`
|
|
115
|
+
(required — the id of the supported correct claim; on `multi-select` a **list** of ids = the
|
|
116
|
+
correct set), `stem` (required — the Part A / single-question stem / short-text prompt, authored
|
|
117
|
+
from `stems.md`), and on EBSR `stem-b` (required — the Part B stem). Optional: `subject`,
|
|
118
|
+
`standard`, `dok`, and `rubric` (short-text only — a list of `band score <n> descriptor "…"`
|
|
119
|
+
elements; defaults to a 0/1/2 rubric if omitted).
|
|
120
|
+
- **band** — a rubric row: `band score 2 descriptor "…" {}`. Used only inside an outcome's `rubric`.
|
|
121
|
+
- **word** / **meaning** (**target `c1-t10` only**) — a top-level `words` list of `word`s; each
|
|
122
|
+
`word` has `id`, `text` (the targeted word/phrase), optional `line`/`quote` (its context), and a
|
|
123
|
+
`meanings` list. A `meaning` has `id`, `text` (the definition/synonym), `status`
|
|
124
|
+
(`correct` | `distractor`), and on a distractor an `error-type` (`other-meaning` | `misinterprets`
|
|
125
|
+
| `wrong-context`) + `rationale`. The outcome's `focus` names the `word`; its correct meaning(s)
|
|
126
|
+
are the key, the distractor meanings the foils. Example:
|
|
127
|
+
`words [ word id "w1" text "aqueduct" line 1 quote "The aqueduct carried water." meanings [ meaning id "m1" status correct text "a water channel" {} meaning id "m2" status distractor error-type other-meaning text "a boat" rationale "another meaning, ignores context" {} ] {} ]`
|
|
128
|
+
For a **click-the-word** (`hot-text`) item, author the focus `word` (the correct one) as the
|
|
129
|
+
outcome's `focus` with the `line` of its paragraph, then the **distractor candidate words** either
|
|
130
|
+
(a) as more single-word `word`s in the list, or (b) as the focus word's distractor `meanings`
|
|
131
|
+
whose `text` IS the candidate word (a single word, with error-type + rationale) — for hot-text the
|
|
132
|
+
meaning text must be the literal word to click, not a definition. **All candidates must be words
|
|
133
|
+
that appear in that one paragraph.** The compiler shows the paragraph and makes the candidate words
|
|
134
|
+
clickable, with the focus word correct. The `stem` is just the instruction + definition — do
|
|
135
|
+
**not** paste the paragraph into it (the compiler warns if you do). ⚠ If you author *only* the
|
|
136
|
+
focus word with a real multi-word definition (no candidate words), the compiler falls back to
|
|
137
|
+
making **every** content word clickable — list the candidate words to avoid that. Candidates not
|
|
138
|
+
in the focus word's paragraph are warned and dropped.
|
|
139
|
+
- A top-level **`title`** attribute (before `passage`) names the assessment; it is echoed on the output.
|
|
140
|
+
|
|
141
|
+
## Stems (Appropriate Stems, SBAC G5 · C1 · T4)
|
|
142
|
+
|
|
143
|
+
**You author the stem; the compiler does not generate it. Use the guideline's Appropriate-Stem
|
|
144
|
+
templates verbatim — do not invent phrasings.** For each item, open the catalog in **`stems.md`**,
|
|
145
|
+
pick the one template that matches the item type (EBSR → Task Model 1, Hot Text → Task Model 2,
|
|
146
|
+
Short Text → Task Model 3) and the task (inference vs. conclusion vs. author-intent; plain
|
|
147
|
+
subject vs. narrator's-feelings vs. relationship), and fill its bracketed `[...]` slot. Author
|
|
148
|
+
`stem` (Part A / short-text prompt) and, on EBSR, `stem-b` (Part B). Common Part A choices:
|
|
149
|
+
|
|
150
|
+
- inference — "Which of these inferences about [...] is supported by the passage?"
|
|
151
|
+
- conclusion — "Which of these conclusions about [...] is supported by the passage?"
|
|
152
|
+
- author-intent — "What did the author most likely mean by including [...] in the passage?"
|
|
153
|
+
|
|
154
|
+
**Specificity rule (required).** Fill the `[...]` slot — the guideline's
|
|
155
|
+
`[provide character's name / setting / event / author's point of view / theme / topic]` slot —
|
|
156
|
+
with the **specific** reference the question is about, the same string you put in `subject`:
|
|
157
|
+
`character`→ the character's name (`"Mother"`); `point-of-view`→ `"the narrator's point of view"`;
|
|
158
|
+
`setting` / `event` / `theme` / `topic`→ the specific setting/event/theme/topic;
|
|
159
|
+
`narrators-feelings`→ "the narrator's feelings toward {subject}"; `character-relationship`→
|
|
160
|
+
"{subject}'s relationship with {other}". Do **not** leave it generic (`"the character"`) and do
|
|
161
|
+
**not** pad it — write `"the theme"`, not `"the theme of the passage"` (the stem already ends
|
|
162
|
+
"…supported by the passage"). A specific subject is what makes the four answer choices
|
|
163
|
+
discriminating. Hot Text uses the "Click on the statement…" forms; Short Text ends with
|
|
164
|
+
"Explain using key details from the passage to support your answer."
|
|
165
|
+
|
|
166
|
+
**Hot Text Part A asks for the best STATEMENT — never for passage sentences.** The Part A `stem`
|
|
167
|
+
must be a Task Model 2 "Click on the statement that best provides an inference/conclusion about
|
|
168
|
+
[...]" prompt whose four options are inference `claim`s. Selecting the supporting sentences is
|
|
169
|
+
**Part B**, which the compiler fixes automatically — you never author it. **Translate a request
|
|
170
|
+
that says "select/click the sentences that show [X]"**: that phrasing describes the *Part B*
|
|
171
|
+
target, not the Part A stem. Author Part A as "Click on the statement that best provides an
|
|
172
|
+
inference about [X] that is supported by the passage." (a statement about [X]), make the correct
|
|
173
|
+
`claim` that inference, and mark the sentences that show [X] as `directly-supports` evidence with
|
|
174
|
+
exact `quote`s — those become Part B's correct selections. Do **not** copy "select the sentences
|
|
175
|
+
that…" into the `stem`. The compiler warns ("Hot Text Part A must ask for the best STATEMENT…")
|
|
176
|
+
when a Hot Text Part A stem mentions sentences.
|
|
177
|
+
|
|
178
|
+
The concrete answer and its foils are authored as `claim`s (the correct claim, named by the
|
|
179
|
+
outcome's `focus`, states the inferred fact, e.g. "Cortez is about twelve"; its foils `targets`
|
|
180
|
+
the outcome). Remember the answer must be **inferable from evidence** (Target 4) — a fact stated
|
|
181
|
+
outright is literal recall and out of scope.
|
|
182
|
+
|
|
183
|
+
## Authoring guidance
|
|
184
|
+
|
|
185
|
+
- For each EBSR/Hot-Text outcome, author **at least 5 viable distractor claims that `targets`
|
|
186
|
+
it**, covering all three error types (`misreads-detail`, `erroneous-inference`,
|
|
187
|
+
`faulty-reasoning`) — with ≥2 alternatives in at least two of the types. An item draws only 3
|
|
188
|
+
foils, so a deeper targeted pool gives selection real choice. **Fewer than 3 targeted foils is
|
|
189
|
+
a hard error** (the item can't be composed); fewer than 5 triggers a composition warning.
|
|
190
|
+
- A distractor may `targets` more than one question when it genuinely foils each (e.g. several
|
|
191
|
+
items built around the same correct claim). Keep foils written to the specific stem + key they
|
|
192
|
+
target — that is the whole point of binding by `targets` rather than by dimension.
|
|
193
|
+
- **Over-generate: aim for 5–8 distinct distractors per question** (some will be filtered as
|
|
194
|
+
near-duplicates or accidentally correct), spanning a spread of difficulty, and give each a
|
|
195
|
+
`plausibility` score (0–1) for how tempting it is to a partial-understander. Composition selects
|
|
196
|
+
the most plausible foil per error type from this scored pool; if a score is omitted the compiler
|
|
197
|
+
computes one from the inference graph (evidence overlap, structure, error type).
|
|
198
|
+
- Tag evidence so Part B has material: mark the sources that **directly support** the correct
|
|
199
|
+
claim, and author **at least 5 non-supporting foil sources** — `supports-wrong-claim` sources
|
|
200
|
+
plus `irrelevant` sources. EBSR Part B draws 3 foils + the correct source; a pool of ≥5 lets the
|
|
201
|
+
compiler pick the most tempting 3. Fewer than 5 triggers a composition warning. Give each EBSR
|
|
202
|
+
Part B source a `quote` with the exact supporting **sentence** (and a `line` pointing at its
|
|
203
|
+
paragraph), so the four Part B options are tight sentences rather than whole paragraphs.
|
|
204
|
+
- **Hot Text Part B selects sentences, not paragraphs.** Keep the passage split by paragraph; the
|
|
205
|
+
compiler segments each paragraph into sentences and exposes every sentence as a selectable Part B
|
|
206
|
+
option, preserving the paragraph layout. Mark the correct sentence(s) by giving each
|
|
207
|
+
`directly-supports` source a `quote` with the exact supporting **sentence** (and a `line` at its
|
|
208
|
+
paragraph). A `directly-supports` source with no `quote` marks every sentence of its `line`
|
|
209
|
+
correct.
|
|
210
|
+
- **Hot Text Part B asks for an EXACT number of sentences from a SUPERSET of valid answers.** The
|
|
211
|
+
valid (directly-supporting) sentences are a superset; the student must select a specific count,
|
|
212
|
+
and **any selection of that many drawn from the valid set is correct** — they never have to find
|
|
213
|
+
every one. The compiler sets the count to **one less than the valid count** (a proper subset),
|
|
214
|
+
floored at 1 (one valid sentence) and capped at 3 (so it stays ≤3 once there are more than 4
|
|
215
|
+
valid): `count = min(3, validCount − 1)`, or 1 when `validCount ≤ 1`. It writes the matching
|
|
216
|
+
"Click N sentence(s)…" instruction. **Author a real superset: mark every sentence that genuinely
|
|
217
|
+
supports the inference as a `directly-supports` source with an exact `quote` — aim for ≥3 so the
|
|
218
|
+
asked count is ≥2 and there's real choice.** With only one valid sentence the compiler warns and
|
|
219
|
+
the answer is that single sentence.
|
|
220
|
+
- **No-giveaway rule (EBSR Part B): for every EBSR question, author at least one
|
|
221
|
+
`supports-wrong-claim` line whose `supports` lists BOTH the correct claim's id AND a
|
|
222
|
+
distractor's id** — a passage line that *seems* to back the correct inference but actually
|
|
223
|
+
props up a misreading. Part B asks "which line supports your Part A answer?"; if none of the
|
|
224
|
+
Part B foils also point at the correct claim, the correct line is the only one "about" the
|
|
225
|
+
right answer, so a student can back into Part A from the evidence (and the compiler warns
|
|
226
|
+
"possible A↔B giveaway"). Tie the shared line to a distractor you expect Part A to use, so it
|
|
227
|
+
is selected as a Part B foil. Do **not** make every `supports-wrong-claim` line point only at
|
|
228
|
+
distractors — that is exactly what triggers the warning.
|
|
229
|
+
Example: `source id "e2" line 2 status supports-wrong-claim supports ["c1" "c2"] {}` — `c1` is
|
|
230
|
+
the correct claim, `c2` one of its foils; this line tempts in both Part A and Part B.
|
|
231
|
+
- **Length-balance rule (no length giveaway): keep the correct claim's `text` parallel in
|
|
232
|
+
length and detail to its distractors.** A frequent tell is the key being the longest, most
|
|
233
|
+
qualified, most-detailed option — a partial-understander learns to pick "the long one." Write
|
|
234
|
+
the correct claim as tersely as it can be stated, and give the foils comparable specificity
|
|
235
|
+
(similar clause count and roughly the same length) rather than short, flat statements. The same
|
|
236
|
+
applies to the EBSR Part B `quote`s — pick supporting and non-supporting sentences of similar
|
|
237
|
+
length. The compiler flags a "possible length giveaway" warning when the correct option is the
|
|
238
|
+
longest AND notably longer than the average distractor; treat that warning as a cue to pad the
|
|
239
|
+
foils or trim the key.
|
|
240
|
+
- **Stem-wording rule (no answer echo): the Part A stem must not reuse the correct option's
|
|
241
|
+
wording.** Keep the stem a neutral question that names only the subject/skill (fill the catalog
|
|
242
|
+
template's `[...]` slot with the subject, e.g. "the narrator's point of view" or "how the city's
|
|
243
|
+
systems helped people") — do **not** restate the correct claim's phrasing in the stem. If the
|
|
244
|
+
stem already contains the answer's distinctive words ("...that best show that the city *had
|
|
245
|
+
systems that helped people move around the city and get fresh water*", when the key says the
|
|
246
|
+
city "*had built systems … that let people move through the city and get fresh water*"), the
|
|
247
|
+
answer is obvious without reading the options. **Paraphrase** so the stem and the key share only
|
|
248
|
+
the subject, and word the correct option in the passage's own terms. This applies to **every
|
|
249
|
+
Hot Text and EBSR question, across all targets**. The compiler warns ("Part A: the stem reuses
|
|
250
|
+
much of the correct option's wording …") when the stem reuses most of the key's content words —
|
|
251
|
+
treat it as a cue to reword the stem.
|
|
252
|
+
- **Grade-appropriate text complexity: author the passage AND all question text at the target
|
|
253
|
+
grade.** The grade is the guideline/target's grade (Grade 5 for `c1-t4`/`c1-t11`) unless the
|
|
254
|
+
user asks for another, in which case set a top-level `grade <n>`. At the Grade-5 instance:
|
|
255
|
+
reading level near the CCSS grade-4–5 band (Lexile ≈ 740–1010L, Flesch–Kincaid grade ≈ 4.5–6.0);
|
|
256
|
+
sentences mostly simple/compound, averaging ~12–16 words; concrete, high-frequency vocabulary
|
|
257
|
+
with at most a few context-clear Tier-2 words (avoid abstract/academic Tier-3 diction); a single
|
|
258
|
+
passage ≈ 150–350 words; figurative language sparing and accessible. **The reasoning must be
|
|
259
|
+
grade-level too:** DOK 3 means strategic thinking *within* grade-level text, so the correct
|
|
260
|
+
inference comes from concrete textual details — what a character does or says, a stated cause and
|
|
261
|
+
effect — not college-style thematic or authorial-technique analysis. Keep distractor, option, and
|
|
262
|
+
rationale text in the same register as the passage; a wrong answer that reads more academic than
|
|
263
|
+
the text gives itself away. The compiler estimates the passage's reading level and warns when it
|
|
264
|
+
runs above the target grade — treat that warning as a cue to shorten sentences and simplify
|
|
265
|
+
vocabulary. Scale the figures with the grade for non-Grade-5 targets.
|
|
266
|
+
- Distractor rationales must state *why a student would plausibly choose the foil* (the error
|
|
267
|
+
it targets). They appear in the item's `distractorAnalysis` output.
|
|
268
|
+
- The same passage + superset can drive several outcomes; add one `outcome` per item you want.
|
|
269
|
+
|
|
270
|
+
## Built-in enumerations
|
|
271
|
+
|
|
272
|
+
- `target`: `c1-t4`, `c1-t11`, `c1-t9`, `c1-t8`, `c1-t10` (top level; always author one — defaults to `c1-t4` if omitted)
|
|
273
|
+
- `grade`: a number (top level, optional; defaults to the target's grade — 5 for all current targets)
|
|
274
|
+
- item `type`: `ebsr`, `hot-text`, `short-text`, `multiple-choice`, `multi-select` · passage `type`: `literary`, `informational`
|
|
275
|
+
(allowed per target — T4/T11: ebsr/hot-text/short-text · T9: multiple-choice/multi-select/ebsr/hot-text/short-text · T8: multiple-choice/multi-select/hot-text · T10: multiple-choice/multi-select/hot-text)
|
|
276
|
+
- `dimension` (**c1-t4**): `character`, `setting`, `event`, `point-of-view`, `theme`, `topic`, `narrators-feelings`, `character-relationship`
|
|
277
|
+
- `dimension` (**c1-t11**): `relationships-interactions`, `author-use-of-information`, `point-of-view`, `purpose`, `authors-opinion`
|
|
278
|
+
- `dimension` (**c1-t9**): `central-idea`, `key-detail`, `summary` · (**c1-t8**): `supporting-evidence` · (**c1-t10**): `word-meaning`
|
|
279
|
+
- claim `status`: `supported`, `distractor` · source `status`: `directly-supports`, `supports-wrong-claim`, `irrelevant` · meaning `status` (c1-t10): `correct`, `distractor`
|
|
280
|
+
- `error-type` (**c1-t4 / c1-t11**): `misreads-detail`, `erroneous-inference`, `faulty-reasoning` · (**c1-t9**): `too-narrow`, `too-broad`, `misreads-detail`, `insignificant` · (**c1-t8**): none — wrong answers are non-supporting `source`s · (**c1-t10**): `other-meaning`, `misinterprets`, `wrong-context`
|
|
281
|
+
- `standard` (**c1-t4**): `rl-1`, `rl-3`, `rl-6`, `rl-9` · (**c1-t11**): `ri-1`, `ri-3`, `ri-6`, `ri-7`, `ri-8`, `ri-9` · (**c1-t9**): `ri-1`, `ri-2` · (**c1-t8**): `ri-1`, `ri-7` · (**c1-t10**): `ri-4`, `l-4`, `l-4a`, `l-4b`, `l-4c`, `l-5c`
|
|
282
|
+
- `dok`: `r-dok1`, `r-dok2`, `r-dok3` (R&E items are `r-dok3`; T9 selected-response is `r-dok2`, its written summary `r-dok3`; T8 & T10 are `r-dok2`)
|
|
283
|
+
|
|
284
|
+
## What composition does
|
|
285
|
+
|
|
286
|
+
For each outcome the compiler takes the correct claim named by `focus`, draws that outcome's
|
|
287
|
+
foils from the distractors that `targets` it (selecting for error-type coverage and
|
|
288
|
+
plausibility), uses the authored `stem`/`stem-b`, builds the task-model item, and emits
|
|
289
|
+
`distractorAnalysis` (every foil's error type + rationale + the claim it ties to), an
|
|
290
|
+
`answerKey`, the matched `standards` and `dok`, and `warnings` when the targeted pool is thin.
|
|
291
|
+
It never generates content or stems — author them.
|
|
292
|
+
|
|
293
|
+
## Example (Target 4, literary)
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
target c1-t4
|
|
297
|
+
passage "The Tide Pool"
|
|
298
|
+
type literary
|
|
299
|
+
/* lines are PARAGRAPHS, auto-numbered 1..N; EBSR Part B sources `quote` the exact sentence */
|
|
300
|
+
lines [
|
|
301
|
+
"Mara crouched at the edge of the tide pool, ignoring the picnic 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."
|
|
302
|
+
"She traced the cold water as if the pool were the only thing that mattered. Behind her, paper plates rustled and her mother laughed."
|
|
303
|
+
]
|
|
304
|
+
claims [
|
|
305
|
+
claim id "c1" status supported dimension character subject "Mara"
|
|
306
|
+
text "Mara is more interested in the tide pool than in her family's picnic."
|
|
307
|
+
cites ["e1" "e3"] {}
|
|
308
|
+
/* at least 5 viable distractors targeting q1; the item draws 3 (one per error type) */
|
|
309
|
+
claim id "c2" status distractor error-type misreads-detail plausibility 0.85 targets ["q1"]
|
|
310
|
+
text "Mara is angry at her brother."
|
|
311
|
+
rationale "Not turning around shows absorption, not anger." cites ["e2"] {}
|
|
312
|
+
claim id "c3" status distractor error-type misreads-detail plausibility 0.6 targets ["q1"]
|
|
313
|
+
text "Mara is bored and wants to leave."
|
|
314
|
+
rationale "Her stillness is focus, not boredom (the crab makes her smile)." cites ["e2"] {}
|
|
315
|
+
claim id "c4" status distractor error-type erroneous-inference plausibility 0.55 targets ["q1"]
|
|
316
|
+
text "Mara dislikes being outdoors."
|
|
317
|
+
rationale "Over-generalizes from her quiet to a dislike the text contradicts." cites ["e3"] {}
|
|
318
|
+
claim id "c5" status distractor error-type erroneous-inference plausibility 0.5 targets ["q1"]
|
|
319
|
+
text "Mara is waiting for her brother to join her."
|
|
320
|
+
rationale "Invents a goal the passage never states." cites ["e2"] {}
|
|
321
|
+
claim id "c6" status distractor error-type faulty-reasoning plausibility 0.45 targets ["q1"]
|
|
322
|
+
text "Because Mara is quiet, she must be upset."
|
|
323
|
+
rationale "Treats quiet as upset without textual support." cites ["e2"] {}
|
|
324
|
+
]
|
|
325
|
+
evidence [
|
|
326
|
+
/* `line` = the paragraph; `quote` = the exact supporting sentence shown as the Part B option */
|
|
327
|
+
source id "e1" line 1 quote "Mara crouched at the edge of the tide pool, ignoring the picnic behind her." status directly-supports supports ["c1"] {}
|
|
328
|
+
source id "e2" line 1 quote "Her brother called twice, but she did not turn around." status supports-wrong-claim supports ["c1" "c2"] {}
|
|
329
|
+
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"] {}
|
|
330
|
+
]
|
|
331
|
+
outcomes [
|
|
332
|
+
outcome id "q1" type ebsr dimension character subject "Mara" standard rl-1 focus "c1"
|
|
333
|
+
stem "Which of these inferences about Mara is supported by the passage?"
|
|
334
|
+
stem-b "Which sentence(s) from the passage best support your answer in Part A?" {}
|
|
335
|
+
]
|
|
336
|
+
{}..
|
|
337
|
+
```
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"revised": "2026-06-24",
|
|
3
|
+
"id": "0175",
|
|
4
|
+
"description": "Composes 5th-grade English Language Arts assessment items (Smarter Balanced · Grade 5 · Claim 1) for multiple learning targets — DIFFERENT reading skills: c1-t4 (Reasoning & Evidence, literary, RL) and c1-t11 (Reasoning & Evidence, informational, RI) ask students to infer/conclude and justify with evidence; c1-t9 (Central Ideas, informational, RI-1/RI-2) asks them to determine the main idea, the key details that build it, or summarize; c1-t8 (Key Details, informational, RI-1/RI-7) GIVES the inference in the stem and asks them to select the supporting evidence (the options are passage sources, not statements; item types multiple-choice/multi-select/single-part-hot-text); c1-t10 (Word Meanings, informational, RI-4/L-4) asks for the meaning of a targeted word/phrase in context (the options are MEANINGS, authored as a `word` with candidate `meaning`s — not claims; item types multiple-choice/multi-select, plus a click-the-word hot-text — for that, author the candidate `word`s as a top-level `words` list: the correct one is the outcome's `focus` (give it the `line` of its paragraph) and the others are distractor candidate words; ALL candidates must be words that appear in that one paragraph (they need only `text` — no `meanings`). The compiler shows the whole paragraph and makes the authored candidate words clickable, with the focus word correct (if you author only the correct word, every content word in the paragraph becomes a choice). The `stem` is only the instruction + the definition (e.g. 'Read the paragraph below. Click the word that means …') — never paste the paragraph into the stem). Every program declares a top-level `target` selecting the dimension/standard/error-type/DOK/stem vocabulary. Item-first: a program authors the questions (outcomes) first — each with a unique id, a focus correct claim (a list on multi-select), and a stem from the target's guideline catalog — then supported and distractor claims (each distractor targets the question(s) it foils) and evidence sources for one passage. Item types: ebsr (two-part), hot-text, short-text, multiple-choice (one correct), multi-select (exact correct set). T9 distractors are a significance taxonomy (too-narrow/too-broad/misreads-detail/insignificant) — usually true statements that just aren't central — vs R&E's reasoning-error taxonomy. Supply the passage text already split into paragraphs (keep the paragraph breaks). The compiler takes each outcome's focus and the foils that target it and assembles the item; it selects and validates authored content, it does not generate content or stems. Author the passage and all question text at the target reading level (Grade 5; overridable with a top-level `grade <n>`); the compiler estimates the passage's reading level and warns when it runs above the target grade.",
|
|
5
|
+
"supported_item_types": ["ebsr", "hot-text", "short-text", "multiple-choice", "multi-select"],
|
|
6
|
+
"example_prompts": [
|
|
7
|
+
{
|
|
8
|
+
"prompt": "From a short story about a girl named Mara at a tide pool, write an EBSR item about what Mara cares about, standard rl-1.",
|
|
9
|
+
"produces": "ebsr",
|
|
10
|
+
"notes": "Literary text -> target c1-t4. Two-part selected response: Part A inference statement, Part B supporting line; needs a supported claim plus at least 5 viable error-typed distractor claims (the item draws 3; a deeper pool gives selection real choice)."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"prompt": "From an informational article about the history of bridge design, write an EBSR item about how each design solved a problem the previous one could not.",
|
|
14
|
+
"produces": "ebsr",
|
|
15
|
+
"notes": "Informational text -> target c1-t11, dimension relationships-interactions, RI standards (ri-1 + ri-3). Same item-first structure; pick stems from the T11 section of stems.md."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"prompt": "From the same tide-pool passage, also produce a short-text constructed-response item asking for an inference about Mara with evidence.",
|
|
19
|
+
"produces": "short-text",
|
|
20
|
+
"notes": "Reuses the same pool; emits a prompt and a 0/1/2 rubric, no distractors."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"prompt": "Make a hot-text item where students click the sentences that show Mara's focus on the tide pool.",
|
|
24
|
+
"produces": "hot-text",
|
|
25
|
+
"notes": "Part B exposes every passage line as selectable; the correct claim's directly-supporting lines are the answer."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"prompt": "Add a faulty-reasoning distractor that mistakes Mara's quiet whisper for fear of her family.",
|
|
29
|
+
"produces": "ebsr",
|
|
30
|
+
"notes": "A distractor claim with error-type faulty-reasoning, a rationale, and targets naming the question(s) it foils; composition uses it for Part A error-type coverage."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"prompt": "Write an item about the narrator's point of view in a first-person diary entry, standard rl-6.",
|
|
34
|
+
"produces": "ebsr",
|
|
35
|
+
"notes": "Dimension point-of-view; the outcome's focus names the supported claim and the item reports rl-6 alongside rl-1."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"prompt": "Compose an item comparing how two characters in the story react to the same event, standard rl-3.",
|
|
39
|
+
"produces": "ebsr",
|
|
40
|
+
"notes": "Dimension character-relationship; the companion standard rl-3 is emitted with rl-1."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"prompt": "Write the tide-pool EBSR but keep it at a 4th-grade reading level.",
|
|
44
|
+
"produces": "ebsr",
|
|
45
|
+
"notes": "User named a grade -> add a top-level `grade 4`; author shorter sentences and simpler vocabulary than the Grade-5 default. The compiler checks the passage against the resolved grade and warns if it reads above it."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"prompt": "Here is the passage (4 paragraphs, blank-line separated): <text>. Write an EBSR item about the narrator's feelings.",
|
|
49
|
+
"produces": "ebsr",
|
|
50
|
+
"notes": "The request supplies paragraph-chunked text -> emit one `lines` entry per paragraph, preserving the breaks, so the rendered passage keeps its 4 numbered paragraphs. Do not merge the text into a single line."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"prompt": "From an informational article about honeybees, write a multiple-choice item asking for the main idea.",
|
|
54
|
+
"produces": "multiple-choice",
|
|
55
|
+
"notes": "Central Ideas -> target c1-t9, type multiple-choice, dimension central-idea, standards ri-1+ri-2, DOK r-dok2. The focus claim is the central idea; distractors use the significance taxonomy (too-narrow: a true supporting detail; too-broad: an overgeneralization; insignificant: a minor detail), i.e. true statements that aren't the main idea."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"prompt": "Make a multi-select asking which two sentences belong in a summary of the article.",
|
|
59
|
+
"produces": "multi-select",
|
|
60
|
+
"notes": "target c1-t9, type multi-select, dimension summary. `focus` is a LIST of the two correct claims; the compiler emits 5-6 options and the student must select exactly the correct set."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"prompt": "The article concludes that aqueducts let distant cities get fresh water — make a multiple-choice item asking which detail best supports that conclusion.",
|
|
64
|
+
"produces": "multiple-choice",
|
|
65
|
+
"notes": "Given inference -> evidence selection: target c1-t8, type multiple-choice, dimension supporting-evidence, standards ri-1+ri-7. Author ONE supported claim (the conclusion) at `focus` and state it in the stem; the OPTIONS are sources -- the directly-supports source is correct, supports-wrong-claim/irrelevant sources are foils. No distractor claims."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"prompt": "What does the word 'aqueduct' most likely mean as it is used in the article? (multiple choice)",
|
|
69
|
+
"produces": "multiple-choice",
|
|
70
|
+
"notes": "Word meaning in context: target c1-t10, type multiple-choice, dimension word-meaning, standard ri-4 + l-4a (context). Author a top-level `words` list with a `word` (text the targeted word, line/quote its context) whose `meanings` are the OPTIONS -- one `status correct` + `status distractor` meanings (error-type other-meaning/misinterprets/wrong-context + rationale). The outcome's `focus` names the word; state the word + its sentence in the stem."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"prompt": "Make a click-the-word item: in the paragraph about the city's water supply, the target word is 'aqueduct' (it means a system of pipes/canals that carries water). Stem: 'Read the paragraph below. Click the word that means a system of pipes or canals that carries water.'",
|
|
74
|
+
"produces": "hot-text",
|
|
75
|
+
"notes": "T10 Task Model 3 (click-the-word): target c1-t10, type hot-text, dimension word-meaning, standard ri-4 + l-4a. Author the focus `word` (e.g. { id \"w1\" text \"aqueduct\" line <paragraph #> }) as the outcome's `focus`, then the DISTRACTOR CANDIDATE WORDS either way: (a) as more single-word `word`s in the `words` list, OR (b) as the focus word's distractor `meanings` whose `text` IS the candidate word — a single word, with error-type + rationale (e.g. text \"causeways\", text \"canals\"). For hot-text the meaning text must be the literal word to click, NOT a definition. ALL candidates must be words that appear in the focus word's paragraph. The compiler shows the whole paragraph (from the focus word's `line`) and makes the candidate words clickable, focus correct. Do NOT put the paragraph in the stem; the stem is only the instruction + definition. (If you author only the focus word with a real multi-word definition, the compiler can't find candidates and falls back to making EVERY content word clickable — avoid that by listing the candidate words.)"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
package/spec/schema.json
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
{
|
|
2
|
+
"revised": "2026-06-18",
|
|
3
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
|
+
"$id": "L0175",
|
|
5
|
+
"title": "L0175",
|
|
6
|
+
"description": "Output of an L0175 program — a composed ELA assessment item, or a set of items (one per outcome).",
|
|
7
|
+
"oneOf": [{ "$ref": "#/$defs/item" }, { "$ref": "#/$defs/items" }],
|
|
8
|
+
"$defs": {
|
|
9
|
+
"items": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"kind": { "const": "items" },
|
|
13
|
+
"title": { "type": "string" },
|
|
14
|
+
"grade": { "type": "number" },
|
|
15
|
+
"items": { "type": "array", "items": { "$ref": "#/$defs/item" } }
|
|
16
|
+
},
|
|
17
|
+
"required": ["kind", "items"]
|
|
18
|
+
},
|
|
19
|
+
"item": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"properties": {
|
|
22
|
+
"kind": { "const": "item" },
|
|
23
|
+
"id": { "type": "string" },
|
|
24
|
+
"title": { "type": "string" },
|
|
25
|
+
"grade": { "type": "number" },
|
|
26
|
+
"type": { "type": "string", "enum": ["ebsr", "hot-text", "short-text", "multiple-choice", "multi-select"] },
|
|
27
|
+
"standards": { "type": "array", "items": { "type": "string" } },
|
|
28
|
+
"dok": { "type": "string" },
|
|
29
|
+
"dimension": { "type": "string" },
|
|
30
|
+
"passage": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"properties": {
|
|
33
|
+
"id": { "type": "string" },
|
|
34
|
+
"heading": { "type": "string" },
|
|
35
|
+
"type": { "type": "string", "enum": ["literary", "informational"] },
|
|
36
|
+
"lines": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"items": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"properties": { "id": { "type": "number" }, "text": { "type": "string" } }
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"passages": { "type": ["object", "null"] },
|
|
46
|
+
"stem": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"properties": {
|
|
49
|
+
"partA": { "type": "string" },
|
|
50
|
+
"partB": { "type": "string" },
|
|
51
|
+
"leadIn": { "type": "string" }
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"partA": { "$ref": "#/$defs/optionGroup" },
|
|
55
|
+
"partB": { "$ref": "#/$defs/optionGroup" },
|
|
56
|
+
"choice": { "$ref": "#/$defs/optionGroup" },
|
|
57
|
+
"selectable": {
|
|
58
|
+
"type": "array",
|
|
59
|
+
"items": {
|
|
60
|
+
"type": "object",
|
|
61
|
+
"properties": {
|
|
62
|
+
"id": { "type": "string" },
|
|
63
|
+
"lineId": { "type": "number" },
|
|
64
|
+
"sentence": { "type": "number" },
|
|
65
|
+
"text": { "type": "string" },
|
|
66
|
+
"correct": { "type": "boolean" }
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"selectCount": { "type": "number" },
|
|
71
|
+
"word": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"description": "T10 Word Meanings: the targeted word + its context",
|
|
74
|
+
"properties": {
|
|
75
|
+
"text": { "type": "string" },
|
|
76
|
+
"line": { "type": "number" },
|
|
77
|
+
"quote": { "type": "string" }
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"wordSelect": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"description": "T10 click-the-word (TM3): the excerpt tokenized; selectable candidate words, one correct",
|
|
83
|
+
"properties": {
|
|
84
|
+
"excerpt": { "type": "string" },
|
|
85
|
+
"tokens": {
|
|
86
|
+
"type": "array",
|
|
87
|
+
"items": {
|
|
88
|
+
"type": "object",
|
|
89
|
+
"properties": {
|
|
90
|
+
"idx": { "type": "number" },
|
|
91
|
+
"pre": { "type": "string" },
|
|
92
|
+
"text": { "type": "string" },
|
|
93
|
+
"post": { "type": "string" },
|
|
94
|
+
"selectable": { "type": "boolean" },
|
|
95
|
+
"correct": { "type": "boolean" }
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"prompt": { "type": "string" },
|
|
102
|
+
"rubric": {
|
|
103
|
+
"type": "array",
|
|
104
|
+
"items": {
|
|
105
|
+
"type": "object",
|
|
106
|
+
"properties": { "score": { "type": "number" }, "descriptor": { "type": "string" } }
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"distractorAnalysis": {
|
|
110
|
+
"type": "array",
|
|
111
|
+
"items": {
|
|
112
|
+
"type": "object",
|
|
113
|
+
"properties": {
|
|
114
|
+
"part": { "type": "string", "enum": ["A", "B"] },
|
|
115
|
+
"key": { "type": "string" },
|
|
116
|
+
"claimId": { "type": "string" },
|
|
117
|
+
"sourceId": { "type": "string" },
|
|
118
|
+
"meaningId": { "type": "string" },
|
|
119
|
+
"errorType": { "type": "string" },
|
|
120
|
+
"status": { "type": "string" },
|
|
121
|
+
"tiesTo": {},
|
|
122
|
+
"plausibility": { "type": "number", "description": "0..1 temptingness of the foil (author override or computed)" },
|
|
123
|
+
"rationale": { "type": "string" }
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"answerKey": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"properties": {
|
|
130
|
+
"partA": { "type": "string" },
|
|
131
|
+
"partB": { "type": "string" },
|
|
132
|
+
"choice": { "type": "string" },
|
|
133
|
+
"choices": { "type": "array", "items": { "type": "string" } },
|
|
134
|
+
"word": { "type": "string" },
|
|
135
|
+
"rationale": { "type": "string" }
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"review": { "type": "object" },
|
|
139
|
+
"warnings": { "type": "array", "items": { "type": "string" } }
|
|
140
|
+
},
|
|
141
|
+
"required": ["kind", "type", "passage", "standards", "dok", "dimension", "warnings"]
|
|
142
|
+
},
|
|
143
|
+
"optionGroup": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"properties": {
|
|
146
|
+
"options": {
|
|
147
|
+
"type": "array",
|
|
148
|
+
"items": {
|
|
149
|
+
"type": "object",
|
|
150
|
+
"properties": {
|
|
151
|
+
"key": { "type": "string" },
|
|
152
|
+
"text": { "type": "string" },
|
|
153
|
+
"line": { "type": "number" },
|
|
154
|
+
"correct": { "type": "boolean" }
|
|
155
|
+
},
|
|
156
|
+
"required": ["key", "correct"]
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
package/spec/scope.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"revised": "2026-06-24",
|
|
3
|
+
"id": "0175",
|
|
4
|
+
"summary": "Composes 5th-grade ELA assessment items (Smarter Balanced · Grade 5 · Claim 1) for multiple learning targets selected by a top-level `target`: c1-t4 (Reasoning & Evidence, literary, RL), c1-t11 (Reasoning & Evidence, informational, RI), c1-t9 (Central Ideas, informational, RI-1/RI-2), c1-t8 (Key Details, informational, RI-1/RI-7 — the inference is given and the student selects supporting evidence), and c1-t10 (Word Meanings, informational, RI-4/L-4 — the meaning of a targeted word, options authored as word/meaning) — different reading skills. Item-first: each authored question pins its correct answer(s) (focus) and its stem, and the compiler draws the wrong answers from the foils (distractor claims, non-supporting sources, or distractor meanings) bound to it.",
|
|
5
|
+
"in_scope": [
|
|
6
|
+
"A required top-level target: c1-t4 (literary, R&E), c1-t11 (informational, R&E), c1-t9 (informational, Central Ideas), c1-t8 (informational, Key Details), or c1-t10 (informational, Word Meanings), selecting the dimension/standard/error-type/DOK/item-type/stem vocabulary",
|
|
7
|
+
"A single passage with numbered lines",
|
|
8
|
+
"Questions (outcomes) authored first, each with a unique id, a focus correct claim (a list on multi-select), and a stem from the target's guideline catalog; distractors bound to questions via targets",
|
|
9
|
+
"A content graph: supported and distractor claims, plus evidence sources tagged directly-supports / supports-wrong-claim / irrelevant",
|
|
10
|
+
"c1-t4 dimensions: character, setting, event, point-of-view, theme, topic, narrators-feelings, character-relationship",
|
|
11
|
+
"c1-t11 dimensions: relationships-interactions, author-use-of-information, point-of-view, purpose, authors-opinion",
|
|
12
|
+
"c1-t9 (Central Ideas) dimensions: central-idea, key-detail, summary",
|
|
13
|
+
"c1-t8 (Key Details) dimension: supporting-evidence — the inference is given in the stem and the student selects supporting evidence (options are sources, not claims)",
|
|
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
|
+
"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
|
+
"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)",
|
|
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
|
+
],
|
|
20
|
+
"out_of_scope": [
|
|
21
|
+
"Claims, grades, or Claim-1 targets beyond T4, T11, T9, T8, and T10 — other Claim-1 targets belong in their own dialects",
|
|
22
|
+
"Multi-word-phrase candidates in c1-t10 click-the-word (single words only this version)",
|
|
23
|
+
"Dual-text stimuli (a single passage only in this version)",
|
|
24
|
+
"Compile-time LLM generation — the compiler selects and validates authored content, it does not invent it",
|
|
25
|
+
"Auto-scoring of short-text responses — they are hand-scored against the emitted rubric",
|
|
26
|
+
"Cross-language composition via import — each item runs in exactly one dialect"
|
|
27
|
+
]
|
|
28
|
+
}
|