@learncard/credential-library 2.0.3 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +2 -1
  2. package/dist/bundles/index.d.ts +5 -0
  3. package/dist/bundles/index.d.ts.map +1 -0
  4. package/dist/bundles/student.d.ts +3 -0
  5. package/dist/bundles/student.d.ts.map +1 -0
  6. package/dist/bundles/types.d.ts +24 -0
  7. package/dist/bundles/types.d.ts.map +1 -0
  8. package/dist/credential-library.cjs.development.js +10865 -611
  9. package/dist/credential-library.cjs.development.js.map +4 -4
  10. package/dist/credential-library.cjs.production.min.js +11 -1
  11. package/dist/credential-library.cjs.production.min.js.map +4 -4
  12. package/dist/credential-library.esm.js +10854 -598
  13. package/dist/credential-library.esm.js.map +4 -4
  14. package/dist/fixtures/clr/achievement-id-associations.d.ts +3 -0
  15. package/dist/fixtures/clr/achievement-id-associations.d.ts.map +1 -0
  16. package/dist/fixtures/clr/employment-record.d.ts +8 -0
  17. package/dist/fixtures/clr/employment-record.d.ts.map +1 -0
  18. package/dist/fixtures/clr/licensing-regulatory-record.d.ts +8 -0
  19. package/dist/fixtures/clr/licensing-regulatory-record.d.ts.map +1 -0
  20. package/dist/fixtures/clr/military-training-record.d.ts +8 -0
  21. package/dist/fixtures/clr/military-training-record.d.ts.map +1 -0
  22. package/dist/fixtures/clr/mixed-career-record.d.ts +8 -0
  23. package/dist/fixtures/clr/mixed-career-record.d.ts.map +1 -0
  24. package/dist/fixtures/clr/professional-organization-record.d.ts +8 -0
  25. package/dist/fixtures/clr/professional-organization-record.d.ts.map +1 -0
  26. package/dist/fixtures/clr/provisional-transcript.d.ts +7 -1
  27. package/dist/fixtures/clr/provisional-transcript.d.ts.map +1 -1
  28. package/dist/fixtures/clr/student-official-academic-transcript.d.ts +3 -0
  29. package/dist/fixtures/clr/student-official-academic-transcript.d.ts.map +1 -0
  30. package/dist/fixtures/clr/training-provider-record.d.ts +8 -0
  31. package/dist/fixtures/clr/training-provider-record.d.ts.map +1 -0
  32. package/dist/fixtures/index.d.ts +12 -1
  33. package/dist/fixtures/index.d.ts.map +1 -1
  34. package/dist/fixtures/obv3/rubric-aligned-badge.d.ts +3 -0
  35. package/dist/fixtures/obv3/rubric-aligned-badge.d.ts.map +1 -0
  36. package/dist/fixtures/obv3/student-additional-credentials.d.ts +3 -0
  37. package/dist/fixtures/obv3/student-additional-credentials.d.ts.map +1 -0
  38. package/dist/fixtures/obv3/student-sample-badges.d.ts +586 -0
  39. package/dist/fixtures/obv3/student-sample-badges.d.ts.map +1 -0
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/prepare.d.ts +0 -18
  43. package/dist/prepare.d.ts.map +1 -1
  44. package/package.json +6 -6
  45. package/src/__tests__/bundles.test.ts +234 -0
  46. package/src/__tests__/clr-non-academic.test.ts +220 -0
  47. package/src/__tests__/registry.test.ts +74 -0
  48. package/src/bundles/index.ts +19 -0
  49. package/src/bundles/student.ts +251 -0
  50. package/src/bundles/types.ts +25 -0
  51. package/src/fixtures/clr/README.md +142 -0
  52. package/src/fixtures/clr/achievement-id-associations.ts +342 -0
  53. package/src/fixtures/clr/employment-record.ts +487 -0
  54. package/src/fixtures/clr/licensing-regulatory-record.ts +388 -0
  55. package/src/fixtures/clr/military-training-record.ts +468 -0
  56. package/src/fixtures/clr/mixed-career-record.ts +814 -0
  57. package/src/fixtures/clr/professional-organization-record.ts +403 -0
  58. package/src/fixtures/clr/provisional-transcript.ts +16 -3
  59. package/src/fixtures/clr/student-official-academic-transcript.ts +3202 -0
  60. package/src/fixtures/clr/training-provider-record.ts +510 -0
  61. package/src/fixtures/index.ts +44 -0
  62. package/src/fixtures/obv3/rubric-aligned-badge.ts +105 -0
  63. package/src/fixtures/obv3/student-additional-credentials.ts +3912 -0
  64. package/src/fixtures/obv3/student-sample-badges.ts +424 -0
  65. package/src/index.ts +2 -0
  66. package/src/prepare.ts +70 -11
  67. package/dist/__tests__/docs-json.test.d.ts +0 -2
  68. package/dist/__tests__/docs-json.test.d.ts.map +0 -1
  69. package/dist/__tests__/issuance.test.d.ts +0 -2
  70. package/dist/__tests__/issuance.test.d.ts.map +0 -1
  71. package/dist/__tests__/registry.test.d.ts +0 -2
  72. package/dist/__tests__/registry.test.d.ts.map +0 -1
  73. package/dist/__tests__/sd-jwt-vc.test.d.ts +0 -2
  74. package/dist/__tests__/sd-jwt-vc.test.d.ts.map +0 -1
