@qlm/learnlog-mcp 0.0.0-stage → 0.2.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.
- package/CHANGELOG.md +44 -0
- package/LICENSE +201 -0
- package/NOTICE +43 -0
- package/README.md +121 -2
- package/data/SOURCE_CORRECTION.md +9 -0
- package/data/THIRD_PARTY_DATA.md +148 -0
- package/data/examples/chain-tpc-clinical-v2-tampered.json +97 -0
- package/data/examples/chain-tpc-clinical-v2.json +95 -0
- package/data/examples/evidence-record-clean.json +173 -0
- package/data/examples/evidence-record-tampered.json +173 -0
- package/data/labpath-worlds.json +107 -0
- package/data/preprint/README.md +10 -0
- package/data/preprint/assistments_episodes.json +37 -0
- package/data/preprint/cross_source_episodes.json +63 -0
- package/data/provenance/oatutor.json +84 -0
- package/data/provenance/source-audit.json +69 -0
- package/data/provenance/tutormoments.json +91 -0
- package/data/samples/explicit-assistance-SYNTHETIC.jsonl +5 -0
- package/data/samples/oatutor-real-participants.csv +13 -0
- package/data/samples/sandpiper-SYNTHETIC.csv +9 -0
- package/data/samples/tutormoments-real-transcripts.jsonl +2 -0
- package/dist/bin.js +6 -0
- package/dist/episodes.js +488 -0
- package/dist/files.js +39 -0
- package/dist/package.js +14 -0
- package/dist/py.js +419 -0
- package/dist/respond.js +47 -0
- package/dist/sealed.js +31 -0
- package/dist/server.js +115 -0
- package/dist/stages.js +35 -0
- package/dist/tools/formats.js +35 -0
- package/dist/tools/inventory.js +179 -0
- package/dist/tools/learning-graph.js +111 -0
- package/dist/tools/misconceptions.js +54 -0
- package/dist/tools/preprint.js +241 -0
- package/dist/tools/qlm-datasets.js +56 -0
- package/dist/tools/transform.js +61 -0
- package/dist/tools/validate.js +47 -0
- package/dist/tools/verify-credential.js +155 -0
- package/dist/tools/verify-evidence.js +51 -0
- package/dist/tools/worlds.js +24 -0
- package/dist/transformer.js +92 -0
- package/dist/zip.js +71 -0
- package/package.json +66 -4
- package/skills/learnlog-assistments/SKILL.md +38 -0
- package/skills/learnlog-export-to-action/SKILL.md +31 -0
- package/skills/learnlog-learning-commons/SKILL.md +33 -0
- package/skills/learnlog-nto-sandpiper/SKILL.md +31 -0
- package/vendor/PROVENANCE.json +259 -0
- package/vendor/qlm-measure/checks.d.ts +24 -0
- package/vendor/qlm-measure/checks.js +42 -0
- package/vendor/qlm-measure/cli.d.ts +17 -0
- package/vendor/qlm-measure/cli.js +461 -0
- package/vendor/qlm-measure/rules.d.ts +10 -0
- package/vendor/qlm-measure/rules.js +46 -0
- package/vendor/qlm-measure/schemes/index.d.ts +133 -0
- package/vendor/qlm-measure/schemes/index.js +339 -0
- package/vendor/qlm-measure/schemes/node.d.ts +8 -0
- package/vendor/qlm-measure/schemes/node.js +15 -0
- package/vendor/qlm-measure/schemes/products.d.ts +38 -0
- package/vendor/qlm-measure/schemes/products.js +725 -0
- package/vendor/qlm-measure/verifier/hash.d.ts +27 -0
- package/vendor/qlm-measure/verifier/hash.js +163 -0
- package/vendor/qlm-measure/verifier/verify-record.d.ts +22 -0
- package/vendor/qlm-measure/verifier/verify-record.js +123 -0
- package/vendor/qlm-measure/verifier-v03.d.ts +24 -0
- package/vendor/qlm-measure/verifier-v03.js +205 -0
- package/vendor/transformer/LICENSE.txt +29 -0
- package/vendor/transformer/cross-source-analysis-data.d.mts +3 -0
- package/vendor/transformer/cross-source-analysis-data.mjs +238 -0
- package/vendor/transformer/engine.d.mts +61 -0
- package/vendor/transformer/engine.mjs +445 -0
- package/vendor/transformer/profiles.mjs +309 -0
- package/vendor/transformer/research-semantics.mjs +1453 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.2.0 (not yet published)
|
|
4
|
+
|
|
5
|
+
Misconceptions and LabPath worlds by default:
|
|
6
|
+
|
|
7
|
+
- `qlm_misconceptions` gives each misconception's LabPath worlds with their names and public pages. `qlm_learning_graph` names every world in its answer the same way. A world gets a link only if it is in `data/labpath-worlds.json`, which `scripts/refresh-worlds.mjs` builds from the live world pages (100 of 100 checked on Oct 24, 2026).
|
|
8
|
+
- `assistance_inventory` on an ASSISTments file adds `assistments_requests_by_skill`: help requests on main problems, by the file's own skill labels (counts only, 15 most requested).
|
|
9
|
+
- An answer about some of the preprint's files lists only the cautions that apply to them.
|
|
10
|
+
- Four Claude skills ship in `skills/`, each ending on misconceptions and LabPath worlds.
|
|
11
|
+
|
|
12
|
+
Published as `@qlm/learnlog-mcp`, under QLM's npm account (it was `@quantumkumar/learnlog-mcp` before release).
|
|
13
|
+
|
|
14
|
+
A fourth format, `sandpiper`: the utterances CSV that Sandpiper, the National Tutoring Observatory's open-source annotation app, exports for a per-utterance run. `learnlog_formats` lists it stage by stage, and `learnlog_transform` and `assistance_inventory` accept it.
|
|
15
|
+
|
|
16
|
+
- One record per session, entries in `sequence_id` order. Each utterance is a dialogue turn; role and text are kept as the export has them, and start/end times stay unparsed strings.
|
|
17
|
+
- Annotation codes are kept as an annotator's inferred assertions. The inventory reports turns by role and counts codes by annotator and field, never as help. Every stage is not recorded.
|
|
18
|
+
- The bundled sample is SYNTHETIC, built from Sandpiper's documented example rows (MIT). There is no public NTO dataset in this package.
|
|
19
|
+
- Re-vendored the transformer from qlm-measure commit 68404b53d0584c9817346b83ee499a38b692adcd. Documents made by the previous engine still validate (tested with saved outputs), because existing formats keep their profile version, `qlm:assistance-context:0.1.0`; Sandpiper records bind `0.2.0`.
|
|
20
|
+
- Answers keep a member named `__proto__` as data instead of dropping it, since exported role and annotator names can be any text.
|
|
21
|
+
|
|
22
|
+
Two new read-only tools, which read QLM's public LabPath datasets (CC BY 4.0) from `https://play.quantumlearningmachines.com/api/labpath/dataset-export` with GET only, a timeout, no redirects and one request per dataset per session:
|
|
23
|
+
|
|
24
|
+
- `qlm_misconceptions`: searches the misconception dataset by words, domain, grade band or id. Evaluation-tier trigger patterns and diagnostic questions are never returned.
|
|
25
|
+
- `qlm_learning_graph`: what comes before or after a LabPath activity, from a mode id or a standard code, with teacher-facing reasons, linked misconception ids and aligned standards.
|
|
26
|
+
|
|
27
|
+
Every answer now fits what an assistant can take in at once (30,000 characters of JSON, under Claude Code's 10,000-token warning). Before this, two answers were far too large and Claude Code rejected them:
|
|
28
|
+
|
|
29
|
+
- `learnlog_transform` with `include_document` returns the whole document only when the answer fits. Otherwise it reports the document's size in `document_omitted`. A 91 KB tutoring export made a 1 MB document.
|
|
30
|
+
- `qlm_learning_graph` shows 10 links per direction by default (was 25), each edge's first 8 concepts (with `concepts_total`), full standards only for the asked-about activity and standard codes for linked ones (`linked_mode_standards`). If a limit still wouldn't fit, it is lowered and `limit_lowered` says so. The most it accepts is 50 (was 200).
|
|
31
|
+
- Any answer that still wouldn't fit is refused with its size and what to ask for instead.
|
|
32
|
+
|
|
33
|
+
## 0.1.0 (not yet published)
|
|
34
|
+
|
|
35
|
+
First release. Six read-only tools over stdio:
|
|
36
|
+
|
|
37
|
+
- `learnlog_formats`: the transformer's source formats and what each records at each of the six assistance stages.
|
|
38
|
+
- `learnlog_transform`: a local export, or a bundled public sample, into Learnlog records.
|
|
39
|
+
- `learnlog_validate`: replays a Learnlog file's hash chains and lists the unknowns each record keeps.
|
|
40
|
+
- `assistance_inventory`: what a dataset records about help, stage by stage, with counts and limits. Recomputes the Learnlog preprint's inventory and episode counts from your own copies of its three released datasets.
|
|
41
|
+
- `verify_evidence`: qlm-measure's verifier on a local evidence record or product hash chain.
|
|
42
|
+
- `verify_credential`: one request to app.qlmdev.com to verify a QLM credential.
|
|
43
|
+
|
|
44
|
+
Wraps, unchanged, the QLM transformer engine and the qlm-measure 0.9.0 verifier from qlm-measure commit 24419687cddf238030a918834fbb9ef079f2fc57. The preprint's counting rules are ported from its Python scripts and tested against them on the same files.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to the Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by the Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding any notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. Please also get specific
|
|
186
|
+
permission from your organization's legal counsel before applying
|
|
187
|
+
the license to work owned by your organization.
|
|
188
|
+
|
|
189
|
+
Copyright 2026 Quantum Learning Machines
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Learnlog MCP (@qlm/learnlog-mcp)
|
|
2
|
+
Copyright 2026 Quantum Learning Machines
|
|
3
|
+
|
|
4
|
+
This product includes software developed at Quantum Learning Machines
|
|
5
|
+
(https://quantumlearningmachines.com). It is licensed under the Apache
|
|
6
|
+
License, Version 2.0 (see LICENSE).
|
|
7
|
+
|
|
8
|
+
It includes, unchanged, files from the qlm-measure repository
|
|
9
|
+
(https://github.com/quantumlearningmachines/qlm-measure). vendor/PROVENANCE.json
|
|
10
|
+
names each file, its source path, the commit and its SHA-256.
|
|
11
|
+
|
|
12
|
+
- vendor/qlm-measure/: the qlm-measure 0.9.0 verifier build. Apache-2.0.
|
|
13
|
+
- vendor/transformer/: the QLM transformer engine. MIT; its license is in
|
|
14
|
+
vendor/transformer/LICENSE.txt and is kept with those files.
|
|
15
|
+
- data/samples/tutormoments-real-transcripts.jsonl and the TutorMoments
|
|
16
|
+
sample embedded in vendor/transformer/profiles.mjs: excerpts of
|
|
17
|
+
TutorMoments-Preview, Albert Zhang and colleagues, Ai2 and collaborators
|
|
18
|
+
(2026), https://huggingface.co/datasets/allenai/tutormoments-preview,
|
|
19
|
+
revision 3bb0c104d65e29facffca7ba864ef10fa22d0e78. CC BY 4.0.
|
|
20
|
+
- data/samples/oatutor-real-participants.csv and the OATutor sample embedded
|
|
21
|
+
in vendor/transformer/profiles.mjs: an excerpt of Pardos and Bhandari
|
|
22
|
+
(2023), https://doi.org/10.6084/m9.figshare.23935269.v1. CC BY 4.0.
|
|
23
|
+
- data/samples/explicit-assistance-SYNTHETIC.jsonl and data/examples/: QLM's
|
|
24
|
+
synthetic fixtures and test vectors. No learner data.
|
|
25
|
+
- data/samples/sandpiper-SYNTHETIC.csv and the Sandpiper sample embedded in
|
|
26
|
+
vendor/transformer/profiles.mjs: a SYNTHETIC fixture arranging example rows
|
|
27
|
+
from the documentation of Sandpiper,
|
|
28
|
+
https://github.com/National-Tutoring-Observatory/sandpiper, commit
|
|
29
|
+
28e0d25c069ce07c759d802184d4ab914e9cfe8b. MIT, Copyright (c) 2025 National
|
|
30
|
+
Tutoring Observatory; the license text is in data/THIRD_PARTY_DATA.md. No
|
|
31
|
+
NTO data and no learner data.
|
|
32
|
+
- data/preprint/ and vendor/transformer/cross-source-analysis-data.mjs:
|
|
33
|
+
aggregate counts published with the Learnlog preprint. No learner rows.
|
|
34
|
+
|
|
35
|
+
qlm_misconceptions and qlm_learning_graph read, at run time and without
|
|
36
|
+
bundling them, the LabPath misconception, learning-graph and standards
|
|
37
|
+
datasets: QLM LabPath Dataset v1.0, Quantum Learning Machines, 2026, CC BY 4.0,
|
|
38
|
+
https://play.quantumlearningmachines.com/api/labpath/dataset-export, archived
|
|
39
|
+
as https://doi.org/10.5281/zenodo.21800324.
|
|
40
|
+
|
|
41
|
+
The selection, attribution and limits of each excerpt are in
|
|
42
|
+
data/THIRD_PARTY_DATA.md and data/provenance/. No source author endorses this
|
|
43
|
+
software.
|
package/README.md
CHANGED
|
@@ -1,3 +1,122 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Learnlog MCP
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Ask your AI assistant what learning records actually show about help, and get an answer you can check.
|
|
4
|
+
|
|
5
|
+
Learnlog MCP is a server for the Model Context Protocol (MCP), the standard way assistants like Claude call outside tools. It reads learning records in [Learnlog](https://datatracker.ietf.org/doc/draft-srivastava-learnlog/), a draft format for recording assistance, and answers questions about them. It also searches QLM's public misconception dataset and LabPath's learning graph. Every answer says what it can't show.
|
|
6
|
+
|
|
7
|
+
Learnlog keeps six kinds of help apart, from the Internet-Draft draft-srivastava-learnlog-03, Section 2.2:
|
|
8
|
+
|
|
9
|
+
| Stage | What it records |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| requested | someone asked for help |
|
|
12
|
+
| offered | a system or person started help on its own, like steps after a wrong answer |
|
|
13
|
+
| generated | a system produced help content |
|
|
14
|
+
| transmitted | help was sent somewhere |
|
|
15
|
+
| displayed | help was shown on a screen |
|
|
16
|
+
| accepted | the learner took the action the product calls accepting help |
|
|
17
|
+
|
|
18
|
+
Each stage is its own observation. A request doesn't mean help was shown, and a display doesn't mean it was read. A stage that wasn't captured is "not recorded", never "none".
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
You need Node.js 22.12 or later.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
npx -y @qlm/learnlog-mcp
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Claude Desktop
|
|
29
|
+
|
|
30
|
+
Add this to `claude_desktop_config.json` (Settings, Developer, Edit Config), then restart Claude Desktop:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"mcpServers": {
|
|
35
|
+
"learnlog": {
|
|
36
|
+
"command": "npx",
|
|
37
|
+
"args": ["-y", "@qlm/learnlog-mcp"]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Any MCP client that can start a command over stdio works the same way.
|
|
44
|
+
|
|
45
|
+
## Tools
|
|
46
|
+
|
|
47
|
+
All eight are read-only. Paths are full paths on your computer (or start with `~/`).
|
|
48
|
+
|
|
49
|
+
**`learnlog_formats`** lists the exports the transformer converts and what each one records at each stage.
|
|
50
|
+
> "Which exports can Learnlog MCP convert, and what does each one record about help?"
|
|
51
|
+
|
|
52
|
+
There are four formats: `tutormoments` (TutorMoments transcripts), `oatutor` (OATutor participant summaries), `explicit-assistance-events` (an explicit help-lifecycle contract) and `sandpiper` (the utterances CSV that Sandpiper, the National Tutoring Observatory's annotation app, exports for a per-utterance run). For Sandpiper, each utterance is a dialogue turn, and each annotation code is kept as an annotator's inferred assertion. No code counts as help, so every stage is not recorded. The lifecycle and Sandpiper samples are SYNTHETIC; the Sandpiper one is built from Sandpiper's documented examples, not NTO data.
|
|
53
|
+
|
|
54
|
+
**`learnlog_transform`** turns an export into Learnlog records, keeping source and capture details. Use your own file, or `use_sample: true` for a bundled public sample.
|
|
55
|
+
> "Turn the TutorMoments sample into Learnlog and tell me what it keeps and what it leaves unknown."
|
|
56
|
+
|
|
57
|
+
**`learnlog_validate`** replays a Learnlog file's hash chains, checks its profile bindings, and lists the unknowns each record keeps.
|
|
58
|
+
> "Is ~/exports/session.learnlog.json a valid Learnlog file? What doesn't it record?"
|
|
59
|
+
|
|
60
|
+
**`assistance_inventory`** says which stages a dataset records, with counts by source and what can't be concluded.
|
|
61
|
+
> "What does this tutoring dataset actually record about help?"
|
|
62
|
+
|
|
63
|
+
It can also recompute the inventory and episode counts in the Learnlog preprint, *Preserving assistance meaning in cross-source learning analytics*, from your own copies of its three released datasets. When your files are the exact releases the preprint used, it checks every number against the published ones. With no input, it returns the published figures and says they weren't recomputed.
|
|
64
|
+
|
|
65
|
+
| Argument | Dataset | Where to get it |
|
|
66
|
+
| --- | --- | --- |
|
|
67
|
+
| `zenodo_zip` | JetBrains Academy next-step hint study, Zenodo 17551130 v1 | [zenodo.org/records/17551130](https://zenodo.org/records/17551130) |
|
|
68
|
+
| `idetrace_json` | TutorTrace / IDETrace deployment 8 (needs `allow_idetrace_research: true`) | [the pinned repository commit](https://github.com/divadbaroon/TutorTrace_dataset_and_benchmark/tree/bc7990370da18a611a122255ebc3e475bd8a3fc6) |
|
|
69
|
+
| `assistments_csv` | ASSISTments 2012-13 School Data with Affect | [ASSISTments datasets](https://sites.google.com/site/assistmentsdata/datasets/2012-13-school-data-with-affect) |
|
|
70
|
+
|
|
71
|
+
These datasets aren't bundled. Their learner records stay with their owners, and only counts come back. The ASSISTments file is about 3 GB. Reading it took about 70 seconds in testing, so a client with a short tool timeout may give up first.
|
|
72
|
+
|
|
73
|
+
**`verify_evidence`** replays a local evidence record or product hash chain with qlm-measure's own verifier and returns pass, or each named check that failed.
|
|
74
|
+
> "Can I trust this evidence record? ~/Downloads/record.json"
|
|
75
|
+
|
|
76
|
+
**`verify_credential`** checks a QLM credential with QLM's verify service. Give its ID (`urn:uuid:...`) or a link that contains one.
|
|
77
|
+
> "Is this credential real and current? urn:uuid:<the ID on the badge>"
|
|
78
|
+
|
|
79
|
+
It returns whether the credential verified, each check with its result, the issuer, the achievement, the date and the AI-help summary by stage. The service's report has no personal data, and the tool shows only the fields it knows.
|
|
80
|
+
|
|
81
|
+
**`qlm_misconceptions`** searches QLM's public misconception dataset by words, domain, grade band or id. Each result gives the student's belief, the scientific reality, a counterexample, a teacher intervention, the research source, severity, grade bands and the LabPath worlds that work on it, each with its name and public page.
|
|
82
|
+
> "Which misconception might explain students passing force problems only with hints, and what should the teacher try?"
|
|
83
|
+
|
|
84
|
+
Evaluation-tier records never include their trigger patterns or diagnostic question; they're kept back for benchmark integrity. Held-out records aren't in the dataset at all.
|
|
85
|
+
|
|
86
|
+
**`qlm_learning_graph`** says what comes before or after a LabPath activity, from a mode id or a standard code. It returns each link's kind (prerequisite, labpath-sequence, reinforcement, transfer, extension), the teacher-facing reason, its first 8 concepts, the misconception ids it carries, the full standards for the activity you asked about, and the standard codes of each linked activity. It shows 10 links per direction unless you ask for more, and names every world in the answer with its public page.
|
|
87
|
+
> "What should students do before the forces activity, and which standards does it cover?"
|
|
88
|
+
|
|
89
|
+
The graph is LabPath's designed sequence, not evidence that a student needs a step. The standards are LabPath's own mapping to NGSS-style codes.
|
|
90
|
+
|
|
91
|
+
Both read [QLM's LabPath dataset export](https://play.quantumlearningmachines.com/api/labpath/dataset-export?dataset=misconceptions), CC BY 4.0, once per session. The archived v1.0 is [QLM LabPath Dataset v1.0 on Zenodo](https://doi.org/10.5281/zenodo.21800324).
|
|
92
|
+
|
|
93
|
+
## Skills
|
|
94
|
+
|
|
95
|
+
The package ships four Claude skills in `skills/`. Each walks an assistant through one workflow and ends the same way: the likely QLM misconceptions, one way to check for each, its teacher move, and the LabPath worlds that work on it, with their links.
|
|
96
|
+
|
|
97
|
+
- **`learnlog-export-to-action`**: any supported export to Learnlog, what it records about help stage by stage, and what it can't show.
|
|
98
|
+
- **`learnlog-assistments`**: your own copy of ASSISTments 2012-13 School Data with Affect, counted stage by stage and by the file's skill labels. Counts only.
|
|
99
|
+
- **`learnlog-nto-sandpiper`**: a National Tutoring Observatory Sandpiper run export. Turns stay observed; every code stays inferred, with who coded it.
|
|
100
|
+
- **`learnlog-learning-commons`**: with the Learning Commons Knowledge Graph MCP beside this one, a standard's official statement, learning components and earlier standards.
|
|
101
|
+
|
|
102
|
+
In Claude Code, copy a skill's folder into `.claude/skills/`.
|
|
103
|
+
|
|
104
|
+
## What it never does
|
|
105
|
+
|
|
106
|
+
- It never writes, changes or uploads anything. It doesn't change records, scores or credentials.
|
|
107
|
+
- Five tools read local files only and make no network calls.
|
|
108
|
+
- `verify_credential` makes one request, to `https://app.qlmdev.com/v1/verify`, sending only the credential ID. It follows no redirects.
|
|
109
|
+
- `qlm_misconceptions` and `qlm_learning_graph` make GET requests to `https://play.quantumlearningmachines.com/api/labpath/dataset-export` only, one per dataset per session, and send nothing about you or your files. They follow no redirects.
|
|
110
|
+
- It never shows sealed content, such as answer keys or sealed case variants.
|
|
111
|
+
- It never turns "not recorded" into "none" or zero.
|
|
112
|
+
- It doesn't estimate learning or say whether help worked.
|
|
113
|
+
|
|
114
|
+
## Where the code comes from
|
|
115
|
+
|
|
116
|
+
The transformer engine and the qlm-measure 0.9.0 verifier are copied unchanged from [qlm-measure](https://github.com/quantumlearningmachines/qlm-measure). `vendor/PROVENANCE.json` lists every copied file with its source path, commit and SHA-256. The preprint's counting rules are ported from its published Python scripts, and the tests run both on the same files and require identical output.
|
|
117
|
+
|
|
118
|
+
## License
|
|
119
|
+
|
|
120
|
+
Apache-2.0. See `LICENSE` and `NOTICE`. The vendored transformer files keep their MIT license (`vendor/transformer/LICENSE.txt`). The TutorMoments and OATutor sample excerpts are CC BY 4.0; their attribution and limits are in `data/THIRD_PARTY_DATA.md`. The SYNTHETIC Sandpiper sample uses Sandpiper's documentation examples, MIT, Copyright (c) 2025 National Tutoring Observatory; the notice is in `data/THIRD_PARTY_DATA.md`. The LabPath misconception, learning-graph and standards data are CC BY 4.0 from Quantum Learning Machines; they're read from QLM's service, not bundled. Cite them as: QLM LabPath Dataset v1.0, Quantum Learning Machines, 2026, https://doi.org/10.5281/zenodo.21800324.
|
|
121
|
+
|
|
122
|
+
Made by Kumar Srivastava at [Quantum Learning Machines](https://quantumlearningmachines.com).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Sample authenticity correction — 17 October 2026
|
|
2
|
+
|
|
3
|
+
The first public demo used six authored synthetic rows with generic headers under Khan Academy, IXL, DreamBox Math and ALEKS. Its MATHia example used documented Progress Report headers with invented values. These fixtures did not establish vendor export compatibility. Internal transformation tests did not validate vendor authenticity.
|
|
4
|
+
|
|
5
|
+
This release removes all five branded examples and their downloadable synthetic fixtures. It uses two explicitly named public research sources: TutorMoments human tutoring transcripts and OATutor participant summaries. Their original inputs have different, preserved structures. Public samples are exact-byte excerpts with pinned source locations, full-file and excerpt hashes, selection rules and license attribution.
|
|
6
|
+
|
|
7
|
+
TutorMoments source turns contain actual released student/tutor dialogue, including requests for help and tutor questions. They are machine-produced transcripts of real sessions, not native clickstream logs or independently verified recordings. No generated enrichment is promoted to an observed event. OATutor condition assignment is retained as assignment, not hint delivery. Import times are identified as import times; relative source offsets are not converted into invented dates.
|
|
8
|
+
|
|
9
|
+
This is a source-adapter demonstration. It does not establish integration with the original five vendors, comparable outcome scales, learning effectiveness, independent learner performance or valid causal pooling.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Published research data and attribution
|
|
2
|
+
|
|
3
|
+
The application's MIT code license does not relicense these data. Both supplied
|
|
4
|
+
research excerpts are distributed under the publishers' **CC BY 4.0** grants.
|
|
5
|
+
The Sandpiper fixture is synthetic and carries Sandpiper's MIT notice. The original
|
|
6
|
+
publisher-deidentified data, citations, source restrictions and selection rules
|
|
7
|
+
are documented in each `dist/provenance/*.json` file. No original recording,
|
|
8
|
+
private export or personal identity mapping is included.
|
|
9
|
+
|
|
10
|
+
## TutorMoments-Preview
|
|
11
|
+
|
|
12
|
+
Albert Zhang and colleagues, *When Help is Unhelpful: Evaluating AI Tutors for
|
|
13
|
+
Productive Struggle* (2026 preview release). Ai2 and collaborators.
|
|
14
|
+
|
|
15
|
+
- Dataset: https://huggingface.co/datasets/allenai/tutormoments-preview
|
|
16
|
+
- Pinned revision: `3bb0c104d65e29facffca7ba864ef10fa22d0e78`
|
|
17
|
+
- Paper: https://tutormoments.allen.ai/static/paper/tutormoments-preview.pdf
|
|
18
|
+
- License: https://creativecommons.org/licenses/by/4.0/
|
|
19
|
+
- Supplied excerpt: complete `transcripts.jsonl` source lines 366 and 435,
|
|
20
|
+
unchanged, with 149 and 161 turns respectively.
|
|
21
|
+
|
|
22
|
+
These are transcripts of real human tutoring sessions, machine-transcribed by
|
|
23
|
+
SUT (Gemini 2.5 Pro). The provider is anonymized. Publisher-generated surrogate
|
|
24
|
+
names/IDs are retained in the source excerpt. Absolute dates were removed by
|
|
25
|
+
the publisher. Relative offsets, transcript inaccuracies and source text are
|
|
26
|
+
not independently checked against a recording. The selected sessions contain
|
|
27
|
+
mathematics practice, explicit requests for help and tutor prompts; this is a
|
|
28
|
+
purposive demonstration subset, not a representative sample or quality rating.
|
|
29
|
+
|
|
30
|
+
Only released `turns[]` are mapped to observed transcript turns. Model-generated
|
|
31
|
+
`enrichments`, replay conversations and pedagogical labels are not promoted to
|
|
32
|
+
observed events. The Learnlog adapter omits known source ID fields from its
|
|
33
|
+
selected source-field payload and uses scoped pseudonyms; it is not a general
|
|
34
|
+
anonymizer for free text.
|
|
35
|
+
|
|
36
|
+
The companion scaffolding view uses exact original `ground_truth.jsonl` lines
|
|
37
|
+
157 and 190 and 14 complete original lines from `annotations.jsonl`, at the same
|
|
38
|
+
pinned revision and CC BY 4.0 license. The 60 included derived scaffolding rows'
|
|
39
|
+
situation/action/result strings match the raw human annotation release
|
|
40
|
+
verbatim. Their categorical need and action-direction labels are the source
|
|
41
|
+
publisher's LLM-assisted classifications, not new QLM classifications or
|
|
42
|
+
validated facts about assistance effectiveness. Sixty rows repeat labels for
|
|
43
|
+
ten distinct, sometimes overlapping intervals; each interval is counted once.
|
|
44
|
+
One raw human moment omitted by the publisher's derived release is not silently
|
|
45
|
+
added to the derived-label denominator. Source commentary can discuss context
|
|
46
|
+
beyond its marked interval, so the interval is not an exact assistance-event
|
|
47
|
+
boundary. `dist/provenance/scaffolding-evidence.json` records the source hashes,
|
|
48
|
+
line locators, labels, commentary and selection limits.
|
|
49
|
+
|
|
50
|
+
## OATutor help-condition study participant data
|
|
51
|
+
|
|
52
|
+
Zachary Pardos and Shreya Bhandari (2023), *ChatGPT-generated help produces
|
|
53
|
+
learning gains equivalent to human tutors on mathematics skills*, Figshare
|
|
54
|
+
dataset. The associated research article was published in PLOS ONE in 2024.
|
|
55
|
+
|
|
56
|
+
- Paper: https://doi.org/10.1371/journal.pone.0304013
|
|
57
|
+
- Archived dataset: https://doi.org/10.6084/m9.figshare.23935269.v1
|
|
58
|
+
- Original file: https://ndownloader.figshare.com/files/41974569
|
|
59
|
+
- License: https://creativecommons.org/licenses/by/4.0/
|
|
60
|
+
- Supplied excerpt: original CSV header and first 12 participant records,
|
|
61
|
+
unchanged, with original column names and CRLF newlines.
|
|
62
|
+
|
|
63
|
+
This is a participant-level results table, not an event log. `condition` records
|
|
64
|
+
assigned ChatGPT, human-tutor or no-hint support; it does not establish actual
|
|
65
|
+
hint opening or receipt. The raw “Human tutor” condition refers to
|
|
66
|
+
human-authored hints, while “ChatGPT” refers to pre-generated solution hints;
|
|
67
|
+
these are not recordings of live tutor conversations. The paper reports correctness feedback and optional
|
|
68
|
+
bottom-out answers in the no-hint condition too; this label does not mean no
|
|
69
|
+
assistance. No timestamp, inquiry, hint text or event sequence is
|
|
70
|
+
supplied by that table. No learning effect is estimated by the demonstration.
|
|
71
|
+
|
|
72
|
+
## Sandpiper documentation examples: SYNTHETIC fixture (MIT)
|
|
73
|
+
|
|
74
|
+
`dist/samples/sandpiper-SYNTHETIC.csv` is a SYNTHETIC fixture, not research
|
|
75
|
+
data. It arranges eight example utterances and one example annotation from the
|
|
76
|
+
documentation of Sandpiper, the National Tutoring Observatory's open-source
|
|
77
|
+
annotation app (<https://github.com/National-Tutoring-Observatory/sandpiper>,
|
|
78
|
+
commit `28e0d25c069ce07c759d802184d4ab914e9cfe8b`), in the layout of
|
|
79
|
+
Sandpiper's PER_UTTERANCE utterances CSV (`app/functions/outputRunDataToCSV`).
|
|
80
|
+
QLM did the arranging. There is no public National Tutoring Observatory dataset
|
|
81
|
+
here: no real learner, session or Sandpiper export is included. The adapter
|
|
82
|
+
keeps each utterance as an observed dialogue turn and each annotation code as an
|
|
83
|
+
inferred assertion by its annotator; no code is counted as help. The engine
|
|
84
|
+
offers this adapter to callers such as the Learnlog MCP; the demo page does not
|
|
85
|
+
list it.
|
|
86
|
+
|
|
87
|
+
> MIT License
|
|
88
|
+
>
|
|
89
|
+
> Copyright (c) 2025 National Tutoring Observatory
|
|
90
|
+
>
|
|
91
|
+
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
92
|
+
> of this software and associated documentation files (the "Software"), to deal
|
|
93
|
+
> in the Software without restriction, including without limitation the rights
|
|
94
|
+
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
95
|
+
> copies of the Software, and to permit persons to whom the Software is
|
|
96
|
+
> furnished to do so, subject to the following conditions:
|
|
97
|
+
>
|
|
98
|
+
> The above copyright notice and this permission notice shall be included in all
|
|
99
|
+
> copies or substantial portions of the Software.
|
|
100
|
+
>
|
|
101
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
102
|
+
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
103
|
+
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
104
|
+
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
105
|
+
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
106
|
+
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
107
|
+
> SOFTWARE.
|
|
108
|
+
|
|
109
|
+
## Separate cross-source request analysis: aggregate facts only
|
|
110
|
+
|
|
111
|
+
The cross-source panel adds **1,050** released Get Hint/Retry observations from
|
|
112
|
+
the JetBrains Academy plugin supplement to **59** `CHAT_QUERY` observations in
|
|
113
|
+
the selected TutorTrace / IDETrace deployment-8 file. These are source-native
|
|
114
|
+
request-record occurrences, not verified distinct human requests, pedagogical
|
|
115
|
+
quality labels or a complete assistance census. No raw learner rows, dialogue,
|
|
116
|
+
prompts, source-code payloads, event timestamps or linkable learner IDs from
|
|
117
|
+
these two additional releases are bundled with the website or its download.
|
|
118
|
+
|
|
119
|
+
JetBrains Academy supplement: Anastasiia Birillo, Aleksei Rostovskii, Yaroslav
|
|
120
|
+
Golubev and Hieke Keuning (2025), *Supplementary materials for the paper
|
|
121
|
+
“Understanding Student Interaction with AI-Powered Next-Step Hints: Strategies
|
|
122
|
+
and Challenges”*, v1, https://doi.org/10.5281/zenodo.17551130, CC BY 4.0. QLM
|
|
123
|
+
authored the transformations; no source-author endorsement is implied.
|
|
124
|
+
|
|
125
|
+
TutorTrace repository: `divadbaroon/TutorTrace_dataset_and_benchmark`, commit
|
|
126
|
+
`bc7990370da18a611a122255ebc3e475bd8a3fc6`, selected
|
|
127
|
+
`dataset/raw_telemetry/deployment_8.json`:
|
|
128
|
+
https://github.com/divadbaroon/TutorTrace_dataset_and_benchmark/tree/bc7990370da18a611a122255ebc3e475bd8a3fc6.
|
|
129
|
+
Its pinned `croissant.json` declares CC BY 4.0 with an anonymous creator. The
|
|
130
|
+
pinned datasheet is empty, GitHub reports no repository license, and published
|
|
131
|
+
population descriptions differ. No verified learner count, broad license-scope
|
|
132
|
+
claim or permission to redistribute the raw payload is inferred. The prepared
|
|
133
|
+
analysis distributes aggregate factual counts only. Source retrieval for
|
|
134
|
+
research reproduction requires the companion pipeline's explicit opt-in.
|
|
135
|
+
|
|
136
|
+
The generated `dist/examples/cross-source-analysis.json` retains source hashes,
|
|
137
|
+
release scopes, mappings, exclusions and metadata caveats. Candidate mappings
|
|
138
|
+
are agent-authored and agent-audited; independent human mapping review remains
|
|
139
|
+
pending. Raw source inputs and cached third-party code are excluded from the
|
|
140
|
+
prepared analysis archive.
|
|
141
|
+
|
|
142
|
+
## Original five branded examples
|
|
143
|
+
|
|
144
|
+
The original Khan Academy, MATHia, IXL, DreamBox Math and ALEKS synthetic
|
|
145
|
+
examples have been removed. They did not establish authentic vendor export
|
|
146
|
+
compatibility. See `SOURCE_CORRECTION.md`. No replacement dataset is relabeled
|
|
147
|
+
as one of those vendors. ASSISTments, DataShop and other investigated sources
|
|
148
|
+
are not bundled without established redistribution rights.
|