@learncard/credential-library 2.0.5 → 2.1.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/README.md +30 -1
- package/SOURCES.md +63 -0
- package/dist/credential-library.cjs.development.js +1577 -32
- package/dist/credential-library.cjs.development.js.map +4 -4
- package/dist/credential-library.cjs.production.min.js +3 -3
- package/dist/credential-library.cjs.production.min.js.map +4 -4
- package/dist/credential-library.esm.js +1563 -18
- package/dist/credential-library.esm.js.map +4 -4
- package/dist/fixtures/clr/military-comprehensive-record.d.ts +4 -0
- package/dist/fixtures/clr/military-comprehensive-record.d.ts.map +1 -0
- package/dist/fixtures/clr/mixed-role-portfolio.d.ts +3 -0
- package/dist/fixtures/clr/mixed-role-portfolio.d.ts.map +1 -0
- package/dist/fixtures/custom/course-enrollment.d.ts +3 -0
- package/dist/fixtures/custom/course-enrollment.d.ts.map +1 -0
- package/dist/fixtures/custom/exam-accommodation.d.ts +3 -0
- package/dist/fixtures/custom/exam-accommodation.d.ts.map +1 -0
- package/dist/fixtures/index.d.ts +16 -1
- package/dist/fixtures/index.d.ts.map +1 -1
- package/dist/fixtures/obv3/food-allergen-facilitator.d.ts +3 -0
- package/dist/fixtures/obv3/food-allergen-facilitator.d.ts.map +1 -0
- package/dist/fixtures/obv3/food-allergen-practice-fr.d.ts +3 -0
- package/dist/fixtures/obv3/food-allergen-practice-fr.d.ts.map +1 -0
- package/dist/fixtures/obv3/food-allergen-practice.d.ts +3 -0
- package/dist/fixtures/obv3/food-allergen-practice.d.ts.map +1 -0
- package/dist/fixtures/obv3/phishing-transfer.d.ts +3 -0
- package/dist/fixtures/obv3/phishing-transfer.d.ts.map +1 -0
- package/dist/fixtures/obv3/qualification-apprenticeship.d.ts +3 -0
- package/dist/fixtures/obv3/qualification-apprenticeship.d.ts.map +1 -0
- package/dist/fixtures/obv3/qualification-badge-override.d.ts +3 -0
- package/dist/fixtures/obv3/qualification-badge-override.d.ts.map +1 -0
- package/dist/fixtures/obv3/qualification-certification.d.ts +3 -0
- package/dist/fixtures/obv3/qualification-certification.d.ts.map +1 -0
- package/dist/fixtures/obv3/qualification-expired.d.ts +3 -0
- package/dist/fixtures/obv3/qualification-expired.d.ts.map +1 -0
- package/dist/fixtures/obv3/qualification-journeyman.d.ts +3 -0
- package/dist/fixtures/obv3/qualification-journeyman.d.ts.map +1 -0
- package/dist/fixtures/obv3/qualification-license.d.ts +3 -0
- package/dist/fixtures/obv3/qualification-license.d.ts.map +1 -0
- package/dist/fixtures/obv3/qualification-master.d.ts +3 -0
- package/dist/fixtures/obv3/qualification-master.d.ts.map +1 -0
- package/package.json +7 -6
- package/src/__tests__/curated-examples.test.ts +248 -0
- package/src/__tests__/issuance.test.ts +35 -0
- package/src/fixtures/clr/military-comprehensive-record.ts +155 -0
- package/src/fixtures/clr/mixed-role-portfolio.ts +490 -0
- package/src/fixtures/custom/course-enrollment.ts +56 -0
- package/src/fixtures/custom/exam-accommodation.ts +56 -0
- package/src/fixtures/index.ts +49 -0
- package/src/fixtures/obv3/food-allergen-facilitator.ts +108 -0
- package/src/fixtures/obv3/food-allergen-practice-fr.ts +107 -0
- package/src/fixtures/obv3/food-allergen-practice.ts +105 -0
- package/src/fixtures/obv3/phishing-transfer.ts +163 -0
- package/src/fixtures/obv3/qualification-apprenticeship.ts +58 -0
- package/src/fixtures/obv3/qualification-badge-override.ts +64 -0
- package/src/fixtures/obv3/qualification-certification.ts +59 -0
- package/src/fixtures/obv3/qualification-expired.ts +59 -0
- package/src/fixtures/obv3/qualification-journeyman.ts +58 -0
- package/src/fixtures/obv3/qualification-license.ts +58 -0
- package/src/fixtures/obv3/qualification-master.ts +58 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import type { UnsignedVC } from '@learncard/types';
|
|
2
|
+
import type { CredentialFixture } from '../../types';
|
|
3
|
+
import { clrMilitaryTrainingRecord } from './military-training-record';
|
|
4
|
+
|
|
5
|
+
const base = structuredClone(clrMilitaryTrainingRecord.credential);
|
|
6
|
+
const subject = base.credentialSubject as { id: string; verifiableCredential: UnsignedVC[] };
|
|
7
|
+
const context = [
|
|
8
|
+
'https://www.w3.org/ns/credentials/v2',
|
|
9
|
+
'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
|
|
10
|
+
];
|
|
11
|
+
const issuer = {
|
|
12
|
+
id: 'did:example:meridian-qualifications',
|
|
13
|
+
type: ['Profile'],
|
|
14
|
+
name: 'Meridian Qualifications Board (Fictional)',
|
|
15
|
+
};
|
|
16
|
+
const evaluationIssuer = {
|
|
17
|
+
id: 'did:example:meridian-assessment',
|
|
18
|
+
type: ['Profile'],
|
|
19
|
+
name: 'Meridian Independent Assessments (Fictional)',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** Synthetic unsigned renderer fixture. No real service, rank, or equivalence claims. */
|
|
23
|
+
export const clrMilitaryComprehensiveRecord: CredentialFixture = {
|
|
24
|
+
...clrMilitaryTrainingRecord,
|
|
25
|
+
id: 'clr/military-comprehensive-record',
|
|
26
|
+
name: 'Military Training and Qualifications — Comprehensive',
|
|
27
|
+
description:
|
|
28
|
+
'Six source-backed children covering training, fieldwork, award, competency, assessment, and qualification with distinct issuers.',
|
|
29
|
+
tags: [...(clrMilitaryTrainingRecord.tags ?? []), 'lc-2215'],
|
|
30
|
+
credential: {
|
|
31
|
+
...base,
|
|
32
|
+
id: 'urn:uuid:7293fe71-4b24-4428-9f6f-60923687184c',
|
|
33
|
+
name: 'Military Training and Qualifications — Comprehensive',
|
|
34
|
+
credentialSubject: {
|
|
35
|
+
...subject,
|
|
36
|
+
verifiableCredential: [
|
|
37
|
+
...subject.verifiableCredential,
|
|
38
|
+
{
|
|
39
|
+
'@context': context,
|
|
40
|
+
id: 'urn:uuid:89a65d6b-3d7b-43f9-a545-82979d22b874',
|
|
41
|
+
type: ['VerifiableCredential', 'AchievementCredential'],
|
|
42
|
+
issuer: evaluationIssuer,
|
|
43
|
+
validFrom: '2026-03-01T12:00:00Z',
|
|
44
|
+
credentialSubject: {
|
|
45
|
+
id: subject.id,
|
|
46
|
+
type: ['AchievementSubject'],
|
|
47
|
+
achievement: {
|
|
48
|
+
id: 'urn:uuid:e6b5c726-4f43-4cec-8099-fd5d476c91c0',
|
|
49
|
+
type: ['Achievement'],
|
|
50
|
+
achievementType: 'Competency',
|
|
51
|
+
name: 'Safe logistics coordination',
|
|
52
|
+
description:
|
|
53
|
+
'Demonstrated coordination in a fictional training exercise.',
|
|
54
|
+
criteria: {
|
|
55
|
+
narrative: 'Explain and demonstrate the supplied safety checklist.',
|
|
56
|
+
},
|
|
57
|
+
alignment: [
|
|
58
|
+
{
|
|
59
|
+
type: ['Alignment'],
|
|
60
|
+
targetName: 'Safe coordination',
|
|
61
|
+
targetUrl: 'https://skills.example/safe-coordination',
|
|
62
|
+
targetCode: 'SAFE-101',
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
evidence: [
|
|
68
|
+
{
|
|
69
|
+
type: ['Evidence'],
|
|
70
|
+
name: 'Observation notes',
|
|
71
|
+
narrative:
|
|
72
|
+
'The learner demonstrated the checklist in a supervised simulation.',
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
'@context': context,
|
|
78
|
+
id: 'urn:uuid:676e976f-0e91-4c4c-a2d4-1cac83672875',
|
|
79
|
+
type: ['VerifiableCredential', 'AchievementCredential'],
|
|
80
|
+
issuer: evaluationIssuer,
|
|
81
|
+
validFrom: '2026-03-02T12:00:00Z',
|
|
82
|
+
credentialSubject: {
|
|
83
|
+
id: subject.id,
|
|
84
|
+
type: ['AchievementSubject'],
|
|
85
|
+
achievement: {
|
|
86
|
+
id: 'urn:uuid:027361d1-5945-4292-85a6-2d8204b3e876',
|
|
87
|
+
type: ['Achievement'],
|
|
88
|
+
achievementType: 'Assessment',
|
|
89
|
+
name: 'Coordination knowledge assessment',
|
|
90
|
+
description: 'Synthetic knowledge assessment.',
|
|
91
|
+
criteria: { narrative: 'Answer the scenario questions.' },
|
|
92
|
+
resultDescription: [
|
|
93
|
+
{
|
|
94
|
+
id: 'urn:uuid:3b6af4be-5b0f-44f1-9d58-a8f8bd1a2877',
|
|
95
|
+
type: ['ResultDescription'],
|
|
96
|
+
name: 'Knowledge score',
|
|
97
|
+
resultType: 'RawScore',
|
|
98
|
+
valueMin: '0',
|
|
99
|
+
valueMax: '100',
|
|
100
|
+
requiredValue: '70',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
result: [
|
|
105
|
+
{
|
|
106
|
+
type: ['Result'],
|
|
107
|
+
resultDescription: 'urn:uuid:3b6af4be-5b0f-44f1-9d58-a8f8bd1a2877',
|
|
108
|
+
value: '86',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
'@context': context,
|
|
115
|
+
id: 'urn:uuid:492bb221-9dca-46a4-bce1-205537633878',
|
|
116
|
+
type: ['VerifiableCredential', 'AchievementCredential'],
|
|
117
|
+
issuer,
|
|
118
|
+
awardedDate: '2026-03-03T12:00:00Z',
|
|
119
|
+
validFrom: '2026-04-01T12:00:00Z',
|
|
120
|
+
validUntil: '2027-04-01T12:00:00Z',
|
|
121
|
+
credentialSubject: {
|
|
122
|
+
id: subject.id,
|
|
123
|
+
type: ['AchievementSubject'],
|
|
124
|
+
licenseNumber: 'SYN-LOG-2048',
|
|
125
|
+
achievement: {
|
|
126
|
+
id: 'urn:uuid:8067ec9d-6fae-41f0-aa5f-6356f7a96879',
|
|
127
|
+
type: ['Achievement'],
|
|
128
|
+
achievementType: 'License',
|
|
129
|
+
name: 'Simulated logistics qualification',
|
|
130
|
+
description: 'Fictional qualification for display testing only.',
|
|
131
|
+
criteria: {
|
|
132
|
+
narrative:
|
|
133
|
+
'Demonstrate the training objectives and complete the assessment.',
|
|
134
|
+
},
|
|
135
|
+
otherIdentifier: [
|
|
136
|
+
{
|
|
137
|
+
type: 'IdentifierEntry',
|
|
138
|
+
identifier: 'SYN-QUAL-48',
|
|
139
|
+
identifierType: 'identifier',
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
evidence: [
|
|
145
|
+
{
|
|
146
|
+
type: ['Evidence'],
|
|
147
|
+
name: 'Qualification review',
|
|
148
|
+
narrative: 'Synthetic review of training and assessment evidence.',
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
};
|
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
import { UnsignedClrCredentialValidator } from '@learncard/types';
|
|
2
|
+
|
|
3
|
+
import type { CredentialFixture } from '../../types';
|
|
4
|
+
|
|
5
|
+
// Example corpus provenance and alignment attribution: ../../../SOURCES.md.
|
|
6
|
+
export const clrMixedRolePortfolio: CredentialFixture = {
|
|
7
|
+
id: 'clr/mixed-role-portfolio',
|
|
8
|
+
name: 'Quadratic Modeling and Statistical Sampling Portfolio',
|
|
9
|
+
description:
|
|
10
|
+
'CLR collection with two learner assessments, one instructor assessment, and scalar Association types.',
|
|
11
|
+
spec: 'clr-v2',
|
|
12
|
+
profile: 'learner-record',
|
|
13
|
+
features: [
|
|
14
|
+
'evidence',
|
|
15
|
+
'alignment',
|
|
16
|
+
'results',
|
|
17
|
+
'expiration',
|
|
18
|
+
'associations',
|
|
19
|
+
'nested-credentials',
|
|
20
|
+
],
|
|
21
|
+
source: 'synthetic',
|
|
22
|
+
signed: false,
|
|
23
|
+
validity: 'valid',
|
|
24
|
+
validator: UnsignedClrCredentialValidator,
|
|
25
|
+
tags: ['portfolio', 'mixed-role', 'canonical-associations', 'achievement-ids'],
|
|
26
|
+
|
|
27
|
+
credential: {
|
|
28
|
+
'@context': [
|
|
29
|
+
'https://www.w3.org/ns/credentials/v2',
|
|
30
|
+
'https://purl.imsglobal.org/spec/clr/v2p0/context.json',
|
|
31
|
+
'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
|
|
32
|
+
],
|
|
33
|
+
id: 'urn:uuid:47213155-4246-5f73-bcf4-54776e488e21',
|
|
34
|
+
type: ['VerifiableCredential', 'ClrCredential'],
|
|
35
|
+
name: 'Quadratic Modeling and Statistical Sampling Portfolio',
|
|
36
|
+
description:
|
|
37
|
+
'Portfolio of quadratic modeling practice, statistical sampling transfer, and teaching performance.',
|
|
38
|
+
issuer: {
|
|
39
|
+
id: 'did:example:communitycollegeXYZ',
|
|
40
|
+
type: ['Profile'],
|
|
41
|
+
name: 'Community College XYZ',
|
|
42
|
+
url: 'https://ccxyz.example.edu',
|
|
43
|
+
},
|
|
44
|
+
validFrom: '2026-09-02T00:00:00Z',
|
|
45
|
+
credentialSubject: {
|
|
46
|
+
id: 'https://fixtures.example.org/frenchfry/personas/b8aecbfaee47',
|
|
47
|
+
type: ['ClrSubject'],
|
|
48
|
+
verifiableCredential: [
|
|
49
|
+
{
|
|
50
|
+
'@context': [
|
|
51
|
+
'https://www.w3.org/ns/credentials/v2',
|
|
52
|
+
'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
|
|
53
|
+
],
|
|
54
|
+
id: 'urn:uuid:a70a3561-5b59-56ef-95c3-fba84bf4dbb6',
|
|
55
|
+
type: ['VerifiableCredential', 'OpenBadgeCredential'],
|
|
56
|
+
name: 'Quadratic modeling — observed practice',
|
|
57
|
+
description:
|
|
58
|
+
'Fit a parabola to a simulated projectile dataset. Demonstrate a controlled practice task with observer feedback.',
|
|
59
|
+
issuer: {
|
|
60
|
+
id: 'did:example:communitycollegeXYZ',
|
|
61
|
+
type: ['Profile'],
|
|
62
|
+
name: 'Community College XYZ',
|
|
63
|
+
url: 'https://ccxyz.example.edu',
|
|
64
|
+
},
|
|
65
|
+
validFrom: '2026-09-01T00:00:00Z',
|
|
66
|
+
validUntil: '2028-09-01T00:00:00Z',
|
|
67
|
+
credentialSubject: {
|
|
68
|
+
id: 'https://fixtures.example.org/frenchfry/personas/b8aecbfaee47',
|
|
69
|
+
type: ['AchievementSubject'],
|
|
70
|
+
achievement: {
|
|
71
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/practice',
|
|
72
|
+
type: ['Achievement'],
|
|
73
|
+
achievementType: 'Assessment',
|
|
74
|
+
name: 'Quadratic modeling — observed practice',
|
|
75
|
+
description:
|
|
76
|
+
'Fit a parabola to a simulated projectile dataset. Demonstrate a controlled practice task with observer feedback.',
|
|
77
|
+
criteria: {
|
|
78
|
+
narrative: 'Report residuals and explain the valid time domain',
|
|
79
|
+
},
|
|
80
|
+
fieldOfStudy: 'education',
|
|
81
|
+
inLanguage: 'en',
|
|
82
|
+
tag: ['education', 'Quadratic modeling', 'learner'],
|
|
83
|
+
resultDescription: [
|
|
84
|
+
{
|
|
85
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/practice/rubric',
|
|
86
|
+
type: ['ResultDescription'],
|
|
87
|
+
name: 'Simulated performance rubric',
|
|
88
|
+
resultType: 'Percent',
|
|
89
|
+
valueMin: '0',
|
|
90
|
+
valueMax: '100',
|
|
91
|
+
requiredValue: '80',
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
role: 'learner',
|
|
96
|
+
narrative: 'Demonstrate a controlled practice task with observer feedback.',
|
|
97
|
+
activityStartDate: '2026-08-01T00:00:00Z',
|
|
98
|
+
activityEndDate: '2026-08-31T00:00:00Z',
|
|
99
|
+
result: [
|
|
100
|
+
{
|
|
101
|
+
type: ['Result'],
|
|
102
|
+
resultDescription:
|
|
103
|
+
'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/practice/rubric',
|
|
104
|
+
value: '86',
|
|
105
|
+
status: 'Completed',
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
evidence: [
|
|
110
|
+
{
|
|
111
|
+
id: 'https://fixtures.example.org/frenchfry/evidence/b8aecbfaee47/practice',
|
|
112
|
+
type: ['Evidence'],
|
|
113
|
+
name: 'Model notebook and residual plot',
|
|
114
|
+
description:
|
|
115
|
+
'Fit a parabola to a simulated projectile dataset; evaluation considered: Report residuals and explain the valid time domain',
|
|
116
|
+
narrative:
|
|
117
|
+
'Fit a parabola to a simulated projectile dataset; evaluation considered: Report residuals and explain the valid time domain',
|
|
118
|
+
genre: 'Observation record',
|
|
119
|
+
audience: 'Assessors',
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
'@context': [
|
|
125
|
+
'https://www.w3.org/ns/credentials/v2',
|
|
126
|
+
'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
|
|
127
|
+
],
|
|
128
|
+
id: 'urn:uuid:16476c98-56e6-5d0e-96dc-9ab47f234874',
|
|
129
|
+
type: ['VerifiableCredential', 'OpenBadgeCredential'],
|
|
130
|
+
name: 'Statistical sampling — independent transfer project',
|
|
131
|
+
description:
|
|
132
|
+
'Adapt this task to a new fictional setting: Design a stratified survey for a fictional school. Complete an independently planned transfer project, recording assumptions, an initial failed approach and a supported revision.',
|
|
133
|
+
issuer: {
|
|
134
|
+
id: 'did:example:communitycollegeXYZ',
|
|
135
|
+
type: ['Profile'],
|
|
136
|
+
name: 'Community College XYZ',
|
|
137
|
+
url: 'https://ccxyz.example.edu',
|
|
138
|
+
},
|
|
139
|
+
validFrom: '2026-09-01T00:00:00Z',
|
|
140
|
+
validUntil: '2028-09-01T00:00:00Z',
|
|
141
|
+
credentialSubject: {
|
|
142
|
+
id: 'https://fixtures.example.org/frenchfry/personas/b8aecbfaee47',
|
|
143
|
+
type: ['AchievementSubject'],
|
|
144
|
+
achievement: {
|
|
145
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer',
|
|
146
|
+
type: ['Achievement'],
|
|
147
|
+
achievementType: 'Course',
|
|
148
|
+
name: 'Statistical sampling — independent transfer project',
|
|
149
|
+
description:
|
|
150
|
+
'Adapt this task to a new fictional setting: Design a stratified survey for a fictional school. Complete an independently planned transfer project, recording assumptions, an initial failed approach and a supported revision.',
|
|
151
|
+
criteria: {
|
|
152
|
+
narrative:
|
|
153
|
+
'Identify population, sampling frame and two bias risks; compare two alternative approaches and justify one under time and resource constraints.',
|
|
154
|
+
},
|
|
155
|
+
fieldOfStudy: 'education',
|
|
156
|
+
inLanguage: 'en',
|
|
157
|
+
tag: ['education', 'Statistical sampling', 'learner'],
|
|
158
|
+
resultDescription: [
|
|
159
|
+
{
|
|
160
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric',
|
|
161
|
+
type: ['ResultDescription'],
|
|
162
|
+
name: 'Independent transfer rubric',
|
|
163
|
+
resultType: 'RubricCriterionLevel',
|
|
164
|
+
requiredLevel:
|
|
165
|
+
'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/proficient',
|
|
166
|
+
rubricCriterionLevel: [
|
|
167
|
+
{
|
|
168
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/developing',
|
|
169
|
+
type: ['RubricCriterionLevel'],
|
|
170
|
+
name: 'Developing',
|
|
171
|
+
level: '1',
|
|
172
|
+
description:
|
|
173
|
+
'Needs support to complete: Adapt this task to a new fictional setting: Design a stratified survey for a fictional school',
|
|
174
|
+
points: '1',
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/proficient',
|
|
178
|
+
type: ['RubricCriterionLevel'],
|
|
179
|
+
name: 'Proficient',
|
|
180
|
+
level: '2',
|
|
181
|
+
description:
|
|
182
|
+
'Meets the task criterion: Identify population, sampling frame and two bias risks; compare two alternative approaches and justify one under time and resource constraints.',
|
|
183
|
+
points: '2',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/advanced',
|
|
187
|
+
type: ['RubricCriterionLevel'],
|
|
188
|
+
name: 'Advanced',
|
|
189
|
+
level: '3',
|
|
190
|
+
description:
|
|
191
|
+
'Meets criterion and explains limits and alternative approaches.',
|
|
192
|
+
points: '3',
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
alignment: [
|
|
198
|
+
{
|
|
199
|
+
type: ['Alignment'],
|
|
200
|
+
targetName: 'statistics',
|
|
201
|
+
targetUrl:
|
|
202
|
+
'http://data.europa.eu/esco/skill/7ee4c2ea-b349-4bd2-81a3-ec31475d4833',
|
|
203
|
+
targetFramework: 'ESCO (requested dataset v1.2.0)',
|
|
204
|
+
targetDescription:
|
|
205
|
+
'The study of statistical theory, methods and practices such as collection, organisation, analysis, interpretation and presentation of data. It deals with all aspects of data including the planning of data collection in terms of the design of surveys and experiments in order to forecast and plan work-related activities.',
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
creditsAvailable: 2,
|
|
209
|
+
},
|
|
210
|
+
role: 'learner',
|
|
211
|
+
narrative:
|
|
212
|
+
'Complete an independently planned transfer project, recording assumptions, an initial failed approach and a supported revision.',
|
|
213
|
+
activityStartDate: '2026-08-01T00:00:00Z',
|
|
214
|
+
activityEndDate: '2026-08-31T00:00:00Z',
|
|
215
|
+
result: [
|
|
216
|
+
{
|
|
217
|
+
type: ['Result'],
|
|
218
|
+
resultDescription:
|
|
219
|
+
'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric',
|
|
220
|
+
achievedLevel:
|
|
221
|
+
'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/proficient',
|
|
222
|
+
status: 'Completed',
|
|
223
|
+
},
|
|
224
|
+
],
|
|
225
|
+
creditsEarned: 2,
|
|
226
|
+
term: 'Synthetic Fall 2026',
|
|
227
|
+
},
|
|
228
|
+
evidence: [
|
|
229
|
+
{
|
|
230
|
+
id: 'https://fixtures.example.org/frenchfry/evidence/c573cf61265a/transfer',
|
|
231
|
+
type: ['Evidence'],
|
|
232
|
+
name: 'Independent project dossier; Sampling plan and response audit',
|
|
233
|
+
description:
|
|
234
|
+
'Adapt this task to a new fictional setting: Design a stratified survey for a fictional school; evaluation considered: Identify population, sampling frame and two bias risks; compare two alternative approaches and justify one under time and resource constraints.',
|
|
235
|
+
narrative:
|
|
236
|
+
'Adapt this task to a new fictional setting: Design a stratified survey for a fictional school; evaluation considered: Identify population, sampling frame and two bias risks; compare two alternative approaches and justify one under time and resource constraints.',
|
|
237
|
+
genre: 'Portfolio',
|
|
238
|
+
audience: 'Assessors',
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
id: 'https://fixtures.example.org/frenchfry/evidence/c573cf61265a/transfer-review',
|
|
242
|
+
type: ['Evidence'],
|
|
243
|
+
name: 'Revision and peer critique record',
|
|
244
|
+
narrative:
|
|
245
|
+
'An initial approach was reviewed; the learner documented assumptions, evaluated an alternative and revised the work.',
|
|
246
|
+
genre: 'Reflective critique',
|
|
247
|
+
},
|
|
248
|
+
],
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
'@context': [
|
|
252
|
+
'https://www.w3.org/ns/credentials/v2',
|
|
253
|
+
'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
|
|
254
|
+
],
|
|
255
|
+
id: 'urn:uuid:b2aadaa8-c127-5a89-b4d0-c7f20f4da0df',
|
|
256
|
+
type: ['VerifiableCredential', 'OpenBadgeCredential'],
|
|
257
|
+
name: 'Teaching Quadratic modeling — facilitator performance',
|
|
258
|
+
description:
|
|
259
|
+
'Facilitate a simulated novice task: Fit a parabola to a simulated projectile dataset. Assesses teaching performance; independent learner skill is outside this assessment.',
|
|
260
|
+
issuer: {
|
|
261
|
+
id: 'did:example:communitycollegeXYZ',
|
|
262
|
+
type: ['Profile'],
|
|
263
|
+
name: 'Community College XYZ',
|
|
264
|
+
url: 'https://ccxyz.example.edu',
|
|
265
|
+
},
|
|
266
|
+
validFrom: '2026-09-01T00:00:00Z',
|
|
267
|
+
validUntil: '2028-09-01T00:00:00Z',
|
|
268
|
+
credentialSubject: {
|
|
269
|
+
id: 'https://fixtures.example.org/frenchfry/personas/b8aecbfaee47',
|
|
270
|
+
type: ['AchievementSubject'],
|
|
271
|
+
achievement: {
|
|
272
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/facilitator',
|
|
273
|
+
type: ['Achievement'],
|
|
274
|
+
achievementType: 'Assessment',
|
|
275
|
+
name: 'Teaching Quadratic modeling — facilitator performance',
|
|
276
|
+
description:
|
|
277
|
+
'Facilitate a simulated novice task: Fit a parabola to a simulated projectile dataset. Assesses teaching performance; independent learner skill is outside this assessment.',
|
|
278
|
+
criteria: {
|
|
279
|
+
narrative:
|
|
280
|
+
'Coach the novice to explain and apply this task criterion: Report residuals and explain the valid time domain. Use an error example, ask for a revised attempt and distinguish this learning task from Linear regression.',
|
|
281
|
+
},
|
|
282
|
+
fieldOfStudy: 'education',
|
|
283
|
+
inLanguage: 'en',
|
|
284
|
+
tag: ['education', 'Quadratic modeling', 'instructor'],
|
|
285
|
+
resultDescription: [
|
|
286
|
+
{
|
|
287
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/facilitator/rubric',
|
|
288
|
+
type: ['ResultDescription'],
|
|
289
|
+
name: 'Instruction performance',
|
|
290
|
+
resultType: 'PerformanceLevel',
|
|
291
|
+
allowedValue: ['Developing', 'Proficient', 'Advanced'],
|
|
292
|
+
requiredValue: 'Proficient',
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
alignment: [
|
|
296
|
+
{
|
|
297
|
+
type: ['Alignment'],
|
|
298
|
+
targetName: 'Instructing',
|
|
299
|
+
targetUrl:
|
|
300
|
+
'https://www.onetcenter.org/ctdlasn/resources/ce-07c266f7-9119-11e8-b852-782bcb5df6ac',
|
|
301
|
+
targetFramework:
|
|
302
|
+
'O*NET Content Model Worker Requirements - Transferable Skills: U.S. Department of Labor (DOL)',
|
|
303
|
+
targetDescription: 'Teaching others how to do something.',
|
|
304
|
+
targetType: 'ceasn:Competency',
|
|
305
|
+
targetCode: '2.B.1.e',
|
|
306
|
+
},
|
|
307
|
+
],
|
|
308
|
+
},
|
|
309
|
+
role: 'instructor',
|
|
310
|
+
narrative:
|
|
311
|
+
'Assesses teaching performance; independent learner skill is outside this assessment.',
|
|
312
|
+
activityStartDate: '2026-08-01T00:00:00Z',
|
|
313
|
+
activityEndDate: '2026-08-31T00:00:00Z',
|
|
314
|
+
result: [
|
|
315
|
+
{
|
|
316
|
+
type: ['Result'],
|
|
317
|
+
resultDescription:
|
|
318
|
+
'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/facilitator/rubric',
|
|
319
|
+
value: 'Proficient',
|
|
320
|
+
status: 'Completed',
|
|
321
|
+
},
|
|
322
|
+
],
|
|
323
|
+
},
|
|
324
|
+
evidence: [
|
|
325
|
+
{
|
|
326
|
+
id: 'https://fixtures.example.org/frenchfry/evidence/b8aecbfaee47/facilitator',
|
|
327
|
+
type: ['Evidence'],
|
|
328
|
+
name: 'Instructional worked example based on Model notebook and residual plot; simulated teach-back and observer critique',
|
|
329
|
+
description:
|
|
330
|
+
'Facilitate a simulated novice task: Fit a parabola to a simulated projectile dataset; evaluation considered: Coach the novice to explain and apply this task criterion: Report residuals and explain the valid time domain. Use an error example, ask for a revised attempt and distinguish this learning task from Linear regression.',
|
|
331
|
+
narrative:
|
|
332
|
+
'Facilitate a simulated novice task: Fit a parabola to a simulated projectile dataset; evaluation considered: Coach the novice to explain and apply this task criterion: Report residuals and explain the valid time domain. Use an error example, ask for a revised attempt and distinguish this learning task from Linear regression.',
|
|
333
|
+
genre: 'Portfolio',
|
|
334
|
+
audience: 'Assessors',
|
|
335
|
+
},
|
|
336
|
+
],
|
|
337
|
+
},
|
|
338
|
+
],
|
|
339
|
+
achievement: [
|
|
340
|
+
{
|
|
341
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/practice',
|
|
342
|
+
type: ['Achievement'],
|
|
343
|
+
achievementType: 'Assessment',
|
|
344
|
+
name: 'Quadratic modeling — observed practice',
|
|
345
|
+
description:
|
|
346
|
+
'Fit a parabola to a simulated projectile dataset. Demonstrate a controlled practice task with observer feedback.',
|
|
347
|
+
criteria: {
|
|
348
|
+
narrative: 'Report residuals and explain the valid time domain',
|
|
349
|
+
},
|
|
350
|
+
fieldOfStudy: 'education',
|
|
351
|
+
inLanguage: 'en',
|
|
352
|
+
tag: ['education', 'Quadratic modeling', 'learner'],
|
|
353
|
+
resultDescription: [
|
|
354
|
+
{
|
|
355
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/practice/rubric',
|
|
356
|
+
type: ['ResultDescription'],
|
|
357
|
+
name: 'Simulated performance rubric',
|
|
358
|
+
resultType: 'Percent',
|
|
359
|
+
valueMin: '0',
|
|
360
|
+
valueMax: '100',
|
|
361
|
+
requiredValue: '80',
|
|
362
|
+
},
|
|
363
|
+
],
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer',
|
|
367
|
+
type: ['Achievement'],
|
|
368
|
+
achievementType: 'Course',
|
|
369
|
+
name: 'Statistical sampling — independent transfer project',
|
|
370
|
+
description:
|
|
371
|
+
'Adapt this task to a new fictional setting: Design a stratified survey for a fictional school. Complete an independently planned transfer project, recording assumptions, an initial failed approach and a supported revision.',
|
|
372
|
+
criteria: {
|
|
373
|
+
narrative:
|
|
374
|
+
'Identify population, sampling frame and two bias risks; compare two alternative approaches and justify one under time and resource constraints.',
|
|
375
|
+
},
|
|
376
|
+
fieldOfStudy: 'education',
|
|
377
|
+
inLanguage: 'en',
|
|
378
|
+
tag: ['education', 'Statistical sampling', 'learner'],
|
|
379
|
+
resultDescription: [
|
|
380
|
+
{
|
|
381
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric',
|
|
382
|
+
type: ['ResultDescription'],
|
|
383
|
+
name: 'Independent transfer rubric',
|
|
384
|
+
resultType: 'RubricCriterionLevel',
|
|
385
|
+
requiredLevel:
|
|
386
|
+
'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/proficient',
|
|
387
|
+
rubricCriterionLevel: [
|
|
388
|
+
{
|
|
389
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/developing',
|
|
390
|
+
type: ['RubricCriterionLevel'],
|
|
391
|
+
name: 'Developing',
|
|
392
|
+
level: '1',
|
|
393
|
+
description:
|
|
394
|
+
'Needs support to complete: Adapt this task to a new fictional setting: Design a stratified survey for a fictional school',
|
|
395
|
+
points: '1',
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/proficient',
|
|
399
|
+
type: ['RubricCriterionLevel'],
|
|
400
|
+
name: 'Proficient',
|
|
401
|
+
level: '2',
|
|
402
|
+
description:
|
|
403
|
+
'Meets the task criterion: Identify population, sampling frame and two bias risks; compare two alternative approaches and justify one under time and resource constraints.',
|
|
404
|
+
points: '2',
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer/rubric/advanced',
|
|
408
|
+
type: ['RubricCriterionLevel'],
|
|
409
|
+
name: 'Advanced',
|
|
410
|
+
level: '3',
|
|
411
|
+
description:
|
|
412
|
+
'Meets criterion and explains limits and alternative approaches.',
|
|
413
|
+
points: '3',
|
|
414
|
+
},
|
|
415
|
+
],
|
|
416
|
+
},
|
|
417
|
+
],
|
|
418
|
+
alignment: [
|
|
419
|
+
{
|
|
420
|
+
type: ['Alignment'],
|
|
421
|
+
targetName: 'statistics',
|
|
422
|
+
targetUrl:
|
|
423
|
+
'http://data.europa.eu/esco/skill/7ee4c2ea-b349-4bd2-81a3-ec31475d4833',
|
|
424
|
+
targetFramework: 'ESCO (requested dataset v1.2.0)',
|
|
425
|
+
targetDescription:
|
|
426
|
+
'The study of statistical theory, methods and practices such as collection, organisation, analysis, interpretation and presentation of data. It deals with all aspects of data including the planning of data collection in terms of the design of surveys and experiments in order to forecast and plan work-related activities.',
|
|
427
|
+
},
|
|
428
|
+
],
|
|
429
|
+
creditsAvailable: 2,
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/facilitator',
|
|
433
|
+
type: ['Achievement'],
|
|
434
|
+
achievementType: 'Assessment',
|
|
435
|
+
name: 'Teaching Quadratic modeling — facilitator performance',
|
|
436
|
+
description:
|
|
437
|
+
'Facilitate a simulated novice task: Fit a parabola to a simulated projectile dataset. Assesses teaching performance; independent learner skill is outside this assessment.',
|
|
438
|
+
criteria: {
|
|
439
|
+
narrative:
|
|
440
|
+
'Coach the novice to explain and apply this task criterion: Report residuals and explain the valid time domain. Use an error example, ask for a revised attempt and distinguish this learning task from Linear regression.',
|
|
441
|
+
},
|
|
442
|
+
fieldOfStudy: 'education',
|
|
443
|
+
inLanguage: 'en',
|
|
444
|
+
tag: ['education', 'Quadratic modeling', 'instructor'],
|
|
445
|
+
resultDescription: [
|
|
446
|
+
{
|
|
447
|
+
id: 'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/facilitator/rubric',
|
|
448
|
+
type: ['ResultDescription'],
|
|
449
|
+
name: 'Instruction performance',
|
|
450
|
+
resultType: 'PerformanceLevel',
|
|
451
|
+
allowedValue: ['Developing', 'Proficient', 'Advanced'],
|
|
452
|
+
requiredValue: 'Proficient',
|
|
453
|
+
},
|
|
454
|
+
],
|
|
455
|
+
alignment: [
|
|
456
|
+
{
|
|
457
|
+
type: ['Alignment'],
|
|
458
|
+
targetName: 'Instructing',
|
|
459
|
+
targetUrl:
|
|
460
|
+
'https://www.onetcenter.org/ctdlasn/resources/ce-07c266f7-9119-11e8-b852-782bcb5df6ac',
|
|
461
|
+
targetFramework:
|
|
462
|
+
'O*NET Content Model Worker Requirements - Transferable Skills: U.S. Department of Labor (DOL)',
|
|
463
|
+
targetDescription: 'Teaching others how to do something.',
|
|
464
|
+
targetType: 'ceasn:Competency',
|
|
465
|
+
targetCode: '2.B.1.e',
|
|
466
|
+
},
|
|
467
|
+
],
|
|
468
|
+
},
|
|
469
|
+
],
|
|
470
|
+
association: [
|
|
471
|
+
{
|
|
472
|
+
type: 'Association',
|
|
473
|
+
associationType: 'isRelatedTo',
|
|
474
|
+
sourceId:
|
|
475
|
+
'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/practice',
|
|
476
|
+
targetId:
|
|
477
|
+
'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer',
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
type: 'Association',
|
|
481
|
+
associationType: 'isRelatedTo',
|
|
482
|
+
sourceId:
|
|
483
|
+
'https://fixtures.example.org/frenchfry/achievements/c573cf61265a/transfer',
|
|
484
|
+
targetId:
|
|
485
|
+
'https://fixtures.example.org/frenchfry/achievements/b8aecbfaee47/facilitator',
|
|
486
|
+
},
|
|
487
|
+
],
|
|
488
|
+
},
|
|
489
|
+
},
|
|
490
|
+
};
|