@@ -0,0 +1,814 @@
1
+ import type { CredentialFixture } from '../../types';
2
+
3
+ /**
4
+ * LC-2184: synthetic, unsigned CLR display/issuance template.
5
+ * Both the outer record and embedded achievements intentionally have no proof.
6
+ * Sign/rebind children before the outer CLR for cryptographic verification tests.
7
+ */
8
+ export const clrMixedCareerRecord: CredentialFixture = {
9
+ id: 'clr/mixed-career-record',
10
+ name: 'Mixed Career Record — Learning, Work & Professional Practice',
11
+ description:
12
+ 'Course-first regression fixture: employment, membership, apprenticeship, competency, and license records must remain accessible when a course selects the transcript layout. Unsigned display/issuance template; child proofs must be issued separately for a fully verifiable CLR.',
13
+ spec: 'clr-v2',
14
+ profile: 'learner-record',
15
+ features: [
16
+ 'nested-credentials',
17
+ 'associations',
18
+ 'results',
19
+ 'evidence',
20
+ 'alignment',
21
+ 'source',
22
+ 'expiration',
23
+ ],
24
+ source: 'synthetic',
25
+ signed: false,
26
+ validity: 'valid',
27
+ tags: [
28
+ 'lc-2184',
29
+ 'non-academic',
30
+ 'synthetic',
31
+ 'mixed',
32
+ 'career',
33
+ 'education',
34
+ 'employment',
35
+ 'membership',
36
+ 'apprenticeship',
37
+ 'licensing',
38
+ 'multi-issuer',
39
+ ],
40
+ credential: {
41
+ '@context': [
42
+ 'https://www.w3.org/ns/credentials/v2',
43
+ 'https://purl.imsglobal.org/spec/clr/v2p0/context.json',
44
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
45
+ {
46
+ partial: {
47
+ '@id': 'https://purl.imsglobal.org/spec/vc/clr/vocab.html#partial',
48
+ '@type': 'http://www.w3.org/2001/XMLSchema#boolean',
49
+ },
50
+ identifier: {
51
+ '@id': 'https://purl.imsglobal.org/spec/vc/ob/vocab.html#identifier',
52
+ '@container': '@set',
53
+ },
54
+ },
55
+ ],
56
+ id: 'urn:uuid:c7d9e662-894e-57e5-a9a6-c7a7ac0248ca',
57
+ type: ['VerifiableCredential', 'ClrCredential'],
58
+ name: 'Mixed Career Record — Learning, Work & Professional Practice',
59
+ description:
60
+ 'Synthetic demonstration record as of September 1, 2026. Course-first regression fixture: employment, membership, apprenticeship, competency, and license records must remain accessible when a course selects the transcript layout.',
61
+ issuer: {
62
+ id: 'did:example:lc2184-career-records',
63
+ type: ['Profile'],
64
+ name: 'Career Record Assembly Service (Fictional)',
65
+ url: 'https://career-records.example',
66
+ description: 'Fictional organization used only for LearnCard display tests.',
67
+ },
68
+ validFrom: '2026-09-01T12:00:00Z',
69
+ partial: true,
70
+ credentialSubject: {
71
+ id: 'did:example:lc2184-alex-morgan',
72
+ type: ['ClrSubject'],
73
+ identifier: [
74
+ {
75
+ type: 'IdentityObject',
76
+ hashed: false,
77
+ identityType: 'name',
78
+ identityHash: 'Alex Morgan (Synthetic)',
79
+ },
80
+ ],
81
+ verifiableCredential: [
82
+ {
83
+ '@context': [
84
+ 'https://www.w3.org/ns/credentials/v2',
85
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
86
+ ],
87
+ id: 'urn:uuid:cdd6f7ed-27b2-5af8-8ee2-c2e3a2ea4e18',
88
+ type: ['VerifiableCredential', 'AchievementCredential'],
89
+ name: 'Applied Systems Thinking',
90
+ description:
91
+ 'An academic course appearing alongside professional and work records.',
92
+ issuer: {
93
+ id: 'did:example:lc2184-sequoia-college',
94
+ type: ['Profile'],
95
+ name: 'Sequoia Technical College (Fictional)',
96
+ url: 'https://sequoia-college.example',
97
+ description:
98
+ 'Fictional organization used only for LearnCard display tests.',
99
+ },
100
+ validFrom: '2026-05-22T12:00:00Z',
101
+ credentialSubject: {
102
+ id: 'did:example:lc2184-alex-morgan',
103
+ type: ['AchievementSubject'],
104
+ achievement: {
105
+ id: 'urn:uuid:2b44d9c7-d291-58da-8cba-15696c3b1f7d',
106
+ type: ['Achievement'],
107
+ achievementType: 'Course',
108
+ name: 'Applied Systems Thinking',
109
+ description:
110
+ 'An academic course appearing alongside professional and work records.',
111
+ criteria: {
112
+ narrative: 'Complete the course with a final grade of C or above.',
113
+ },
114
+ creator: {
115
+ id: 'did:example:lc2184-sequoia-college',
116
+ type: ['Profile'],
117
+ name: 'Sequoia Technical College (Fictional)',
118
+ url: 'https://sequoia-college.example',
119
+ description:
120
+ 'Fictional organization used only for LearnCard display tests.',
121
+ },
122
+ humanCode: 'SYN-MIXED-COLLEGE-COURSE',
123
+ version: '1.0',
124
+ inLanguage: 'en',
125
+ tag: ['synthetic', 'lc-2184'],
126
+ resultDescription: [
127
+ {
128
+ id: 'urn:uuid:6171955a-14d9-515f-b4d2-003cf32a077e',
129
+ type: ['ResultDescription'],
130
+ name: 'Final grade',
131
+ resultType: 'LetterGrade',
132
+ allowedValue: ['F', 'D', 'C', 'B', 'A'],
133
+ requiredValue: 'C',
134
+ },
135
+ ],
136
+ alignment: [
137
+ {
138
+ type: ['Alignment'],
139
+ targetName: 'Systems thinking',
140
+ targetCode: 'SYSTEMS-101',
141
+ targetFramework: 'Synthetic Workplace Capability Framework',
142
+ targetUrl: 'https://skills.example/framework/systems-101',
143
+ targetDescription:
144
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
145
+ targetType: 'CFItem',
146
+ },
147
+ ],
148
+ creditsAvailable: 3,
149
+ fieldOfStudy: 'Applied systems',
150
+ },
151
+ activityStartDate: '2026-01-12T09:00:00Z',
152
+ activityEndDate: '2026-05-15T17:00:00Z',
153
+ source: {
154
+ id: 'did:example:lc2184-sequoia-college',
155
+ type: ['Profile'],
156
+ name: 'Sequoia Technical College (Fictional)',
157
+ url: 'https://sequoia-college.example',
158
+ description:
159
+ 'Fictional organization used only for LearnCard display tests.',
160
+ },
161
+ result: [
162
+ {
163
+ type: ['Result'],
164
+ resultDescription: 'urn:uuid:6171955a-14d9-515f-b4d2-003cf32a077e',
165
+ value: 'A',
166
+ },
167
+ ],
168
+ creditsEarned: 3,
169
+ term: 'Spring 2026',
170
+ },
171
+ awardedDate: '2026-05-22T12:00:00Z',
172
+ evidence: [
173
+ {
174
+ type: ['Evidence'],
175
+ name: 'Course project summary',
176
+ description: 'Synthetic assessment evidence.',
177
+ narrative:
178
+ 'The learner completed the synthetic systems-mapping project with a final grade of A.',
179
+ genre: 'Assessment record',
180
+ audience: 'Learner and authorized reviewer',
181
+ },
182
+ ],
183
+ },
184
+ {
185
+ '@context': [
186
+ 'https://www.w3.org/ns/credentials/v2',
187
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
188
+ ],
189
+ id: 'urn:uuid:e0b80289-4d2b-52cf-abb9-ad6c1d085a7b',
190
+ type: ['VerifiableCredential', 'AchievementCredential'],
191
+ name: 'Platform Engineering Practice',
192
+ description:
193
+ 'A completed workplace practice period contributing to service reliability.',
194
+ issuer: {
195
+ id: 'did:example:lc2184-harbor-systems',
196
+ type: ['Profile'],
197
+ name: 'Harbor Systems — People & Development',
198
+ url: 'https://harbor-systems.example',
199
+ description:
200
+ 'Fictional organization used only for LearnCard display tests.',
201
+ },
202
+ validFrom: '2026-08-15T12:00:00Z',
203
+ credentialSubject: {
204
+ id: 'did:example:lc2184-alex-morgan',
205
+ type: ['AchievementSubject'],
206
+ achievement: {
207
+ id: 'urn:uuid:271fcad0-7169-547b-856f-5ca71c4a1915',
208
+ type: ['Achievement'],
209
+ achievementType: 'Achievement',
210
+ name: 'Platform Engineering Practice',
211
+ description:
212
+ 'A completed workplace practice period contributing to service reliability.',
213
+ criteria: {
214
+ narrative:
215
+ 'Complete the practice period and receive an assessment of the documented project outcomes.',
216
+ },
217
+ creator: {
218
+ id: 'did:example:lc2184-harbor-systems',
219
+ type: ['Profile'],
220
+ name: 'Harbor Systems — People & Development',
221
+ url: 'https://harbor-systems.example',
222
+ description:
223
+ 'Fictional organization used only for LearnCard display tests.',
224
+ },
225
+ humanCode: 'SYN-EMPLOYMENT-PRACTICE',
226
+ version: '1.0',
227
+ inLanguage: 'en',
228
+ tag: ['synthetic', 'lc-2184'],
229
+ resultDescription: [
230
+ {
231
+ id: 'urn:uuid:1a704213-0de4-50d8-ae7b-575156c39dd2',
232
+ type: ['ResultDescription'],
233
+ name: 'Activity completion',
234
+ resultType: 'Status',
235
+ },
236
+ ],
237
+ alignment: [
238
+ {
239
+ type: ['Alignment'],
240
+ targetName: 'Service reliability practice',
241
+ targetCode: 'REL-101',
242
+ targetFramework: 'Synthetic Workplace Capability Framework',
243
+ targetUrl: 'https://skills.example/framework/rel-101',
244
+ targetDescription:
245
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
246
+ targetType: 'CFItem',
247
+ },
248
+ ],
249
+ fieldOfStudy: 'Software engineering',
250
+ specialization: 'Platform reliability',
251
+ },
252
+ activityStartDate: '2025-02-03T09:00:00Z',
253
+ activityEndDate: '2026-06-30T17:00:00Z',
254
+ role: 'Platform Engineer',
255
+ narrative:
256
+ 'Led a service-migration project, documented incident reviews, and mentored two colleagues. This is a synthetic activity assertion, not a payroll record.',
257
+ source: {
258
+ id: 'did:example:lc2184-harbor-assessment',
259
+ type: ['Profile'],
260
+ name: 'Harbor Systems — Assessment Team',
261
+ url: 'https://harbor-assessment.example',
262
+ description:
263
+ 'Fictional organization used only for LearnCard display tests.',
264
+ },
265
+ result: [
266
+ {
267
+ type: ['Result'],
268
+ resultDescription: 'urn:uuid:1a704213-0de4-50d8-ae7b-575156c39dd2',
269
+ status: 'Completed',
270
+ },
271
+ ],
272
+ },
273
+ awardedDate: '2026-07-10T12:00:00Z',
274
+ evidence: [
275
+ {
276
+ type: ['Evidence'],
277
+ name: 'Manager assessment narrative',
278
+ description: 'Synthetic assessment evidence.',
279
+ narrative:
280
+ 'The assessor reviewed the migration plan and three incident review write-ups.',
281
+ genre: 'Assessment record',
282
+ audience: 'Learner and authorized reviewer',
283
+ },
284
+ ],
285
+ },
286
+ {
287
+ '@context': [
288
+ 'https://www.w3.org/ns/credentials/v2',
289
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
290
+ ],
291
+ id: 'urn:uuid:6d5e9cdf-41a6-5223-abff-faceaad2f29f',
292
+ type: ['VerifiableCredential', 'AchievementCredential'],
293
+ name: 'Professional Society Membership',
294
+ description:
295
+ 'Admission to a fictional professional organization for a stated period.',
296
+ issuer: {
297
+ id: 'did:example:lc2184-practice-guild',
298
+ type: ['Profile'],
299
+ name: 'Society of Applied Practice (Fictional)',
300
+ url: 'https://practice-guild.example',
301
+ description:
302
+ 'Fictional organization used only for LearnCard display tests.',
303
+ },
304
+ validFrom: '2026-01-01T00:00:00Z',
305
+ credentialSubject: {
306
+ id: 'did:example:lc2184-alex-morgan',
307
+ type: ['AchievementSubject'],
308
+ achievement: {
309
+ id: 'urn:uuid:6ad7f99b-7d9d-59a8-a207-825d1d2bf57e',
310
+ type: ['Achievement'],
311
+ achievementType: 'Membership',
312
+ name: 'Professional Society Membership',
313
+ description:
314
+ 'Admission to a fictional professional organization for a stated period.',
315
+ criteria: {
316
+ narrative:
317
+ 'Meet the society membership criteria and receive an admission decision.',
318
+ },
319
+ creator: {
320
+ id: 'did:example:lc2184-practice-guild',
321
+ type: ['Profile'],
322
+ name: 'Society of Applied Practice (Fictional)',
323
+ url: 'https://practice-guild.example',
324
+ description:
325
+ 'Fictional organization used only for LearnCard display tests.',
326
+ },
327
+ humanCode: 'SYN-PROFESSIONAL-MEMBERSHIP',
328
+ version: '1.0',
329
+ inLanguage: 'en',
330
+ tag: ['synthetic', 'lc-2184'],
331
+ resultDescription: [
332
+ {
333
+ id: 'urn:uuid:ea631e7d-ca45-58ab-85e6-f96da00fa43c',
334
+ type: ['ResultDescription'],
335
+ name: 'Membership admission',
336
+ resultType: 'Status',
337
+ },
338
+ ],
339
+ alignment: [
340
+ {
341
+ type: ['Alignment'],
342
+ targetName: 'Professional practice participation',
343
+ targetCode: 'PRO-101',
344
+ targetFramework: 'Synthetic Workplace Capability Framework',
345
+ targetUrl: 'https://skills.example/framework/pro-101',
346
+ targetDescription:
347
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
348
+ targetType: 'CFItem',
349
+ },
350
+ ],
351
+ },
352
+ activityStartDate: '2026-01-01T00:00:00Z',
353
+ activityEndDate: '2026-12-31T23:59:59Z',
354
+ role: 'Professional Member',
355
+ source: {
356
+ id: 'did:example:lc2184-practice-guild',
357
+ type: ['Profile'],
358
+ name: 'Society of Applied Practice (Fictional)',
359
+ url: 'https://practice-guild.example',
360
+ description:
361
+ 'Fictional organization used only for LearnCard display tests.',
362
+ },
363
+ identifier: [
364
+ {
365
+ type: 'IdentityObject',
366
+ hashed: false,
367
+ identityType: 'ext:membershipId',
368
+ identityHash: 'SYN-MEM-2184-001',
369
+ },
370
+ ],
371
+ result: [
372
+ {
373
+ type: ['Result'],
374
+ resultDescription: 'urn:uuid:ea631e7d-ca45-58ab-85e6-f96da00fa43c',
375
+ status: 'Completed',
376
+ },
377
+ ],
378
+ },
379
+ awardedDate: '2026-01-01T00:00:00Z',
380
+ validUntil: '2026-12-31T23:59:59Z',
381
+ evidence: [
382
+ {
383
+ type: ['Evidence'],
384
+ name: 'Admission record',
385
+ description: 'Synthetic assessment evidence.',
386
+ narrative:
387
+ 'Membership SYN-MEM-2184-001 covers calendar year 2026; admission is not a professional license.',
388
+ genre: 'Assessment record',
389
+ audience: 'Learner and authorized reviewer',
390
+ },
391
+ ],
392
+ },
393
+ {
394
+ '@context': [
395
+ 'https://www.w3.org/ns/credentials/v2',
396
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
397
+ ],
398
+ id: 'urn:uuid:22b8181d-9367-5877-be1f-bbf582ba2261',
399
+ type: ['VerifiableCredential', 'AchievementCredential'],
400
+ name: 'Operations Apprenticeship Certificate',
401
+ description:
402
+ 'A workplace apprenticeship completion credential, not an academic course.',
403
+ issuer: {
404
+ id: 'did:example:lc2184-harbor-systems',
405
+ type: ['Profile'],
406
+ name: 'Harbor Systems — People & Development',
407
+ url: 'https://harbor-systems.example',
408
+ description:
409
+ 'Fictional organization used only for LearnCard display tests.',
410
+ },
411
+ validFrom: '2025-02-14T12:00:00Z',
412
+ credentialSubject: {
413
+ id: 'did:example:lc2184-alex-morgan',
414
+ type: ['AchievementSubject'],
415
+ achievement: {
416
+ id: 'urn:uuid:3dc10a7d-7203-5579-9b78-1ae86c92a2c0',
417
+ type: ['Achievement'],
418
+ achievementType: 'ApprenticeshipCertificate',
419
+ name: 'Operations Apprenticeship Certificate',
420
+ description:
421
+ 'A workplace apprenticeship completion credential, not an academic course.',
422
+ criteria: {
423
+ narrative:
424
+ 'Complete the supervised apprenticeship and employer assessment.',
425
+ },
426
+ creator: {
427
+ id: 'did:example:lc2184-harbor-systems',
428
+ type: ['Profile'],
429
+ name: 'Harbor Systems — People & Development',
430
+ url: 'https://harbor-systems.example',
431
+ description:
432
+ 'Fictional organization used only for LearnCard display tests.',
433
+ },
434
+ humanCode: 'SYN-MIXED-APPRENTICESHIP',
435
+ version: '1.0',
436
+ inLanguage: 'en',
437
+ tag: ['synthetic', 'lc-2184'],
438
+ resultDescription: [
439
+ {
440
+ id: 'urn:uuid:c8113e36-a6b9-51aa-b1a7-cb93227cae9d',
441
+ type: ['ResultDescription'],
442
+ name: 'Apprenticeship completion',
443
+ resultType: 'Status',
444
+ },
445
+ ],
446
+ alignment: [
447
+ {
448
+ type: ['Alignment'],
449
+ targetName: 'Operational handover',
450
+ targetCode: 'OPS-101',
451
+ targetFramework: 'Synthetic Workplace Capability Framework',
452
+ targetUrl: 'https://skills.example/framework/ops-101',
453
+ targetDescription:
454
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
455
+ targetType: 'CFItem',
456
+ },
457
+ ],
458
+ },
459
+ activityStartDate: '2024-02-01T09:00:00Z',
460
+ activityEndDate: '2025-01-31T17:00:00Z',
461
+ role: 'Operations Apprentice',
462
+ narrative:
463
+ 'Completed the agreed workplace practice and assessment activities.',
464
+ source: {
465
+ id: 'did:example:lc2184-harbor-assessment',
466
+ type: ['Profile'],
467
+ name: 'Harbor Systems — Assessment Team',
468
+ url: 'https://harbor-assessment.example',
469
+ description:
470
+ 'Fictional organization used only for LearnCard display tests.',
471
+ },
472
+ result: [
473
+ {
474
+ type: ['Result'],
475
+ resultDescription: 'urn:uuid:c8113e36-a6b9-51aa-b1a7-cb93227cae9d',
476
+ status: 'Completed',
477
+ },
478
+ ],
479
+ },
480
+ awardedDate: '2025-02-14T12:00:00Z',
481
+ evidence: [
482
+ {
483
+ type: ['Evidence'],
484
+ name: 'Completion assessment',
485
+ description: 'Synthetic assessment evidence.',
486
+ narrative:
487
+ 'The fictional employer recorded completion of the supervised apprenticeship.',
488
+ genre: 'Assessment record',
489
+ audience: 'Learner and authorized reviewer',
490
+ },
491
+ ],
492
+ },
493
+ {
494
+ '@context': [
495
+ 'https://www.w3.org/ns/credentials/v2',
496
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
497
+ ],
498
+ id: 'urn:uuid:c1bc221b-063e-5923-8a9f-729ab50aaed6',
499
+ type: ['VerifiableCredential', 'AchievementCredential'],
500
+ name: 'Incident Review Facilitation',
501
+ description:
502
+ 'An assessed workplace capability expressed only by an achieved rubric-level reference.',
503
+ issuer: {
504
+ id: 'did:example:lc2184-harbor-systems',
505
+ type: ['Profile'],
506
+ name: 'Harbor Systems — People & Development',
507
+ url: 'https://harbor-systems.example',
508
+ description:
509
+ 'Fictional organization used only for LearnCard display tests.',
510
+ },
511
+ validFrom: '2026-09-01T12:00:00Z',
512
+ credentialSubject: {
513
+ id: 'did:example:lc2184-alex-morgan',
514
+ type: ['AchievementSubject'],
515
+ achievement: {
516
+ id: 'urn:uuid:d45026e9-13d2-5557-881a-b7ca2b655cd3',
517
+ type: ['Achievement'],
518
+ achievementType: 'Competency',
519
+ name: 'Incident Review Facilitation',
520
+ description:
521
+ 'An assessed workplace capability expressed only by an achieved rubric-level reference.',
522
+ criteria: {
523
+ narrative:
524
+ 'Demonstrate Independent level or above on the published rubric.',
525
+ },
526
+ creator: {
527
+ id: 'did:example:lc2184-cedar-standards',
528
+ type: ['Profile'],
529
+ name: 'Cedar Skills Council',
530
+ url: 'https://cedar-standards.example',
531
+ description:
532
+ 'Fictional organization used only for LearnCard display tests.',
533
+ },
534
+ humanCode: 'SYN-EMPLOYMENT-COMPETENCY',
535
+ version: '1.0',
536
+ inLanguage: 'en',
537
+ tag: ['synthetic', 'lc-2184'],
538
+ resultDescription: [
539
+ {
540
+ id: 'urn:uuid:c77458bb-293c-5204-8fbb-a674dfbf4250',
541
+ type: ['ResultDescription'],
542
+ name: 'Incident review capability',
543
+ resultType: 'RubricCriterionLevel',
544
+ rubricCriterionLevel: [
545
+ {
546
+ id: 'urn:uuid:2ecc2476-6b11-55c1-bb31-34b56b7fe918',
547
+ type: ['RubricCriterionLevel'],
548
+ name: 'Developing',
549
+ level: '1',
550
+ points: '1',
551
+ description:
552
+ 'Performs the activity with step-by-step assistance.',
553
+ alignment: [
554
+ {
555
+ type: ['Alignment'],
556
+ targetName: 'Developing capability level',
557
+ targetCode: 'LEVEL-1',
558
+ targetFramework:
559
+ 'Synthetic Workplace Capability Framework',
560
+ targetUrl:
561
+ 'https://skills.example/framework/level-1',
562
+ targetDescription:
563
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
564
+ targetType: 'CFItem',
565
+ },
566
+ ],
567
+ },
568
+ {
569
+ id: 'urn:uuid:759e11fa-2c2d-585e-9176-7acf40661a72',
570
+ type: ['RubricCriterionLevel'],
571
+ name: 'Independent',
572
+ level: '2',
573
+ points: '2',
574
+ description:
575
+ 'Performs the activity independently and explains the decisions.',
576
+ alignment: [
577
+ {
578
+ type: ['Alignment'],
579
+ targetName: 'Independent capability level',
580
+ targetCode: 'LEVEL-2',
581
+ targetFramework:
582
+ 'Synthetic Workplace Capability Framework',
583
+ targetUrl:
584
+ 'https://skills.example/framework/level-2',
585
+ targetDescription:
586
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
587
+ targetType: 'CFItem',
588
+ },
589
+ ],
590
+ },
591
+ {
592
+ id: 'urn:uuid:30f5170e-8230-5af0-8bdc-ccb520dde6af',
593
+ type: ['RubricCriterionLevel'],
594
+ name: 'Mentoring',
595
+ level: '3',
596
+ points: '3',
597
+ description:
598
+ 'Performs the activity independently and supports another participant.',
599
+ alignment: [
600
+ {
601
+ type: ['Alignment'],
602
+ targetName: 'Mentoring capability level',
603
+ targetCode: 'LEVEL-3',
604
+ targetFramework:
605
+ 'Synthetic Workplace Capability Framework',
606
+ targetUrl:
607
+ 'https://skills.example/framework/level-3',
608
+ targetDescription:
609
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
610
+ targetType: 'CFItem',
611
+ },
612
+ ],
613
+ },
614
+ ],
615
+ requiredLevel: 'urn:uuid:759e11fa-2c2d-585e-9176-7acf40661a72',
616
+ alignment: [
617
+ {
618
+ type: ['Alignment'],
619
+ targetName: 'Incident review capability',
620
+ targetCode: 'INCIDENT-REVIEW',
621
+ targetFramework:
622
+ 'Synthetic Workplace Capability Framework',
623
+ targetUrl:
624
+ 'https://skills.example/framework/incident-review',
625
+ targetDescription:
626
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
627
+ targetType: 'CFItem',
628
+ },
629
+ ],
630
+ },
631
+ ],
632
+ alignment: [
633
+ {
634
+ type: ['Alignment'],
635
+ targetName: 'Facilitates an incident review',
636
+ targetCode: 'REL-102',
637
+ targetFramework: 'Synthetic Workplace Capability Framework',
638
+ targetUrl: 'https://skills.example/framework/rel-102',
639
+ targetDescription:
640
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
641
+ targetType: 'CFItem',
642
+ },
643
+ ],
644
+ },
645
+ role: 'Review Facilitator',
646
+ source: {
647
+ id: 'did:example:lc2184-harbor-assessment',
648
+ type: ['Profile'],
649
+ name: 'Harbor Systems — Assessment Team',
650
+ url: 'https://harbor-assessment.example',
651
+ description:
652
+ 'Fictional organization used only for LearnCard display tests.',
653
+ },
654
+ result: [
655
+ {
656
+ type: ['Result'],
657
+ resultDescription: 'urn:uuid:c77458bb-293c-5204-8fbb-a674dfbf4250',
658
+ achievedLevel: 'urn:uuid:759e11fa-2c2d-585e-9176-7acf40661a72',
659
+ alignment: [
660
+ {
661
+ type: ['Alignment'],
662
+ targetName: 'Facilitates an incident review',
663
+ targetCode: 'REL-102',
664
+ targetFramework: 'Synthetic Workplace Capability Framework',
665
+ targetUrl: 'https://skills.example/framework/rel-102',
666
+ targetDescription:
667
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
668
+ targetType: 'CFItem',
669
+ },
670
+ ],
671
+ },
672
+ ],
673
+ },
674
+ awardedDate: '2026-07-10T12:00:00Z',
675
+ evidence: [
676
+ {
677
+ type: ['Evidence'],
678
+ name: 'Observed facilitation',
679
+ description: 'Synthetic assessment evidence.',
680
+ narrative:
681
+ 'The assessor observed a synthetic review session and selected the Independent rubric level.',
682
+ genre: 'Assessment record',
683
+ audience: 'Learner and authorized reviewer',
684
+ },
685
+ ],
686
+ },
687
+ {
688
+ '@context': [
689
+ 'https://www.w3.org/ns/credentials/v2',
690
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
691
+ ],
692
+ id: 'urn:uuid:75a0d998-e0fa-5ae3-9728-530067b4f68e',
693
+ type: ['VerifiableCredential', 'AchievementCredential'],
694
+ name: 'Synthetic Applied Practice License',
695
+ description:
696
+ 'A fictional license used to test number and validity display; no legal authorization is conferred.',
697
+ issuer: {
698
+ id: 'did:example:lc2184-meridian-licensing',
699
+ type: ['Profile'],
700
+ name: 'Meridian Licensing Board (Fictional)',
701
+ url: 'https://meridian-licensing.example',
702
+ description:
703
+ 'Fictional organization used only for LearnCard display tests.',
704
+ },
705
+ validFrom: '2026-02-01T00:00:00Z',
706
+ credentialSubject: {
707
+ id: 'did:example:lc2184-alex-morgan',
708
+ type: ['AchievementSubject'],
709
+ achievement: {
710
+ id: 'urn:uuid:2ed76eda-2d43-5c41-ac2a-c1d8ae12cd50',
711
+ type: ['Achievement'],
712
+ achievementType: 'License',
713
+ name: 'Synthetic Applied Practice License',
714
+ description:
715
+ 'A fictional license used to test number and validity display; no legal authorization is conferred.',
716
+ criteria: {
717
+ narrative:
718
+ 'Meet the fictional board requirements and receive an award decision.',
719
+ },
720
+ creator: {
721
+ id: 'did:example:lc2184-cedar-standards',
722
+ type: ['Profile'],
723
+ name: 'Cedar Skills Council',
724
+ url: 'https://cedar-standards.example',
725
+ description:
726
+ 'Fictional organization used only for LearnCard display tests.',
727
+ },
728
+ humanCode: 'SYN-PRACTICE-LICENSE',
729
+ version: '1.0',
730
+ inLanguage: 'en',
731
+ tag: ['synthetic', 'lc-2184'],
732
+ resultDescription: [
733
+ {
734
+ id: 'urn:uuid:9bcb7d96-b284-5f2d-9b25-2ba7e054ad3b',
735
+ type: ['ResultDescription'],
736
+ name: 'License award decision',
737
+ resultType: 'Status',
738
+ },
739
+ ],
740
+ alignment: [
741
+ {
742
+ type: ['Alignment'],
743
+ targetName: 'Applied practice capability',
744
+ targetCode: 'PRACTICE-101',
745
+ targetFramework: 'Synthetic Workplace Capability Framework',
746
+ targetUrl: 'https://skills.example/framework/practice-101',
747
+ targetDescription:
748
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
749
+ targetType: 'CFItem',
750
+ },
751
+ ],
752
+ },
753
+ role: 'License Holder',
754
+ source: {
755
+ id: 'did:example:lc2184-meridian-licensing',
756
+ type: ['Profile'],
757
+ name: 'Meridian Licensing Board (Fictional)',
758
+ url: 'https://meridian-licensing.example',
759
+ description:
760
+ 'Fictional organization used only for LearnCard display tests.',
761
+ },
762
+ licenseNumber: 'SYN-LIC-2184-042',
763
+ result: [
764
+ {
765
+ type: ['Result'],
766
+ resultDescription: 'urn:uuid:9bcb7d96-b284-5f2d-9b25-2ba7e054ad3b',
767
+ status: 'Completed',
768
+ },
769
+ ],
770
+ },
771
+ awardedDate: '2026-01-15T12:00:00Z',
772
+ validUntil: '2028-01-31T23:59:59Z',
773
+ evidence: [
774
+ {
775
+ type: ['Evidence'],
776
+ name: 'Fictional board award record',
777
+ description: 'Synthetic assessment evidence.',
778
+ narrative:
779
+ 'The number and dates are synthetic. Completed describes the award decision, not current regulatory standing.',
780
+ genre: 'Assessment record',
781
+ audience: 'Learner and authorized reviewer',
782
+ },
783
+ ],
784
+ },
785
+ ],
786
+ association: [
787
+ {
788
+ type: ['Association'],
789
+ associationType: 'isRelatedTo',
790
+ sourceId: 'urn:uuid:2b44d9c7-d291-58da-8cba-15696c3b1f7d',
791
+ targetId: 'urn:uuid:d45026e9-13d2-5557-881a-b7ca2b655cd3',
792
+ },
793
+ {
794
+ type: ['Association'],
795
+ associationType: 'precedes',
796
+ sourceId: 'urn:uuid:3dc10a7d-7203-5579-9b78-1ae86c92a2c0',
797
+ targetId: 'urn:uuid:271fcad0-7169-547b-856f-5ca71c4a1915',
798
+ },
799
+ {
800
+ type: ['Association'],
801
+ associationType: 'isRelatedTo',
802
+ sourceId: 'urn:uuid:271fcad0-7169-547b-856f-5ca71c4a1915',
803
+ targetId: 'urn:uuid:d45026e9-13d2-5557-881a-b7ca2b655cd3',
804
+ },
805
+ {
806
+ type: ['Association'],
807
+ associationType: 'isRelatedTo',
808
+ sourceId: 'urn:uuid:6ad7f99b-7d9d-59a8-a207-825d1d2bf57e',
809
+ targetId: 'urn:uuid:2ed76eda-2d43-5c41-ac2a-c1d8ae12cd50',
810
+ },
811
+ ],
812
+ },
813
+ },
814
+ };