@learncard/credential-library 1.0.7 → 1.0.8

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.
@@ -10816,6 +10816,3223 @@ var clrGreatPlainsFull = {
10816
10816
  }
10817
10817
  };
10818
10818
 
10819
+ // src/fixtures/clr/westbridge-full.ts
10820
+ var clrWestbridgeFull = {
10821
+ id: "clr/westbridge-full",
10822
+ name: "Westbridge University \u2014 Full Data Science Transcript",
10823
+ description: "A maximally rich CLR v2 transcript for a fictional 4-year Bachelor of Science in Data Science program. Exercises courses, programs, competencies, assessments, alignment, evidence, credentialStatus, termsOfUse, and credentialSchema across 8 semesters.",
10824
+ spec: "clr-v2",
10825
+ profile: "learner-record",
10826
+ features: [
10827
+ "results",
10828
+ "evidence",
10829
+ "alignment",
10830
+ "image",
10831
+ "associations",
10832
+ "nested-credentials",
10833
+ "status",
10834
+ "credential-schema"
10835
+ ],
10836
+ source: "synthetic",
10837
+ signed: false,
10838
+ validity: "valid",
10839
+ tags: ["transcript", "university", "data-science", "comprehensive", "clr-v2", "maximum-data"],
10840
+ credential: {
10841
+ "@context": [
10842
+ "https://www.w3.org/ns/credentials/v2",
10843
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
10844
+ "https://purl.imsglobal.org/spec/clr/v2p0/context-2.0.1.json"
10845
+ ],
10846
+ id: "urn:uuid:wb-clr-2025-jordan-reyes-001",
10847
+ type: ["VerifiableCredential", "ClrCredential"],
10848
+ name: "Official Academic Transcript \u2014 Westbridge University",
10849
+ description: "Official academic transcript for the Bachelor of Science in Data Science awarded to Jordan A. Reyes, covering eight semesters of coursework, competency assessments, and degree conferral.",
10850
+ image: {
10851
+ id: "https://westbridgeuniversity.com/wp-content/uploads/2021/03/logo-with-bg-fill.jpg",
10852
+ type: "Image",
10853
+ caption: "Westbridge University official logo"
10854
+ },
10855
+ issuer: {
10856
+ id: "did:web:registrar.westbridge.edu",
10857
+ type: ["Profile"],
10858
+ name: "Westbridge University \u2014 Office of the Registrar",
10859
+ description: "The Office of the Registrar at Westbridge University maintains official academic records and issues verified credentials on behalf of the institution.",
10860
+ url: "https://westbridge.edu/registrar",
10861
+ email: "registrar@westbridge.edu",
10862
+ phone: "+1-555-742-0100",
10863
+ image: {
10864
+ id: "https://westbridgeuniversity.com/wp-content/uploads/2021/03/logo-with-bg-fill.jpg",
10865
+ type: "Image",
10866
+ caption: "Westbridge University official logo"
10867
+ },
10868
+ address: {
10869
+ type: ["Address"],
10870
+ streetAddress: "1 University Boulevard",
10871
+ addressLocality: "Westbridge",
10872
+ addressRegion: "MA",
10873
+ postalCode: "02134",
10874
+ addressCountry: "USA"
10875
+ }
10876
+ },
10877
+ validFrom: "2025-05-20T00:00:00Z",
10878
+ awardedDate: "2025-05-18",
10879
+ credentialStatus: {
10880
+ id: "https://registrar.westbridge.edu/status/2025#42",
10881
+ type: "BitstringStatusListEntry",
10882
+ statusPurpose: "revocation",
10883
+ statusListIndex: "42",
10884
+ statusListCredential: "https://registrar.westbridge.edu/status/2025"
10885
+ },
10886
+ credentialSchema: {
10887
+ id: "https://purl.imsglobal.org/spec/clr/v2p0/schema/json/clr_v2p0_clrcredential_schema.json",
10888
+ type: "1EdTechJsonSchemaValidator2019"
10889
+ },
10890
+ evidence: [
10891
+ {
10892
+ id: "https://registrar.westbridge.edu/transcripts/t-wb-2025-001.pdf",
10893
+ type: ["Evidence"],
10894
+ name: "Official Academic Transcript",
10895
+ description: "Official sealed academic transcript issued by the Westbridge University Office of the Registrar.",
10896
+ genre: "Document",
10897
+ audience: "Employer, Graduate School Admissions"
10898
+ },
10899
+ {
10900
+ id: "https://registrar.westbridge.edu/diplomas/d-wb-2025-001.jpg",
10901
+ type: ["Evidence"],
10902
+ name: "Diploma",
10903
+ description: "Bachelor of Science in Data Science diploma awarded May 18, 2025.",
10904
+ genre: "Image",
10905
+ audience: "General"
10906
+ }
10907
+ ],
10908
+ termsOfUse: [
10909
+ {
10910
+ type: "IssuerPolicy",
10911
+ id: "https://westbridge.edu/policies/transcript-use"
10912
+ }
10913
+ ],
10914
+ credentialSubject: {
10915
+ id: "did:example:wb-student-2025-001",
10916
+ type: ["ClrSubject"],
10917
+ identifier: [
10918
+ {
10919
+ type: "IdentityObject",
10920
+ identityHash: "Jordan A. Reyes",
10921
+ identityType: "name",
10922
+ hashed: false
10923
+ },
10924
+ {
10925
+ type: "IdentityObject",
10926
+ identityHash: "j.reyes@westbridge.edu",
10927
+ identityType: "emailAddress",
10928
+ hashed: false
10929
+ },
10930
+ {
10931
+ type: "IdentityObject",
10932
+ identityHash: "20210042",
10933
+ identityType: "studentId",
10934
+ hashed: false
10935
+ },
10936
+ {
10937
+ type: "IdentityObject",
10938
+ identityHash: "1999-03-14",
10939
+ identityType: "dateOfBirth",
10940
+ hashed: false
10941
+ }
10942
+ ],
10943
+ verifiableCredential: [
10944
+ // ── YEAR 1 · FALL 2021 ────────────────────────────────────────────
10945
+ {
10946
+ "@context": [
10947
+ "https://www.w3.org/ns/credentials/v2",
10948
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
10949
+ ],
10950
+ id: "urn:uuid:wb-ds101",
10951
+ type: ["VerifiableCredential", "AchievementCredential"],
10952
+ name: "DS 101 \u2014 Introduction to Data Science",
10953
+ issuer: {
10954
+ id: "did:web:registrar.westbridge.edu",
10955
+ type: ["Profile"],
10956
+ name: "Westbridge University"
10957
+ },
10958
+ validFrom: "2021-12-15T00:00:00Z",
10959
+ credentialSubject: {
10960
+ id: "did:example:wb-student-2025-001",
10961
+ type: ["AchievementSubject"],
10962
+ achievement: {
10963
+ id: "https://westbridge.edu/courses/ds101",
10964
+ type: ["Achievement"],
10965
+ achievementType: "Course",
10966
+ name: "Introduction to Data Science",
10967
+ description: "Foundational survey of the data science lifecycle: data collection, cleaning, exploratory analysis, visualization, and basic predictive modeling using Python.",
10968
+ humanCode: "DS 101",
10969
+ fieldOfStudy: "Data Science",
10970
+ inLanguage: "en",
10971
+ tag: ["foundation", "python", "visualization"],
10972
+ creator: {
10973
+ id: "https://westbridge.edu/departments/data-science",
10974
+ type: ["Profile"],
10975
+ name: "Department of Data Science"
10976
+ },
10977
+ alignment: [
10978
+ {
10979
+ type: ["Alignment"],
10980
+ targetCode: "DS.FOUND.1",
10981
+ targetName: "Data Science Foundations",
10982
+ targetFramework: "Westbridge DS Competency Framework v2",
10983
+ targetType: "CFItem",
10984
+ targetUrl: "https://westbridge.edu/frameworks/ds/FOUND.1",
10985
+ targetDescription: "Demonstrates foundational knowledge of the data science lifecycle."
10986
+ }
10987
+ ],
10988
+ resultDescription: [
10989
+ {
10990
+ id: "urn:uuid:wb-rd-letter",
10991
+ type: ["ResultDescription"],
10992
+ name: "Letter Grade",
10993
+ resultType: "LetterGrade",
10994
+ allowedValue: [
10995
+ "A+",
10996
+ "A",
10997
+ "A-",
10998
+ "B+",
10999
+ "B",
11000
+ "B-",
11001
+ "C+",
11002
+ "C",
11003
+ "C-",
11004
+ "D",
11005
+ "F"
11006
+ ]
11007
+ }
11008
+ ]
11009
+ },
11010
+ result: [
11011
+ {
11012
+ type: ["Result"],
11013
+ value: "A",
11014
+ resultDescription: "urn:uuid:wb-rd-letter"
11015
+ }
11016
+ ],
11017
+ creditsEarned: 3,
11018
+ term: "Fall 2021"
11019
+ }
11020
+ },
11021
+ {
11022
+ "@context": [
11023
+ "https://www.w3.org/ns/credentials/v2",
11024
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11025
+ ],
11026
+ id: "urn:uuid:wb-math151",
11027
+ type: ["VerifiableCredential", "AchievementCredential"],
11028
+ name: "MATH 151 \u2014 Calculus I",
11029
+ issuer: {
11030
+ id: "did:web:registrar.westbridge.edu",
11031
+ type: ["Profile"],
11032
+ name: "Westbridge University"
11033
+ },
11034
+ validFrom: "2021-12-15T00:00:00Z",
11035
+ credentialSubject: {
11036
+ id: "did:example:wb-student-2025-001",
11037
+ type: ["AchievementSubject"],
11038
+ achievement: {
11039
+ id: "https://westbridge.edu/courses/math151",
11040
+ type: ["Achievement"],
11041
+ achievementType: "Course",
11042
+ name: "Calculus I",
11043
+ description: "Limits, derivatives, and integrals of single-variable functions. Applications to optimization, rates of change, and area under curves.",
11044
+ humanCode: "MATH 151",
11045
+ fieldOfStudy: "Mathematics",
11046
+ inLanguage: "en",
11047
+ tag: ["calculus", "mathematics", "foundation"],
11048
+ creator: {
11049
+ id: "https://westbridge.edu/departments/mathematics",
11050
+ type: ["Profile"],
11051
+ name: "Department of Mathematics"
11052
+ },
11053
+ resultDescription: [
11054
+ {
11055
+ id: "urn:uuid:wb-rd-letter",
11056
+ type: ["ResultDescription"],
11057
+ name: "Letter Grade",
11058
+ resultType: "LetterGrade",
11059
+ allowedValue: [
11060
+ "A+",
11061
+ "A",
11062
+ "A-",
11063
+ "B+",
11064
+ "B",
11065
+ "B-",
11066
+ "C+",
11067
+ "C",
11068
+ "C-",
11069
+ "D",
11070
+ "F"
11071
+ ]
11072
+ }
11073
+ ]
11074
+ },
11075
+ result: [
11076
+ {
11077
+ type: ["Result"],
11078
+ value: "A-",
11079
+ resultDescription: "urn:uuid:wb-rd-letter"
11080
+ }
11081
+ ],
11082
+ creditsEarned: 4,
11083
+ term: "Fall 2021"
11084
+ }
11085
+ },
11086
+ {
11087
+ "@context": [
11088
+ "https://www.w3.org/ns/credentials/v2",
11089
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11090
+ ],
11091
+ id: "urn:uuid:wb-cs101",
11092
+ type: ["VerifiableCredential", "AchievementCredential"],
11093
+ name: "CS 101 \u2014 Introduction to Programming",
11094
+ issuer: {
11095
+ id: "did:web:registrar.westbridge.edu",
11096
+ type: ["Profile"],
11097
+ name: "Westbridge University"
11098
+ },
11099
+ validFrom: "2021-12-15T00:00:00Z",
11100
+ credentialSubject: {
11101
+ id: "did:example:wb-student-2025-001",
11102
+ type: ["AchievementSubject"],
11103
+ achievement: {
11104
+ id: "https://westbridge.edu/courses/cs101",
11105
+ type: ["Achievement"],
11106
+ achievementType: "Course",
11107
+ name: "Introduction to Programming",
11108
+ description: "Programming fundamentals using Python: variables, control flow, functions, data structures, file I/O, and introductory object-oriented design.",
11109
+ humanCode: "CS 101",
11110
+ fieldOfStudy: "Computer Science",
11111
+ inLanguage: "en",
11112
+ tag: ["python", "programming", "foundation"],
11113
+ creator: {
11114
+ id: "https://westbridge.edu/departments/computer-science",
11115
+ type: ["Profile"],
11116
+ name: "Department of Computer Science"
11117
+ },
11118
+ resultDescription: [
11119
+ {
11120
+ id: "urn:uuid:wb-rd-letter",
11121
+ type: ["ResultDescription"],
11122
+ name: "Letter Grade",
11123
+ resultType: "LetterGrade",
11124
+ allowedValue: [
11125
+ "A+",
11126
+ "A",
11127
+ "A-",
11128
+ "B+",
11129
+ "B",
11130
+ "B-",
11131
+ "C+",
11132
+ "C",
11133
+ "C-",
11134
+ "D",
11135
+ "F"
11136
+ ]
11137
+ }
11138
+ ]
11139
+ },
11140
+ result: [
11141
+ {
11142
+ type: ["Result"],
11143
+ value: "A",
11144
+ resultDescription: "urn:uuid:wb-rd-letter"
11145
+ }
11146
+ ],
11147
+ creditsEarned: 3,
11148
+ term: "Fall 2021"
11149
+ }
11150
+ },
11151
+ // ── YEAR 1 · SPRING 2022 ──────────────────────────────────────────
11152
+ {
11153
+ "@context": [
11154
+ "https://www.w3.org/ns/credentials/v2",
11155
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11156
+ ],
11157
+ id: "urn:uuid:wb-stat201",
11158
+ type: ["VerifiableCredential", "AchievementCredential"],
11159
+ name: "STAT 201 \u2014 Statistics and Probability",
11160
+ issuer: {
11161
+ id: "did:web:registrar.westbridge.edu",
11162
+ type: ["Profile"],
11163
+ name: "Westbridge University"
11164
+ },
11165
+ validFrom: "2022-05-10T00:00:00Z",
11166
+ credentialSubject: {
11167
+ id: "did:example:wb-student-2025-001",
11168
+ type: ["AchievementSubject"],
11169
+ achievement: {
11170
+ id: "https://westbridge.edu/courses/stat201",
11171
+ type: ["Achievement"],
11172
+ achievementType: "Course",
11173
+ name: "Statistics and Probability",
11174
+ description: "Descriptive statistics, probability distributions, sampling theory, hypothesis testing, confidence intervals, and linear regression.",
11175
+ humanCode: "STAT 201",
11176
+ fieldOfStudy: "Statistics",
11177
+ inLanguage: "en",
11178
+ tag: ["statistics", "probability", "inference"],
11179
+ creator: {
11180
+ id: "https://westbridge.edu/departments/statistics",
11181
+ type: ["Profile"],
11182
+ name: "Department of Statistics and Applied Mathematics"
11183
+ },
11184
+ alignment: [
11185
+ {
11186
+ type: ["Alignment"],
11187
+ targetCode: "DS.STAT.1",
11188
+ targetName: "Statistical Reasoning",
11189
+ targetFramework: "Westbridge DS Competency Framework v2",
11190
+ targetType: "CFItem",
11191
+ targetUrl: "https://westbridge.edu/frameworks/ds/STAT.1",
11192
+ targetDescription: "Applies statistical reasoning to interpret data and draw valid inferences."
11193
+ }
11194
+ ],
11195
+ resultDescription: [
11196
+ {
11197
+ id: "urn:uuid:wb-rd-letter",
11198
+ type: ["ResultDescription"],
11199
+ name: "Letter Grade",
11200
+ resultType: "LetterGrade",
11201
+ allowedValue: [
11202
+ "A+",
11203
+ "A",
11204
+ "A-",
11205
+ "B+",
11206
+ "B",
11207
+ "B-",
11208
+ "C+",
11209
+ "C",
11210
+ "C-",
11211
+ "D",
11212
+ "F"
11213
+ ]
11214
+ }
11215
+ ]
11216
+ },
11217
+ result: [
11218
+ {
11219
+ type: ["Result"],
11220
+ value: "A",
11221
+ resultDescription: "urn:uuid:wb-rd-letter"
11222
+ }
11223
+ ],
11224
+ creditsEarned: 3,
11225
+ term: "Spring 2022"
11226
+ }
11227
+ },
11228
+ {
11229
+ "@context": [
11230
+ "https://www.w3.org/ns/credentials/v2",
11231
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11232
+ ],
11233
+ id: "urn:uuid:wb-math201",
11234
+ type: ["VerifiableCredential", "AchievementCredential"],
11235
+ name: "MATH 201 \u2014 Linear Algebra",
11236
+ issuer: {
11237
+ id: "did:web:registrar.westbridge.edu",
11238
+ type: ["Profile"],
11239
+ name: "Westbridge University"
11240
+ },
11241
+ validFrom: "2022-05-10T00:00:00Z",
11242
+ credentialSubject: {
11243
+ id: "did:example:wb-student-2025-001",
11244
+ type: ["AchievementSubject"],
11245
+ achievement: {
11246
+ id: "https://westbridge.edu/courses/math201",
11247
+ type: ["Achievement"],
11248
+ achievementType: "Course",
11249
+ name: "Linear Algebra",
11250
+ description: "Vectors, matrices, systems of linear equations, eigenvalues and eigenvectors, orthogonality, and applications to data transformations.",
11251
+ humanCode: "MATH 201",
11252
+ fieldOfStudy: "Mathematics",
11253
+ inLanguage: "en",
11254
+ tag: ["linear-algebra", "mathematics"],
11255
+ creator: {
11256
+ id: "https://westbridge.edu/departments/mathematics",
11257
+ type: ["Profile"],
11258
+ name: "Department of Mathematics"
11259
+ },
11260
+ resultDescription: [
11261
+ {
11262
+ id: "urn:uuid:wb-rd-letter",
11263
+ type: ["ResultDescription"],
11264
+ name: "Letter Grade",
11265
+ resultType: "LetterGrade",
11266
+ allowedValue: [
11267
+ "A+",
11268
+ "A",
11269
+ "A-",
11270
+ "B+",
11271
+ "B",
11272
+ "B-",
11273
+ "C+",
11274
+ "C",
11275
+ "C-",
11276
+ "D",
11277
+ "F"
11278
+ ]
11279
+ }
11280
+ ]
11281
+ },
11282
+ result: [
11283
+ {
11284
+ type: ["Result"],
11285
+ value: "B+",
11286
+ resultDescription: "urn:uuid:wb-rd-letter"
11287
+ }
11288
+ ],
11289
+ creditsEarned: 3,
11290
+ term: "Spring 2022"
11291
+ }
11292
+ },
11293
+ {
11294
+ "@context": [
11295
+ "https://www.w3.org/ns/credentials/v2",
11296
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11297
+ ],
11298
+ id: "urn:uuid:wb-ds110",
11299
+ type: ["VerifiableCredential", "AchievementCredential"],
11300
+ name: "DS 110 \u2014 Data Wrangling and Visualization",
11301
+ issuer: {
11302
+ id: "did:web:registrar.westbridge.edu",
11303
+ type: ["Profile"],
11304
+ name: "Westbridge University"
11305
+ },
11306
+ validFrom: "2022-05-10T00:00:00Z",
11307
+ credentialSubject: {
11308
+ id: "did:example:wb-student-2025-001",
11309
+ type: ["AchievementSubject"],
11310
+ achievement: {
11311
+ id: "https://westbridge.edu/courses/ds110",
11312
+ type: ["Achievement"],
11313
+ achievementType: "Course",
11314
+ name: "Data Wrangling and Visualization",
11315
+ description: "Practical data acquisition, cleaning, transformation, and visual storytelling using pandas, Matplotlib, and Seaborn.",
11316
+ humanCode: "DS 110",
11317
+ fieldOfStudy: "Data Science",
11318
+ inLanguage: "en",
11319
+ tag: ["pandas", "visualization", "python"],
11320
+ creator: {
11321
+ id: "https://westbridge.edu/departments/data-science",
11322
+ type: ["Profile"],
11323
+ name: "Department of Data Science"
11324
+ },
11325
+ resultDescription: [
11326
+ {
11327
+ id: "urn:uuid:wb-rd-letter",
11328
+ type: ["ResultDescription"],
11329
+ name: "Letter Grade",
11330
+ resultType: "LetterGrade",
11331
+ allowedValue: [
11332
+ "A+",
11333
+ "A",
11334
+ "A-",
11335
+ "B+",
11336
+ "B",
11337
+ "B-",
11338
+ "C+",
11339
+ "C",
11340
+ "C-",
11341
+ "D",
11342
+ "F"
11343
+ ]
11344
+ }
11345
+ ]
11346
+ },
11347
+ result: [
11348
+ {
11349
+ type: ["Result"],
11350
+ value: "A",
11351
+ resultDescription: "urn:uuid:wb-rd-letter"
11352
+ }
11353
+ ],
11354
+ creditsEarned: 3,
11355
+ term: "Spring 2022"
11356
+ }
11357
+ },
11358
+ // ── YEAR 2 · FALL 2022 ────────────────────────────────────────────
11359
+ {
11360
+ "@context": [
11361
+ "https://www.w3.org/ns/credentials/v2",
11362
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11363
+ ],
11364
+ id: "urn:uuid:wb-ds201",
11365
+ type: ["VerifiableCredential", "AchievementCredential"],
11366
+ name: "DS 201 \u2014 Machine Learning Fundamentals",
11367
+ issuer: {
11368
+ id: "did:web:registrar.westbridge.edu",
11369
+ type: ["Profile"],
11370
+ name: "Westbridge University"
11371
+ },
11372
+ validFrom: "2022-12-14T00:00:00Z",
11373
+ credentialSubject: {
11374
+ id: "did:example:wb-student-2025-001",
11375
+ type: ["AchievementSubject"],
11376
+ achievement: {
11377
+ id: "https://westbridge.edu/courses/ds201",
11378
+ type: ["Achievement"],
11379
+ achievementType: "Course",
11380
+ name: "Machine Learning Fundamentals",
11381
+ description: "Supervised and unsupervised learning algorithms: linear regression, logistic regression, decision trees, k-means, dimensionality reduction. Evaluation metrics and cross-validation.",
11382
+ humanCode: "DS 201",
11383
+ fieldOfStudy: "Data Science",
11384
+ inLanguage: "en",
11385
+ tag: ["machine-learning", "sklearn", "modeling"],
11386
+ creator: {
11387
+ id: "https://westbridge.edu/departments/data-science",
11388
+ type: ["Profile"],
11389
+ name: "Department of Data Science"
11390
+ },
11391
+ alignment: [
11392
+ {
11393
+ type: ["Alignment"],
11394
+ targetCode: "DS.ML.1",
11395
+ targetName: "Machine Learning Literacy",
11396
+ targetFramework: "Westbridge DS Competency Framework v2",
11397
+ targetType: "CFItem",
11398
+ targetUrl: "https://westbridge.edu/frameworks/ds/ML.1",
11399
+ targetDescription: "Applies core ML algorithms and selects appropriate evaluation strategies."
11400
+ }
11401
+ ],
11402
+ resultDescription: [
11403
+ {
11404
+ id: "urn:uuid:wb-rd-letter",
11405
+ type: ["ResultDescription"],
11406
+ name: "Letter Grade",
11407
+ resultType: "LetterGrade",
11408
+ allowedValue: [
11409
+ "A+",
11410
+ "A",
11411
+ "A-",
11412
+ "B+",
11413
+ "B",
11414
+ "B-",
11415
+ "C+",
11416
+ "C",
11417
+ "C-",
11418
+ "D",
11419
+ "F"
11420
+ ]
11421
+ }
11422
+ ]
11423
+ },
11424
+ result: [
11425
+ {
11426
+ type: ["Result"],
11427
+ value: "A",
11428
+ resultDescription: "urn:uuid:wb-rd-letter"
11429
+ }
11430
+ ],
11431
+ creditsEarned: 3,
11432
+ term: "Fall 2022"
11433
+ }
11434
+ },
11435
+ {
11436
+ "@context": [
11437
+ "https://www.w3.org/ns/credentials/v2",
11438
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11439
+ ],
11440
+ id: "urn:uuid:wb-cs201",
11441
+ type: ["VerifiableCredential", "AchievementCredential"],
11442
+ name: "CS 201 \u2014 Data Structures and Algorithms",
11443
+ issuer: {
11444
+ id: "did:web:registrar.westbridge.edu",
11445
+ type: ["Profile"],
11446
+ name: "Westbridge University"
11447
+ },
11448
+ validFrom: "2022-12-14T00:00:00Z",
11449
+ credentialSubject: {
11450
+ id: "did:example:wb-student-2025-001",
11451
+ type: ["AchievementSubject"],
11452
+ achievement: {
11453
+ id: "https://westbridge.edu/courses/cs201",
11454
+ type: ["Achievement"],
11455
+ achievementType: "Course",
11456
+ name: "Data Structures and Algorithms",
11457
+ description: "Arrays, linked lists, trees, graphs, hash tables, sorting algorithms, and complexity analysis.",
11458
+ humanCode: "CS 201",
11459
+ fieldOfStudy: "Computer Science",
11460
+ inLanguage: "en",
11461
+ tag: ["algorithms", "complexity", "data-structures"],
11462
+ creator: {
11463
+ id: "https://westbridge.edu/departments/computer-science",
11464
+ type: ["Profile"],
11465
+ name: "Department of Computer Science"
11466
+ },
11467
+ resultDescription: [
11468
+ {
11469
+ id: "urn:uuid:wb-rd-letter",
11470
+ type: ["ResultDescription"],
11471
+ name: "Letter Grade",
11472
+ resultType: "LetterGrade",
11473
+ allowedValue: [
11474
+ "A+",
11475
+ "A",
11476
+ "A-",
11477
+ "B+",
11478
+ "B",
11479
+ "B-",
11480
+ "C+",
11481
+ "C",
11482
+ "C-",
11483
+ "D",
11484
+ "F"
11485
+ ]
11486
+ }
11487
+ ]
11488
+ },
11489
+ result: [
11490
+ {
11491
+ type: ["Result"],
11492
+ value: "A-",
11493
+ resultDescription: "urn:uuid:wb-rd-letter"
11494
+ }
11495
+ ],
11496
+ creditsEarned: 3,
11497
+ term: "Fall 2022"
11498
+ }
11499
+ },
11500
+ {
11501
+ "@context": [
11502
+ "https://www.w3.org/ns/credentials/v2",
11503
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11504
+ ],
11505
+ id: "urn:uuid:wb-comm201",
11506
+ type: ["VerifiableCredential", "AchievementCredential"],
11507
+ name: "COMM 201 \u2014 Technical Communication for Scientists",
11508
+ issuer: {
11509
+ id: "did:web:registrar.westbridge.edu",
11510
+ type: ["Profile"],
11511
+ name: "Westbridge University"
11512
+ },
11513
+ validFrom: "2022-12-14T00:00:00Z",
11514
+ credentialSubject: {
11515
+ id: "did:example:wb-student-2025-001",
11516
+ type: ["AchievementSubject"],
11517
+ achievement: {
11518
+ id: "https://westbridge.edu/courses/comm201",
11519
+ type: ["Achievement"],
11520
+ achievementType: "Course",
11521
+ name: "Technical Communication for Scientists",
11522
+ description: "Scientific writing, data storytelling, report structure, visualization critique, and oral presentation skills for technical audiences.",
11523
+ humanCode: "COMM 201",
11524
+ fieldOfStudy: "Communications",
11525
+ inLanguage: "en",
11526
+ tag: ["writing", "communication", "presentation"],
11527
+ creator: {
11528
+ id: "https://westbridge.edu/departments/communications",
11529
+ type: ["Profile"],
11530
+ name: "Department of Communications and Media"
11531
+ },
11532
+ resultDescription: [
11533
+ {
11534
+ id: "urn:uuid:wb-rd-letter",
11535
+ type: ["ResultDescription"],
11536
+ name: "Letter Grade",
11537
+ resultType: "LetterGrade",
11538
+ allowedValue: [
11539
+ "A+",
11540
+ "A",
11541
+ "A-",
11542
+ "B+",
11543
+ "B",
11544
+ "B-",
11545
+ "C+",
11546
+ "C",
11547
+ "C-",
11548
+ "D",
11549
+ "F"
11550
+ ]
11551
+ }
11552
+ ]
11553
+ },
11554
+ result: [
11555
+ {
11556
+ type: ["Result"],
11557
+ value: "A",
11558
+ resultDescription: "urn:uuid:wb-rd-letter"
11559
+ }
11560
+ ],
11561
+ creditsEarned: 2,
11562
+ term: "Fall 2022"
11563
+ }
11564
+ },
11565
+ // ── YEAR 2 · SPRING 2023 ──────────────────────────────────────────
11566
+ {
11567
+ "@context": [
11568
+ "https://www.w3.org/ns/credentials/v2",
11569
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11570
+ ],
11571
+ id: "urn:uuid:wb-ds211",
11572
+ type: ["VerifiableCredential", "AchievementCredential"],
11573
+ name: "DS 211 \u2014 Statistical Modeling",
11574
+ issuer: {
11575
+ id: "did:web:registrar.westbridge.edu",
11576
+ type: ["Profile"],
11577
+ name: "Westbridge University"
11578
+ },
11579
+ validFrom: "2023-05-09T00:00:00Z",
11580
+ credentialSubject: {
11581
+ id: "did:example:wb-student-2025-001",
11582
+ type: ["AchievementSubject"],
11583
+ achievement: {
11584
+ id: "https://westbridge.edu/courses/ds211",
11585
+ type: ["Achievement"],
11586
+ achievementType: "Course",
11587
+ name: "Statistical Modeling",
11588
+ description: "Generalized linear models, regularization, time-series analysis, survival analysis, and model diagnostics.",
11589
+ humanCode: "DS 211",
11590
+ fieldOfStudy: "Data Science",
11591
+ inLanguage: "en",
11592
+ tag: ["modeling", "statistics", "regression"],
11593
+ creator: {
11594
+ id: "https://westbridge.edu/departments/data-science",
11595
+ type: ["Profile"],
11596
+ name: "Department of Data Science"
11597
+ },
11598
+ resultDescription: [
11599
+ {
11600
+ id: "urn:uuid:wb-rd-letter",
11601
+ type: ["ResultDescription"],
11602
+ name: "Letter Grade",
11603
+ resultType: "LetterGrade",
11604
+ allowedValue: [
11605
+ "A+",
11606
+ "A",
11607
+ "A-",
11608
+ "B+",
11609
+ "B",
11610
+ "B-",
11611
+ "C+",
11612
+ "C",
11613
+ "C-",
11614
+ "D",
11615
+ "F"
11616
+ ]
11617
+ }
11618
+ ]
11619
+ },
11620
+ result: [
11621
+ {
11622
+ type: ["Result"],
11623
+ value: "A",
11624
+ resultDescription: "urn:uuid:wb-rd-letter"
11625
+ }
11626
+ ],
11627
+ creditsEarned: 3,
11628
+ term: "Spring 2023"
11629
+ }
11630
+ },
11631
+ {
11632
+ "@context": [
11633
+ "https://www.w3.org/ns/credentials/v2",
11634
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11635
+ ],
11636
+ id: "urn:uuid:wb-cs310",
11637
+ type: ["VerifiableCredential", "AchievementCredential"],
11638
+ name: "CS 310 \u2014 Database Systems",
11639
+ issuer: {
11640
+ id: "did:web:registrar.westbridge.edu",
11641
+ type: ["Profile"],
11642
+ name: "Westbridge University"
11643
+ },
11644
+ validFrom: "2023-05-09T00:00:00Z",
11645
+ credentialSubject: {
11646
+ id: "did:example:wb-student-2025-001",
11647
+ type: ["AchievementSubject"],
11648
+ achievement: {
11649
+ id: "https://westbridge.edu/courses/cs310",
11650
+ type: ["Achievement"],
11651
+ achievementType: "Course",
11652
+ name: "Database Systems",
11653
+ description: "Relational model, SQL, query optimization, transactions, NoSQL databases, and data warehousing patterns for analytics.",
11654
+ humanCode: "CS 310",
11655
+ fieldOfStudy: "Computer Science",
11656
+ inLanguage: "en",
11657
+ tag: ["sql", "databases", "nosql"],
11658
+ creator: {
11659
+ id: "https://westbridge.edu/departments/computer-science",
11660
+ type: ["Profile"],
11661
+ name: "Department of Computer Science"
11662
+ },
11663
+ resultDescription: [
11664
+ {
11665
+ id: "urn:uuid:wb-rd-letter",
11666
+ type: ["ResultDescription"],
11667
+ name: "Letter Grade",
11668
+ resultType: "LetterGrade",
11669
+ allowedValue: [
11670
+ "A+",
11671
+ "A",
11672
+ "A-",
11673
+ "B+",
11674
+ "B",
11675
+ "B-",
11676
+ "C+",
11677
+ "C",
11678
+ "C-",
11679
+ "D",
11680
+ "F"
11681
+ ]
11682
+ }
11683
+ ]
11684
+ },
11685
+ result: [
11686
+ {
11687
+ type: ["Result"],
11688
+ value: "A-",
11689
+ resultDescription: "urn:uuid:wb-rd-letter"
11690
+ }
11691
+ ],
11692
+ creditsEarned: 3,
11693
+ term: "Spring 2023"
11694
+ }
11695
+ },
11696
+ {
11697
+ "@context": [
11698
+ "https://www.w3.org/ns/credentials/v2",
11699
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11700
+ ],
11701
+ id: "urn:uuid:wb-econ201",
11702
+ type: ["VerifiableCredential", "AchievementCredential"],
11703
+ name: "ECON 201 \u2014 Econometrics",
11704
+ issuer: {
11705
+ id: "did:web:registrar.westbridge.edu",
11706
+ type: ["Profile"],
11707
+ name: "Westbridge University"
11708
+ },
11709
+ validFrom: "2023-05-09T00:00:00Z",
11710
+ credentialSubject: {
11711
+ id: "did:example:wb-student-2025-001",
11712
+ type: ["AchievementSubject"],
11713
+ achievement: {
11714
+ id: "https://westbridge.edu/courses/econ201",
11715
+ type: ["Achievement"],
11716
+ achievementType: "Course",
11717
+ name: "Econometrics",
11718
+ description: "Causal inference, instrumental variables, difference-in-differences, panel data models, and applied regression in economic contexts.",
11719
+ humanCode: "ECON 201",
11720
+ fieldOfStudy: "Economics",
11721
+ inLanguage: "en",
11722
+ tag: ["causal-inference", "economics", "regression"],
11723
+ creator: {
11724
+ id: "https://westbridge.edu/departments/economics",
11725
+ type: ["Profile"],
11726
+ name: "Department of Economics"
11727
+ },
11728
+ resultDescription: [
11729
+ {
11730
+ id: "urn:uuid:wb-rd-letter",
11731
+ type: ["ResultDescription"],
11732
+ name: "Letter Grade",
11733
+ resultType: "LetterGrade",
11734
+ allowedValue: [
11735
+ "A+",
11736
+ "A",
11737
+ "A-",
11738
+ "B+",
11739
+ "B",
11740
+ "B-",
11741
+ "C+",
11742
+ "C",
11743
+ "C-",
11744
+ "D",
11745
+ "F"
11746
+ ]
11747
+ }
11748
+ ]
11749
+ },
11750
+ result: [
11751
+ {
11752
+ type: ["Result"],
11753
+ value: "B+",
11754
+ resultDescription: "urn:uuid:wb-rd-letter"
11755
+ }
11756
+ ],
11757
+ creditsEarned: 3,
11758
+ term: "Spring 2023"
11759
+ }
11760
+ },
11761
+ // ── YEAR 3 · FALL 2023 ────────────────────────────────────────────
11762
+ {
11763
+ "@context": [
11764
+ "https://www.w3.org/ns/credentials/v2",
11765
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11766
+ ],
11767
+ id: "urn:uuid:wb-ds301",
11768
+ type: ["VerifiableCredential", "AchievementCredential"],
11769
+ name: "DS 301 \u2014 Deep Learning",
11770
+ issuer: {
11771
+ id: "did:web:registrar.westbridge.edu",
11772
+ type: ["Profile"],
11773
+ name: "Westbridge University"
11774
+ },
11775
+ validFrom: "2023-12-13T00:00:00Z",
11776
+ credentialSubject: {
11777
+ id: "did:example:wb-student-2025-001",
11778
+ type: ["AchievementSubject"],
11779
+ achievement: {
11780
+ id: "https://westbridge.edu/courses/ds301",
11781
+ type: ["Achievement"],
11782
+ achievementType: "Course",
11783
+ name: "Deep Learning",
11784
+ description: "Neural network architectures, backpropagation, CNNs, RNNs, transformers, and training at scale using PyTorch.",
11785
+ humanCode: "DS 301",
11786
+ fieldOfStudy: "Data Science",
11787
+ inLanguage: "en",
11788
+ tag: ["deep-learning", "pytorch", "neural-networks"],
11789
+ creator: {
11790
+ id: "https://westbridge.edu/departments/data-science",
11791
+ type: ["Profile"],
11792
+ name: "Department of Data Science"
11793
+ },
11794
+ alignment: [
11795
+ {
11796
+ type: ["Alignment"],
11797
+ targetCode: "DS.ML.3",
11798
+ targetName: "Deep Learning Practice",
11799
+ targetFramework: "Westbridge DS Competency Framework v2",
11800
+ targetType: "CFItem",
11801
+ targetUrl: "https://westbridge.edu/frameworks/ds/ML.3",
11802
+ targetDescription: "Designs, trains, and evaluates deep neural network models for real-world tasks."
11803
+ }
11804
+ ],
11805
+ resultDescription: [
11806
+ {
11807
+ id: "urn:uuid:wb-rd-letter",
11808
+ type: ["ResultDescription"],
11809
+ name: "Letter Grade",
11810
+ resultType: "LetterGrade",
11811
+ allowedValue: [
11812
+ "A+",
11813
+ "A",
11814
+ "A-",
11815
+ "B+",
11816
+ "B",
11817
+ "B-",
11818
+ "C+",
11819
+ "C",
11820
+ "C-",
11821
+ "D",
11822
+ "F"
11823
+ ]
11824
+ }
11825
+ ]
11826
+ },
11827
+ result: [
11828
+ {
11829
+ type: ["Result"],
11830
+ value: "A",
11831
+ resultDescription: "urn:uuid:wb-rd-letter"
11832
+ }
11833
+ ],
11834
+ creditsEarned: 3,
11835
+ term: "Fall 2023"
11836
+ }
11837
+ },
11838
+ {
11839
+ "@context": [
11840
+ "https://www.w3.org/ns/credentials/v2",
11841
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11842
+ ],
11843
+ id: "urn:uuid:wb-ds310",
11844
+ type: ["VerifiableCredential", "AchievementCredential"],
11845
+ name: "DS 310 \u2014 Natural Language Processing",
11846
+ issuer: {
11847
+ id: "did:web:registrar.westbridge.edu",
11848
+ type: ["Profile"],
11849
+ name: "Westbridge University"
11850
+ },
11851
+ validFrom: "2023-12-13T00:00:00Z",
11852
+ credentialSubject: {
11853
+ id: "did:example:wb-student-2025-001",
11854
+ type: ["AchievementSubject"],
11855
+ achievement: {
11856
+ id: "https://westbridge.edu/courses/ds310",
11857
+ type: ["Achievement"],
11858
+ achievementType: "Course",
11859
+ name: "Natural Language Processing",
11860
+ description: "Text preprocessing, word embeddings, sequence models, attention mechanisms, and pre-trained language model fine-tuning.",
11861
+ humanCode: "DS 310",
11862
+ fieldOfStudy: "Data Science",
11863
+ inLanguage: "en",
11864
+ tag: ["nlp", "transformers", "llm"],
11865
+ creator: {
11866
+ id: "https://westbridge.edu/departments/data-science",
11867
+ type: ["Profile"],
11868
+ name: "Department of Data Science"
11869
+ },
11870
+ resultDescription: [
11871
+ {
11872
+ id: "urn:uuid:wb-rd-letter",
11873
+ type: ["ResultDescription"],
11874
+ name: "Letter Grade",
11875
+ resultType: "LetterGrade",
11876
+ allowedValue: [
11877
+ "A+",
11878
+ "A",
11879
+ "A-",
11880
+ "B+",
11881
+ "B",
11882
+ "B-",
11883
+ "C+",
11884
+ "C",
11885
+ "C-",
11886
+ "D",
11887
+ "F"
11888
+ ]
11889
+ }
11890
+ ]
11891
+ },
11892
+ result: [
11893
+ {
11894
+ type: ["Result"],
11895
+ value: "A",
11896
+ resultDescription: "urn:uuid:wb-rd-letter"
11897
+ }
11898
+ ],
11899
+ creditsEarned: 3,
11900
+ term: "Fall 2023"
11901
+ }
11902
+ },
11903
+ {
11904
+ "@context": [
11905
+ "https://www.w3.org/ns/credentials/v2",
11906
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11907
+ ],
11908
+ id: "urn:uuid:wb-phil310",
11909
+ type: ["VerifiableCredential", "AchievementCredential"],
11910
+ name: "PHIL 310 \u2014 Ethics in Artificial Intelligence",
11911
+ issuer: {
11912
+ id: "did:web:registrar.westbridge.edu",
11913
+ type: ["Profile"],
11914
+ name: "Westbridge University"
11915
+ },
11916
+ validFrom: "2023-12-13T00:00:00Z",
11917
+ credentialSubject: {
11918
+ id: "did:example:wb-student-2025-001",
11919
+ type: ["AchievementSubject"],
11920
+ achievement: {
11921
+ id: "https://westbridge.edu/courses/phil310",
11922
+ type: ["Achievement"],
11923
+ achievementType: "Course",
11924
+ name: "Ethics in Artificial Intelligence",
11925
+ description: "Algorithmic bias, fairness, transparency, accountability, privacy, and the societal implications of automated decision-making.",
11926
+ humanCode: "PHIL 310",
11927
+ fieldOfStudy: "Philosophy",
11928
+ inLanguage: "en",
11929
+ tag: ["ethics", "ai", "fairness"],
11930
+ creator: {
11931
+ id: "https://westbridge.edu/departments/philosophy",
11932
+ type: ["Profile"],
11933
+ name: "Department of Philosophy"
11934
+ },
11935
+ alignment: [
11936
+ {
11937
+ type: ["Alignment"],
11938
+ targetCode: "DS.ETHICS.1",
11939
+ targetName: "Responsible AI",
11940
+ targetFramework: "Westbridge DS Competency Framework v2",
11941
+ targetType: "CFItem",
11942
+ targetUrl: "https://westbridge.edu/frameworks/ds/ETHICS.1",
11943
+ targetDescription: "Evaluates AI systems for bias, fairness, and ethical risk."
11944
+ }
11945
+ ],
11946
+ resultDescription: [
11947
+ {
11948
+ id: "urn:uuid:wb-rd-letter",
11949
+ type: ["ResultDescription"],
11950
+ name: "Letter Grade",
11951
+ resultType: "LetterGrade",
11952
+ allowedValue: [
11953
+ "A+",
11954
+ "A",
11955
+ "A-",
11956
+ "B+",
11957
+ "B",
11958
+ "B-",
11959
+ "C+",
11960
+ "C",
11961
+ "C-",
11962
+ "D",
11963
+ "F"
11964
+ ]
11965
+ }
11966
+ ]
11967
+ },
11968
+ result: [
11969
+ {
11970
+ type: ["Result"],
11971
+ value: "A",
11972
+ resultDescription: "urn:uuid:wb-rd-letter"
11973
+ }
11974
+ ],
11975
+ creditsEarned: 3,
11976
+ term: "Fall 2023"
11977
+ }
11978
+ },
11979
+ // ── YEAR 3 · SPRING 2024 ──────────────────────────────────────────
11980
+ {
11981
+ "@context": [
11982
+ "https://www.w3.org/ns/credentials/v2",
11983
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
11984
+ ],
11985
+ id: "urn:uuid:wb-ds311",
11986
+ type: ["VerifiableCredential", "AchievementCredential"],
11987
+ name: "DS 311 \u2014 Computer Vision",
11988
+ issuer: {
11989
+ id: "did:web:registrar.westbridge.edu",
11990
+ type: ["Profile"],
11991
+ name: "Westbridge University"
11992
+ },
11993
+ validFrom: "2024-05-07T00:00:00Z",
11994
+ credentialSubject: {
11995
+ id: "did:example:wb-student-2025-001",
11996
+ type: ["AchievementSubject"],
11997
+ achievement: {
11998
+ id: "https://westbridge.edu/courses/ds311",
11999
+ type: ["Achievement"],
12000
+ achievementType: "Course",
12001
+ name: "Computer Vision",
12002
+ description: "Image classification, object detection, semantic segmentation, and generative models using convolutional and vision transformer architectures.",
12003
+ humanCode: "DS 311",
12004
+ fieldOfStudy: "Data Science",
12005
+ inLanguage: "en",
12006
+ tag: ["computer-vision", "cnn", "vit"],
12007
+ creator: {
12008
+ id: "https://westbridge.edu/departments/data-science",
12009
+ type: ["Profile"],
12010
+ name: "Department of Data Science"
12011
+ },
12012
+ resultDescription: [
12013
+ {
12014
+ id: "urn:uuid:wb-rd-letter",
12015
+ type: ["ResultDescription"],
12016
+ name: "Letter Grade",
12017
+ resultType: "LetterGrade",
12018
+ allowedValue: [
12019
+ "A+",
12020
+ "A",
12021
+ "A-",
12022
+ "B+",
12023
+ "B",
12024
+ "B-",
12025
+ "C+",
12026
+ "C",
12027
+ "C-",
12028
+ "D",
12029
+ "F"
12030
+ ]
12031
+ }
12032
+ ]
12033
+ },
12034
+ result: [
12035
+ {
12036
+ type: ["Result"],
12037
+ value: "A",
12038
+ resultDescription: "urn:uuid:wb-rd-letter"
12039
+ }
12040
+ ],
12041
+ creditsEarned: 3,
12042
+ term: "Spring 2024"
12043
+ }
12044
+ },
12045
+ {
12046
+ "@context": [
12047
+ "https://www.w3.org/ns/credentials/v2",
12048
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12049
+ ],
12050
+ id: "urn:uuid:wb-ds320",
12051
+ type: ["VerifiableCredential", "AchievementCredential"],
12052
+ name: "DS 320 \u2014 Big Data Engineering",
12053
+ issuer: {
12054
+ id: "did:web:registrar.westbridge.edu",
12055
+ type: ["Profile"],
12056
+ name: "Westbridge University"
12057
+ },
12058
+ validFrom: "2024-05-07T00:00:00Z",
12059
+ credentialSubject: {
12060
+ id: "did:example:wb-student-2025-001",
12061
+ type: ["AchievementSubject"],
12062
+ achievement: {
12063
+ id: "https://westbridge.edu/courses/ds320",
12064
+ type: ["Achievement"],
12065
+ achievementType: "Course",
12066
+ name: "Big Data Engineering",
12067
+ description: "Distributed computing with Spark, streaming data pipelines with Kafka, data lake architectures, and cloud-native processing on AWS and GCP.",
12068
+ humanCode: "DS 320",
12069
+ fieldOfStudy: "Data Science",
12070
+ inLanguage: "en",
12071
+ tag: ["spark", "kafka", "cloud", "distributed"],
12072
+ creator: {
12073
+ id: "https://westbridge.edu/departments/data-science",
12074
+ type: ["Profile"],
12075
+ name: "Department of Data Science"
12076
+ },
12077
+ resultDescription: [
12078
+ {
12079
+ id: "urn:uuid:wb-rd-letter",
12080
+ type: ["ResultDescription"],
12081
+ name: "Letter Grade",
12082
+ resultType: "LetterGrade",
12083
+ allowedValue: [
12084
+ "A+",
12085
+ "A",
12086
+ "A-",
12087
+ "B+",
12088
+ "B",
12089
+ "B-",
12090
+ "C+",
12091
+ "C",
12092
+ "C-",
12093
+ "D",
12094
+ "F"
12095
+ ]
12096
+ }
12097
+ ]
12098
+ },
12099
+ result: [
12100
+ {
12101
+ type: ["Result"],
12102
+ value: "A-",
12103
+ resultDescription: "urn:uuid:wb-rd-letter"
12104
+ }
12105
+ ],
12106
+ creditsEarned: 3,
12107
+ term: "Spring 2024"
12108
+ }
12109
+ },
12110
+ {
12111
+ "@context": [
12112
+ "https://www.w3.org/ns/credentials/v2",
12113
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12114
+ ],
12115
+ id: "urn:uuid:wb-stat401",
12116
+ type: ["VerifiableCredential", "AchievementCredential"],
12117
+ name: "STAT 401 \u2014 Bayesian Statistics",
12118
+ issuer: {
12119
+ id: "did:web:registrar.westbridge.edu",
12120
+ type: ["Profile"],
12121
+ name: "Westbridge University"
12122
+ },
12123
+ validFrom: "2024-05-07T00:00:00Z",
12124
+ credentialSubject: {
12125
+ id: "did:example:wb-student-2025-001",
12126
+ type: ["AchievementSubject"],
12127
+ achievement: {
12128
+ id: "https://westbridge.edu/courses/stat401",
12129
+ type: ["Achievement"],
12130
+ achievementType: "Course",
12131
+ name: "Bayesian Statistics",
12132
+ description: "Bayesian inference, prior and posterior distributions, MCMC sampling, hierarchical models, and probabilistic programming with Stan.",
12133
+ humanCode: "STAT 401",
12134
+ fieldOfStudy: "Statistics",
12135
+ inLanguage: "en",
12136
+ tag: ["bayesian", "mcmc", "statistics"],
12137
+ creator: {
12138
+ id: "https://westbridge.edu/departments/statistics",
12139
+ type: ["Profile"],
12140
+ name: "Department of Statistics and Applied Mathematics"
12141
+ },
12142
+ resultDescription: [
12143
+ {
12144
+ id: "urn:uuid:wb-rd-letter",
12145
+ type: ["ResultDescription"],
12146
+ name: "Letter Grade",
12147
+ resultType: "LetterGrade",
12148
+ allowedValue: [
12149
+ "A+",
12150
+ "A",
12151
+ "A-",
12152
+ "B+",
12153
+ "B",
12154
+ "B-",
12155
+ "C+",
12156
+ "C",
12157
+ "C-",
12158
+ "D",
12159
+ "F"
12160
+ ]
12161
+ }
12162
+ ]
12163
+ },
12164
+ result: [
12165
+ {
12166
+ type: ["Result"],
12167
+ value: "A",
12168
+ resultDescription: "urn:uuid:wb-rd-letter"
12169
+ }
12170
+ ],
12171
+ creditsEarned: 3,
12172
+ term: "Spring 2024"
12173
+ }
12174
+ },
12175
+ // ── YEAR 4 · FALL 2024 ────────────────────────────────────────────
12176
+ {
12177
+ "@context": [
12178
+ "https://www.w3.org/ns/credentials/v2",
12179
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12180
+ ],
12181
+ id: "urn:uuid:wb-ds401",
12182
+ type: ["VerifiableCredential", "AchievementCredential"],
12183
+ name: "DS 401 \u2014 Advanced Topics in AI",
12184
+ issuer: {
12185
+ id: "did:web:registrar.westbridge.edu",
12186
+ type: ["Profile"],
12187
+ name: "Westbridge University"
12188
+ },
12189
+ validFrom: "2024-12-11T00:00:00Z",
12190
+ credentialSubject: {
12191
+ id: "did:example:wb-student-2025-001",
12192
+ type: ["AchievementSubject"],
12193
+ achievement: {
12194
+ id: "https://westbridge.edu/courses/ds401",
12195
+ type: ["Achievement"],
12196
+ achievementType: "Course",
12197
+ name: "Advanced Topics in AI",
12198
+ description: "Reinforcement learning, multi-agent systems, causal ML, and emerging research directions in large-scale foundation models.",
12199
+ humanCode: "DS 401",
12200
+ fieldOfStudy: "Data Science",
12201
+ inLanguage: "en",
12202
+ tag: ["reinforcement-learning", "causal-ml", "research"],
12203
+ creator: {
12204
+ id: "https://westbridge.edu/departments/data-science",
12205
+ type: ["Profile"],
12206
+ name: "Department of Data Science"
12207
+ },
12208
+ resultDescription: [
12209
+ {
12210
+ id: "urn:uuid:wb-rd-letter",
12211
+ type: ["ResultDescription"],
12212
+ name: "Letter Grade",
12213
+ resultType: "LetterGrade",
12214
+ allowedValue: [
12215
+ "A+",
12216
+ "A",
12217
+ "A-",
12218
+ "B+",
12219
+ "B",
12220
+ "B-",
12221
+ "C+",
12222
+ "C",
12223
+ "C-",
12224
+ "D",
12225
+ "F"
12226
+ ]
12227
+ }
12228
+ ]
12229
+ },
12230
+ result: [
12231
+ {
12232
+ type: ["Result"],
12233
+ value: "A",
12234
+ resultDescription: "urn:uuid:wb-rd-letter"
12235
+ }
12236
+ ],
12237
+ creditsEarned: 3,
12238
+ term: "Fall 2024"
12239
+ }
12240
+ },
12241
+ {
12242
+ "@context": [
12243
+ "https://www.w3.org/ns/credentials/v2",
12244
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12245
+ ],
12246
+ id: "urn:uuid:wb-ds410",
12247
+ type: ["VerifiableCredential", "AchievementCredential"],
12248
+ name: "DS 410 \u2014 MLOps and Production Systems",
12249
+ issuer: {
12250
+ id: "did:web:registrar.westbridge.edu",
12251
+ type: ["Profile"],
12252
+ name: "Westbridge University"
12253
+ },
12254
+ validFrom: "2024-12-11T00:00:00Z",
12255
+ credentialSubject: {
12256
+ id: "did:example:wb-student-2025-001",
12257
+ type: ["AchievementSubject"],
12258
+ achievement: {
12259
+ id: "https://westbridge.edu/courses/ds410",
12260
+ type: ["Achievement"],
12261
+ achievementType: "Course",
12262
+ name: "MLOps and Production Systems",
12263
+ description: "Model versioning, experiment tracking, CI/CD for ML, monitoring, drift detection, and responsible deployment practices.",
12264
+ humanCode: "DS 410",
12265
+ fieldOfStudy: "Data Science",
12266
+ inLanguage: "en",
12267
+ tag: ["mlops", "deployment", "monitoring"],
12268
+ creator: {
12269
+ id: "https://westbridge.edu/departments/data-science",
12270
+ type: ["Profile"],
12271
+ name: "Department of Data Science"
12272
+ },
12273
+ resultDescription: [
12274
+ {
12275
+ id: "urn:uuid:wb-rd-letter",
12276
+ type: ["ResultDescription"],
12277
+ name: "Letter Grade",
12278
+ resultType: "LetterGrade",
12279
+ allowedValue: [
12280
+ "A+",
12281
+ "A",
12282
+ "A-",
12283
+ "B+",
12284
+ "B",
12285
+ "B-",
12286
+ "C+",
12287
+ "C",
12288
+ "C-",
12289
+ "D",
12290
+ "F"
12291
+ ]
12292
+ }
12293
+ ]
12294
+ },
12295
+ result: [
12296
+ {
12297
+ type: ["Result"],
12298
+ value: "A-",
12299
+ resultDescription: "urn:uuid:wb-rd-letter"
12300
+ }
12301
+ ],
12302
+ creditsEarned: 3,
12303
+ term: "Fall 2024"
12304
+ }
12305
+ },
12306
+ {
12307
+ "@context": [
12308
+ "https://www.w3.org/ns/credentials/v2",
12309
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12310
+ ],
12311
+ id: "urn:uuid:wb-ds420",
12312
+ type: ["VerifiableCredential", "AchievementCredential"],
12313
+ name: "DS 420 \u2014 Data Privacy and Security",
12314
+ issuer: {
12315
+ id: "did:web:registrar.westbridge.edu",
12316
+ type: ["Profile"],
12317
+ name: "Westbridge University"
12318
+ },
12319
+ validFrom: "2024-12-11T00:00:00Z",
12320
+ credentialSubject: {
12321
+ id: "did:example:wb-student-2025-001",
12322
+ type: ["AchievementSubject"],
12323
+ achievement: {
12324
+ id: "https://westbridge.edu/courses/ds420",
12325
+ type: ["Achievement"],
12326
+ achievementType: "Course",
12327
+ name: "Data Privacy and Security",
12328
+ description: "Differential privacy, federated learning, anonymization techniques, adversarial attacks, and regulatory compliance (GDPR, FERPA).",
12329
+ humanCode: "DS 420",
12330
+ fieldOfStudy: "Data Science",
12331
+ inLanguage: "en",
12332
+ tag: ["privacy", "security", "differential-privacy"],
12333
+ creator: {
12334
+ id: "https://westbridge.edu/departments/data-science",
12335
+ type: ["Profile"],
12336
+ name: "Department of Data Science"
12337
+ },
12338
+ resultDescription: [
12339
+ {
12340
+ id: "urn:uuid:wb-rd-letter",
12341
+ type: ["ResultDescription"],
12342
+ name: "Letter Grade",
12343
+ resultType: "LetterGrade",
12344
+ allowedValue: [
12345
+ "A+",
12346
+ "A",
12347
+ "A-",
12348
+ "B+",
12349
+ "B",
12350
+ "B-",
12351
+ "C+",
12352
+ "C",
12353
+ "C-",
12354
+ "D",
12355
+ "F"
12356
+ ]
12357
+ }
12358
+ ]
12359
+ },
12360
+ result: [
12361
+ {
12362
+ type: ["Result"],
12363
+ value: "A",
12364
+ resultDescription: "urn:uuid:wb-rd-letter"
12365
+ }
12366
+ ],
12367
+ creditsEarned: 3,
12368
+ term: "Fall 2024"
12369
+ }
12370
+ },
12371
+ // ── YEAR 4 · SPRING 2025 ──────────────────────────────────────────
12372
+ {
12373
+ "@context": [
12374
+ "https://www.w3.org/ns/credentials/v2",
12375
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12376
+ ],
12377
+ id: "urn:uuid:wb-ds490",
12378
+ type: ["VerifiableCredential", "AchievementCredential"],
12379
+ name: "DS 490 \u2014 Data Science Capstone",
12380
+ issuer: {
12381
+ id: "did:web:registrar.westbridge.edu",
12382
+ type: ["Profile"],
12383
+ name: "Westbridge University"
12384
+ },
12385
+ validFrom: "2025-05-07T00:00:00Z",
12386
+ evidence: [
12387
+ {
12388
+ id: "https://westbridge.edu/capstone/2025/reyes-jordan-report.pdf",
12389
+ type: ["Evidence"],
12390
+ name: "Capstone Final Report",
12391
+ description: 'Full written report for DS 490 capstone project: "Equitable Predictive Models for Community Health Resource Allocation".',
12392
+ genre: "Document",
12393
+ audience: "Faculty, Industry Partner"
12394
+ }
12395
+ ],
12396
+ credentialSubject: {
12397
+ id: "did:example:wb-student-2025-001",
12398
+ type: ["AchievementSubject"],
12399
+ achievement: {
12400
+ id: "https://westbridge.edu/courses/ds490",
12401
+ type: ["Achievement"],
12402
+ achievementType: "Course",
12403
+ name: "Data Science Capstone",
12404
+ description: "Year-long applied research project with an external partner. Students formulate a problem, collect and analyze data, and deliver a production-ready solution with full documentation.",
12405
+ humanCode: "DS 490",
12406
+ fieldOfStudy: "Data Science",
12407
+ inLanguage: "en",
12408
+ tag: ["capstone", "research", "applied"],
12409
+ creator: {
12410
+ id: "https://westbridge.edu/departments/data-science",
12411
+ type: ["Profile"],
12412
+ name: "Department of Data Science"
12413
+ },
12414
+ resultDescription: [
12415
+ {
12416
+ id: "urn:uuid:wb-rd-letter",
12417
+ type: ["ResultDescription"],
12418
+ name: "Letter Grade",
12419
+ resultType: "LetterGrade",
12420
+ allowedValue: [
12421
+ "A+",
12422
+ "A",
12423
+ "A-",
12424
+ "B+",
12425
+ "B",
12426
+ "B-",
12427
+ "C+",
12428
+ "C",
12429
+ "C-",
12430
+ "D",
12431
+ "F"
12432
+ ]
12433
+ }
12434
+ ]
12435
+ },
12436
+ result: [
12437
+ {
12438
+ type: ["Result"],
12439
+ value: "A+",
12440
+ resultDescription: "urn:uuid:wb-rd-letter"
12441
+ }
12442
+ ],
12443
+ creditsEarned: 6,
12444
+ term: "Spring 2025"
12445
+ }
12446
+ },
12447
+ {
12448
+ "@context": [
12449
+ "https://www.w3.org/ns/credentials/v2",
12450
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12451
+ ],
12452
+ id: "urn:uuid:wb-ds450",
12453
+ type: ["VerifiableCredential", "AchievementCredential"],
12454
+ name: "DS 450 \u2014 Research Methods in Data Science",
12455
+ issuer: {
12456
+ id: "did:web:registrar.westbridge.edu",
12457
+ type: ["Profile"],
12458
+ name: "Westbridge University"
12459
+ },
12460
+ validFrom: "2025-05-07T00:00:00Z",
12461
+ credentialSubject: {
12462
+ id: "did:example:wb-student-2025-001",
12463
+ type: ["AchievementSubject"],
12464
+ achievement: {
12465
+ id: "https://westbridge.edu/courses/ds450",
12466
+ type: ["Achievement"],
12467
+ achievementType: "Course",
12468
+ name: "Research Methods in Data Science",
12469
+ description: "Experimental design, reproducible research workflows, literature review, IRB protocols, and dissemination of findings through papers and open-source code.",
12470
+ humanCode: "DS 450",
12471
+ fieldOfStudy: "Data Science",
12472
+ inLanguage: "en",
12473
+ tag: ["research", "reproducibility", "methodology"],
12474
+ creator: {
12475
+ id: "https://westbridge.edu/departments/data-science",
12476
+ type: ["Profile"],
12477
+ name: "Department of Data Science"
12478
+ },
12479
+ resultDescription: [
12480
+ {
12481
+ id: "urn:uuid:wb-rd-letter",
12482
+ type: ["ResultDescription"],
12483
+ name: "Letter Grade",
12484
+ resultType: "LetterGrade",
12485
+ allowedValue: [
12486
+ "A+",
12487
+ "A",
12488
+ "A-",
12489
+ "B+",
12490
+ "B",
12491
+ "B-",
12492
+ "C+",
12493
+ "C",
12494
+ "C-",
12495
+ "D",
12496
+ "F"
12497
+ ]
12498
+ }
12499
+ ]
12500
+ },
12501
+ result: [
12502
+ {
12503
+ type: ["Result"],
12504
+ value: "A",
12505
+ resultDescription: "urn:uuid:wb-rd-letter"
12506
+ }
12507
+ ],
12508
+ creditsEarned: 3,
12509
+ term: "Spring 2025"
12510
+ }
12511
+ },
12512
+ {
12513
+ "@context": [
12514
+ "https://www.w3.org/ns/credentials/v2",
12515
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12516
+ ],
12517
+ id: "urn:uuid:wb-ds460",
12518
+ type: ["VerifiableCredential", "AchievementCredential"],
12519
+ name: "DS 460 \u2014 Data Science for Social Impact",
12520
+ issuer: {
12521
+ id: "did:web:registrar.westbridge.edu",
12522
+ type: ["Profile"],
12523
+ name: "Westbridge University"
12524
+ },
12525
+ validFrom: "2025-05-07T00:00:00Z",
12526
+ credentialSubject: {
12527
+ id: "did:example:wb-student-2025-001",
12528
+ type: ["AchievementSubject"],
12529
+ achievement: {
12530
+ id: "https://westbridge.edu/courses/ds460",
12531
+ type: ["Achievement"],
12532
+ achievementType: "Course",
12533
+ name: "Data Science for Social Impact",
12534
+ description: "Applications of data science to public health, education, climate, and civic technology. Covers community-engaged research and responsible disclosure.",
12535
+ humanCode: "DS 460",
12536
+ fieldOfStudy: "Data Science",
12537
+ inLanguage: "en",
12538
+ tag: ["social-impact", "public-health", "civic-tech"],
12539
+ creator: {
12540
+ id: "https://westbridge.edu/departments/data-science",
12541
+ type: ["Profile"],
12542
+ name: "Department of Data Science"
12543
+ },
12544
+ resultDescription: [
12545
+ {
12546
+ id: "urn:uuid:wb-rd-letter",
12547
+ type: ["ResultDescription"],
12548
+ name: "Letter Grade",
12549
+ resultType: "LetterGrade",
12550
+ allowedValue: [
12551
+ "A+",
12552
+ "A",
12553
+ "A-",
12554
+ "B+",
12555
+ "B",
12556
+ "B-",
12557
+ "C+",
12558
+ "C",
12559
+ "C-",
12560
+ "D",
12561
+ "F"
12562
+ ]
12563
+ }
12564
+ ]
12565
+ },
12566
+ result: [
12567
+ {
12568
+ type: ["Result"],
12569
+ value: "A",
12570
+ resultDescription: "urn:uuid:wb-rd-letter"
12571
+ }
12572
+ ],
12573
+ creditsEarned: 3,
12574
+ term: "Spring 2025"
12575
+ }
12576
+ },
12577
+ // ── DEGREE ────────────────────────────────────────────────────────
12578
+ {
12579
+ "@context": [
12580
+ "https://www.w3.org/ns/credentials/v2",
12581
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12582
+ ],
12583
+ id: "urn:uuid:wb-degree-001",
12584
+ type: ["VerifiableCredential", "AchievementCredential"],
12585
+ name: "Bachelor of Science in Data Science",
12586
+ issuer: {
12587
+ id: "did:web:registrar.westbridge.edu",
12588
+ type: ["Profile"],
12589
+ name: "Westbridge University"
12590
+ },
12591
+ validFrom: "2025-05-18T00:00:00Z",
12592
+ credentialSubject: {
12593
+ id: "did:example:wb-student-2025-001",
12594
+ type: ["AchievementSubject"],
12595
+ achievement: {
12596
+ id: "https://westbridge.edu/programs/bs-data-science",
12597
+ type: ["Achievement"],
12598
+ achievementType: "BachelorDegree",
12599
+ name: "Bachelor of Science in Data Science",
12600
+ description: "A four-year undergraduate program preparing graduates to extract insight from complex data through rigorous quantitative, computational, and ethical training.",
12601
+ humanCode: "BS-DS",
12602
+ fieldOfStudy: "Data Science",
12603
+ inLanguage: "en",
12604
+ tag: ["degree", "undergraduate", "data-science"],
12605
+ creator: {
12606
+ id: "https://westbridge.edu/departments/data-science",
12607
+ type: ["Profile"],
12608
+ name: "Department of Data Science"
12609
+ },
12610
+ alignment: [
12611
+ {
12612
+ type: ["Alignment"],
12613
+ targetCode: "ACM-DS-2021",
12614
+ targetName: "ACM Data Science Curricular Guidance",
12615
+ targetFramework: "ACM Computing Curricula 2021",
12616
+ targetType: "CFRubric",
12617
+ targetUrl: "https://www.acm.org/education/curricula-recommendations",
12618
+ targetDescription: "Program aligns with ACM 2021 data science undergraduate guidelines."
12619
+ }
12620
+ ],
12621
+ resultDescription: [
12622
+ {
12623
+ id: "urn:uuid:wb-rd-gpa",
12624
+ type: ["ResultDescription"],
12625
+ name: "Cumulative GPA",
12626
+ resultType: "GradePointAverage",
12627
+ valueMin: "0.0",
12628
+ valueMax: "4.0"
12629
+ },
12630
+ {
12631
+ id: "urn:uuid:wb-rd-credits",
12632
+ type: ["ResultDescription"],
12633
+ name: "Total Credits Earned",
12634
+ resultType: "RawScore",
12635
+ valueMin: "0",
12636
+ valueMax: "128"
12637
+ }
12638
+ ]
12639
+ },
12640
+ result: [
12641
+ {
12642
+ type: ["Result"],
12643
+ value: 3.87,
12644
+ resultDescription: "urn:uuid:wb-rd-gpa"
12645
+ },
12646
+ {
12647
+ type: ["Result"],
12648
+ value: 81,
12649
+ resultDescription: "urn:uuid:wb-rd-credits"
12650
+ }
12651
+ ]
12652
+ }
12653
+ },
12654
+ // ── COMPETENCIES ──────────────────────────────────────────────────
12655
+ {
12656
+ "@context": [
12657
+ "https://www.w3.org/ns/credentials/v2",
12658
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12659
+ ],
12660
+ id: "urn:uuid:wb-comp-001",
12661
+ type: ["VerifiableCredential", "AchievementCredential"],
12662
+ name: "Competency \u2014 Statistical Reasoning",
12663
+ issuer: {
12664
+ id: "did:web:registrar.westbridge.edu",
12665
+ type: ["Profile"],
12666
+ name: "Westbridge University"
12667
+ },
12668
+ validFrom: "2025-05-18T00:00:00Z",
12669
+ credentialSubject: {
12670
+ id: "did:example:wb-student-2025-001",
12671
+ type: ["AchievementSubject"],
12672
+ achievement: {
12673
+ id: "https://westbridge.edu/competencies/statistical-reasoning",
12674
+ type: ["Achievement"],
12675
+ achievementType: "Competency",
12676
+ name: "Statistical Reasoning",
12677
+ description: "Ability to select and apply appropriate statistical methods, interpret results, communicate uncertainty, and critique statistical claims.",
12678
+ fieldOfStudy: "Data Science",
12679
+ alignment: [
12680
+ {
12681
+ type: ["Alignment"],
12682
+ targetCode: "DS.STAT.2",
12683
+ targetName: "Advanced Statistical Reasoning",
12684
+ targetFramework: "Westbridge DS Competency Framework v2",
12685
+ targetType: "CFItem",
12686
+ targetUrl: "https://westbridge.edu/frameworks/ds/STAT.2"
12687
+ }
12688
+ ],
12689
+ resultDescription: [
12690
+ {
12691
+ id: "urn:uuid:wb-rd-comp-level",
12692
+ type: ["ResultDescription"],
12693
+ name: "Competency Level",
12694
+ resultType: "RubricCriterionLevel",
12695
+ allowedValue: [
12696
+ "Developing",
12697
+ "Proficient",
12698
+ "Advanced",
12699
+ "Distinguished"
12700
+ ]
12701
+ }
12702
+ ]
12703
+ },
12704
+ result: [
12705
+ {
12706
+ type: ["Result"],
12707
+ value: "Distinguished",
12708
+ resultDescription: "urn:uuid:wb-rd-comp-level"
12709
+ }
12710
+ ]
12711
+ }
12712
+ },
12713
+ {
12714
+ "@context": [
12715
+ "https://www.w3.org/ns/credentials/v2",
12716
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12717
+ ],
12718
+ id: "urn:uuid:wb-comp-002",
12719
+ type: ["VerifiableCredential", "AchievementCredential"],
12720
+ name: "Competency \u2014 Data Communication",
12721
+ issuer: {
12722
+ id: "did:web:registrar.westbridge.edu",
12723
+ type: ["Profile"],
12724
+ name: "Westbridge University"
12725
+ },
12726
+ validFrom: "2025-05-18T00:00:00Z",
12727
+ credentialSubject: {
12728
+ id: "did:example:wb-student-2025-001",
12729
+ type: ["AchievementSubject"],
12730
+ achievement: {
12731
+ id: "https://westbridge.edu/competencies/data-communication",
12732
+ type: ["Achievement"],
12733
+ achievementType: "Competency",
12734
+ name: "Data Communication",
12735
+ description: "Ability to synthesize analytical findings into clear written, visual, and oral narratives for both technical and non-technical audiences.",
12736
+ fieldOfStudy: "Data Science",
12737
+ resultDescription: [
12738
+ {
12739
+ id: "urn:uuid:wb-rd-comp-level",
12740
+ type: ["ResultDescription"],
12741
+ name: "Competency Level",
12742
+ resultType: "RubricCriterionLevel",
12743
+ allowedValue: [
12744
+ "Developing",
12745
+ "Proficient",
12746
+ "Advanced",
12747
+ "Distinguished"
12748
+ ]
12749
+ }
12750
+ ]
12751
+ },
12752
+ result: [
12753
+ {
12754
+ type: ["Result"],
12755
+ value: "Distinguished",
12756
+ resultDescription: "urn:uuid:wb-rd-comp-level"
12757
+ }
12758
+ ]
12759
+ }
12760
+ },
12761
+ {
12762
+ "@context": [
12763
+ "https://www.w3.org/ns/credentials/v2",
12764
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12765
+ ],
12766
+ id: "urn:uuid:wb-comp-003",
12767
+ type: ["VerifiableCredential", "AchievementCredential"],
12768
+ name: "Competency \u2014 Ethical AI Practice",
12769
+ issuer: {
12770
+ id: "did:web:registrar.westbridge.edu",
12771
+ type: ["Profile"],
12772
+ name: "Westbridge University"
12773
+ },
12774
+ validFrom: "2025-05-18T00:00:00Z",
12775
+ credentialSubject: {
12776
+ id: "did:example:wb-student-2025-001",
12777
+ type: ["AchievementSubject"],
12778
+ achievement: {
12779
+ id: "https://westbridge.edu/competencies/ethical-ai",
12780
+ type: ["Achievement"],
12781
+ achievementType: "Competency",
12782
+ name: "Ethical AI Practice",
12783
+ description: "Ability to identify, analyze, and mitigate bias, fairness, and harm in AI systems; applies ethical frameworks to real-world deployment decisions.",
12784
+ fieldOfStudy: "Data Science",
12785
+ alignment: [
12786
+ {
12787
+ type: ["Alignment"],
12788
+ targetCode: "DS.ETHICS.2",
12789
+ targetName: "Ethical AI Deployment",
12790
+ targetFramework: "Westbridge DS Competency Framework v2",
12791
+ targetType: "CFItem",
12792
+ targetUrl: "https://westbridge.edu/frameworks/ds/ETHICS.2"
12793
+ }
12794
+ ],
12795
+ resultDescription: [
12796
+ {
12797
+ id: "urn:uuid:wb-rd-comp-level",
12798
+ type: ["ResultDescription"],
12799
+ name: "Competency Level",
12800
+ resultType: "RubricCriterionLevel",
12801
+ allowedValue: [
12802
+ "Developing",
12803
+ "Proficient",
12804
+ "Advanced",
12805
+ "Distinguished"
12806
+ ]
12807
+ }
12808
+ ]
12809
+ },
12810
+ result: [
12811
+ {
12812
+ type: ["Result"],
12813
+ value: "Advanced",
12814
+ resultDescription: "urn:uuid:wb-rd-comp-level"
12815
+ }
12816
+ ]
12817
+ }
12818
+ },
12819
+ // ── STANDARDIZED ASSESSMENT ───────────────────────────────────────
12820
+ {
12821
+ "@context": [
12822
+ "https://www.w3.org/ns/credentials/v2",
12823
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
12824
+ ],
12825
+ id: "urn:uuid:wb-assess-001",
12826
+ type: ["VerifiableCredential", "AchievementCredential"],
12827
+ name: "ACT Score Report",
12828
+ issuer: {
12829
+ id: "did:web:registrar.westbridge.edu",
12830
+ type: ["Profile"],
12831
+ name: "Westbridge University"
12832
+ },
12833
+ validFrom: "2021-04-17T00:00:00Z",
12834
+ credentialSubject: {
12835
+ id: "did:example:wb-student-2025-001",
12836
+ type: ["AchievementSubject"],
12837
+ achievement: {
12838
+ id: "https://westbridge.edu/assessments/act-2021",
12839
+ type: ["Achievement"],
12840
+ achievementType: "Assessment",
12841
+ name: "ACT College Readiness Assessment",
12842
+ description: "ACT standardized college readiness test scores submitted during undergraduate admission. Scores reported on a 1\u201336 scale per section.",
12843
+ fieldOfStudy: "Assessment",
12844
+ resultDescription: [
12845
+ {
12846
+ id: "urn:uuid:wb-rd-act-composite",
12847
+ type: ["ResultDescription"],
12848
+ name: "Composite",
12849
+ resultType: "RawScore",
12850
+ valueMin: "1",
12851
+ valueMax: "36"
12852
+ },
12853
+ {
12854
+ id: "urn:uuid:wb-rd-act-english",
12855
+ type: ["ResultDescription"],
12856
+ name: "English",
12857
+ resultType: "RawScore",
12858
+ valueMin: "1",
12859
+ valueMax: "36"
12860
+ },
12861
+ {
12862
+ id: "urn:uuid:wb-rd-act-math",
12863
+ type: ["ResultDescription"],
12864
+ name: "Mathematics",
12865
+ resultType: "RawScore",
12866
+ valueMin: "1",
12867
+ valueMax: "36"
12868
+ },
12869
+ {
12870
+ id: "urn:uuid:wb-rd-act-reading",
12871
+ type: ["ResultDescription"],
12872
+ name: "Reading",
12873
+ resultType: "RawScore",
12874
+ valueMin: "1",
12875
+ valueMax: "36"
12876
+ },
12877
+ {
12878
+ id: "urn:uuid:wb-rd-act-science",
12879
+ type: ["ResultDescription"],
12880
+ name: "Science",
12881
+ resultType: "RawScore",
12882
+ valueMin: "1",
12883
+ valueMax: "36"
12884
+ },
12885
+ {
12886
+ id: "urn:uuid:wb-rd-act-writing",
12887
+ type: ["ResultDescription"],
12888
+ name: "Writing",
12889
+ resultType: "RawScore",
12890
+ valueMin: "2",
12891
+ valueMax: "12"
12892
+ }
12893
+ ]
12894
+ },
12895
+ result: [
12896
+ {
12897
+ type: ["Result"],
12898
+ value: 34,
12899
+ resultDescription: "urn:uuid:wb-rd-act-composite"
12900
+ },
12901
+ {
12902
+ type: ["Result"],
12903
+ value: 35,
12904
+ resultDescription: "urn:uuid:wb-rd-act-english"
12905
+ },
12906
+ {
12907
+ type: ["Result"],
12908
+ value: 33,
12909
+ resultDescription: "urn:uuid:wb-rd-act-math"
12910
+ },
12911
+ {
12912
+ type: ["Result"],
12913
+ value: 35,
12914
+ resultDescription: "urn:uuid:wb-rd-act-reading"
12915
+ },
12916
+ {
12917
+ type: ["Result"],
12918
+ value: 33,
12919
+ resultDescription: "urn:uuid:wb-rd-act-science"
12920
+ },
12921
+ {
12922
+ type: ["Result"],
12923
+ value: 10,
12924
+ resultDescription: "urn:uuid:wb-rd-act-writing"
12925
+ }
12926
+ ]
12927
+ }
12928
+ }
12929
+ ],
12930
+ achievement: [
12931
+ {
12932
+ id: "https://westbridge.edu/programs/bs-data-science",
12933
+ type: ["Achievement"],
12934
+ achievementType: "BachelorDegree",
12935
+ name: "Bachelor of Science in Data Science",
12936
+ humanCode: "BS-DS",
12937
+ fieldOfStudy: "Data Science",
12938
+ creator: {
12939
+ id: "https://westbridge.edu/departments/data-science",
12940
+ type: ["Profile"],
12941
+ name: "Department of Data Science"
12942
+ },
12943
+ resultDescription: [
12944
+ {
12945
+ id: "urn:uuid:wb-rd-gpa",
12946
+ type: ["ResultDescription"],
12947
+ name: "Cumulative GPA",
12948
+ resultType: "GradePointAverage",
12949
+ valueMin: "0.0",
12950
+ valueMax: "4.0"
12951
+ }
12952
+ ]
12953
+ }
12954
+ ],
12955
+ association: [
12956
+ // ── COURSE → DEGREE (isChildOf) ───────────────────────────────────
12957
+ // Every course is a component of the BS in Data Science.
12958
+ {
12959
+ type: ["Association"],
12960
+ associationType: "isChildOf",
12961
+ sourceId: "urn:uuid:wb-ds101",
12962
+ targetId: "urn:uuid:wb-degree-001"
12963
+ },
12964
+ // DS 101 → BS-DS
12965
+ {
12966
+ type: ["Association"],
12967
+ associationType: "isChildOf",
12968
+ sourceId: "urn:uuid:wb-math151",
12969
+ targetId: "urn:uuid:wb-degree-001"
12970
+ },
12971
+ // MATH 151 → BS-DS
12972
+ {
12973
+ type: ["Association"],
12974
+ associationType: "isChildOf",
12975
+ sourceId: "urn:uuid:wb-cs101",
12976
+ targetId: "urn:uuid:wb-degree-001"
12977
+ },
12978
+ // CS 101 → BS-DS
12979
+ {
12980
+ type: ["Association"],
12981
+ associationType: "isChildOf",
12982
+ sourceId: "urn:uuid:wb-stat201",
12983
+ targetId: "urn:uuid:wb-degree-001"
12984
+ },
12985
+ // STAT 201 → BS-DS
12986
+ {
12987
+ type: ["Association"],
12988
+ associationType: "isChildOf",
12989
+ sourceId: "urn:uuid:wb-math201",
12990
+ targetId: "urn:uuid:wb-degree-001"
12991
+ },
12992
+ // MATH 201 → BS-DS
12993
+ {
12994
+ type: ["Association"],
12995
+ associationType: "isChildOf",
12996
+ sourceId: "urn:uuid:wb-ds110",
12997
+ targetId: "urn:uuid:wb-degree-001"
12998
+ },
12999
+ // DS 110 → BS-DS
13000
+ {
13001
+ type: ["Association"],
13002
+ associationType: "isChildOf",
13003
+ sourceId: "urn:uuid:wb-ds201",
13004
+ targetId: "urn:uuid:wb-degree-001"
13005
+ },
13006
+ // DS 201 → BS-DS
13007
+ {
13008
+ type: ["Association"],
13009
+ associationType: "isChildOf",
13010
+ sourceId: "urn:uuid:wb-cs201",
13011
+ targetId: "urn:uuid:wb-degree-001"
13012
+ },
13013
+ // CS 201 → BS-DS
13014
+ {
13015
+ type: ["Association"],
13016
+ associationType: "isChildOf",
13017
+ sourceId: "urn:uuid:wb-comm201",
13018
+ targetId: "urn:uuid:wb-degree-001"
13019
+ },
13020
+ // COMM 201 → BS-DS
13021
+ {
13022
+ type: ["Association"],
13023
+ associationType: "isChildOf",
13024
+ sourceId: "urn:uuid:wb-ds211",
13025
+ targetId: "urn:uuid:wb-degree-001"
13026
+ },
13027
+ // DS 211 → BS-DS
13028
+ {
13029
+ type: ["Association"],
13030
+ associationType: "isChildOf",
13031
+ sourceId: "urn:uuid:wb-cs310",
13032
+ targetId: "urn:uuid:wb-degree-001"
13033
+ },
13034
+ // CS 310 → BS-DS
13035
+ {
13036
+ type: ["Association"],
13037
+ associationType: "isChildOf",
13038
+ sourceId: "urn:uuid:wb-econ201",
13039
+ targetId: "urn:uuid:wb-degree-001"
13040
+ },
13041
+ // ECON 201 → BS-DS
13042
+ {
13043
+ type: ["Association"],
13044
+ associationType: "isChildOf",
13045
+ sourceId: "urn:uuid:wb-ds301",
13046
+ targetId: "urn:uuid:wb-degree-001"
13047
+ },
13048
+ // DS 301 → BS-DS
13049
+ {
13050
+ type: ["Association"],
13051
+ associationType: "isChildOf",
13052
+ sourceId: "urn:uuid:wb-ds310",
13053
+ targetId: "urn:uuid:wb-degree-001"
13054
+ },
13055
+ // DS 310 → BS-DS
13056
+ {
13057
+ type: ["Association"],
13058
+ associationType: "isChildOf",
13059
+ sourceId: "urn:uuid:wb-phil310",
13060
+ targetId: "urn:uuid:wb-degree-001"
13061
+ },
13062
+ // PHIL 310 → BS-DS
13063
+ {
13064
+ type: ["Association"],
13065
+ associationType: "isChildOf",
13066
+ sourceId: "urn:uuid:wb-ds311",
13067
+ targetId: "urn:uuid:wb-degree-001"
13068
+ },
13069
+ // DS 311 → BS-DS
13070
+ {
13071
+ type: ["Association"],
13072
+ associationType: "isChildOf",
13073
+ sourceId: "urn:uuid:wb-ds320",
13074
+ targetId: "urn:uuid:wb-degree-001"
13075
+ },
13076
+ // DS 320 → BS-DS
13077
+ {
13078
+ type: ["Association"],
13079
+ associationType: "isChildOf",
13080
+ sourceId: "urn:uuid:wb-stat401",
13081
+ targetId: "urn:uuid:wb-degree-001"
13082
+ },
13083
+ // STAT 401 → BS-DS
13084
+ {
13085
+ type: ["Association"],
13086
+ associationType: "isChildOf",
13087
+ sourceId: "urn:uuid:wb-ds401",
13088
+ targetId: "urn:uuid:wb-degree-001"
13089
+ },
13090
+ // DS 401 → BS-DS
13091
+ {
13092
+ type: ["Association"],
13093
+ associationType: "isChildOf",
13094
+ sourceId: "urn:uuid:wb-ds410",
13095
+ targetId: "urn:uuid:wb-degree-001"
13096
+ },
13097
+ // DS 410 → BS-DS
13098
+ {
13099
+ type: ["Association"],
13100
+ associationType: "isChildOf",
13101
+ sourceId: "urn:uuid:wb-ds420",
13102
+ targetId: "urn:uuid:wb-degree-001"
13103
+ },
13104
+ // DS 420 → BS-DS
13105
+ {
13106
+ type: ["Association"],
13107
+ associationType: "isChildOf",
13108
+ sourceId: "urn:uuid:wb-ds490",
13109
+ targetId: "urn:uuid:wb-degree-001"
13110
+ },
13111
+ // DS 490 → BS-DS
13112
+ {
13113
+ type: ["Association"],
13114
+ associationType: "isChildOf",
13115
+ sourceId: "urn:uuid:wb-ds450",
13116
+ targetId: "urn:uuid:wb-degree-001"
13117
+ },
13118
+ // DS 450 → BS-DS
13119
+ {
13120
+ type: ["Association"],
13121
+ associationType: "isChildOf",
13122
+ sourceId: "urn:uuid:wb-ds460",
13123
+ targetId: "urn:uuid:wb-degree-001"
13124
+ },
13125
+ // DS 460 → BS-DS
13126
+ // ── COMPETENCY / ASSESSMENT → DEGREE (isRelatedTo) ────────────────
13127
+ // Program-level: all three competencies and the ACT score are related to
13128
+ // the degree as a whole (demonstrated across the full program).
13129
+ {
13130
+ type: ["Association"],
13131
+ associationType: "isRelatedTo",
13132
+ sourceId: "urn:uuid:wb-comp-001",
13133
+ targetId: "urn:uuid:wb-degree-001"
13134
+ },
13135
+ // Statistical Reasoning → BS-DS
13136
+ {
13137
+ type: ["Association"],
13138
+ associationType: "isRelatedTo",
13139
+ sourceId: "urn:uuid:wb-comp-002",
13140
+ targetId: "urn:uuid:wb-degree-001"
13141
+ },
13142
+ // Data Communication → BS-DS
13143
+ {
13144
+ type: ["Association"],
13145
+ associationType: "isRelatedTo",
13146
+ sourceId: "urn:uuid:wb-comp-003",
13147
+ targetId: "urn:uuid:wb-degree-001"
13148
+ },
13149
+ // Ethical AI Practice → BS-DS
13150
+ {
13151
+ type: ["Association"],
13152
+ associationType: "isRelatedTo",
13153
+ sourceId: "urn:uuid:wb-assess-001",
13154
+ targetId: "urn:uuid:wb-degree-001"
13155
+ },
13156
+ // ACT → BS-DS
13157
+ // ── COMPETENCY → COURSE (isRelatedTo) ─────────────────────────────
13158
+ // Course-level: each competency is also tied to the specific course(s)
13159
+ // that develop it, derived from matching alignment framework families.
13160
+ // Statistical Reasoning (DS.STAT.*) — STAT 201, DS 211, STAT 401
13161
+ {
13162
+ type: ["Association"],
13163
+ associationType: "isRelatedTo",
13164
+ sourceId: "urn:uuid:wb-comp-001",
13165
+ targetId: "urn:uuid:wb-stat201"
13166
+ },
13167
+ // Statistical Reasoning → STAT 201
13168
+ {
13169
+ type: ["Association"],
13170
+ associationType: "isRelatedTo",
13171
+ sourceId: "urn:uuid:wb-comp-001",
13172
+ targetId: "urn:uuid:wb-ds211"
13173
+ },
13174
+ // Statistical Reasoning → DS 211
13175
+ {
13176
+ type: ["Association"],
13177
+ associationType: "isRelatedTo",
13178
+ sourceId: "urn:uuid:wb-comp-001",
13179
+ targetId: "urn:uuid:wb-stat401"
13180
+ },
13181
+ // Statistical Reasoning → STAT 401
13182
+ // Data Communication — COMM 201
13183
+ {
13184
+ type: ["Association"],
13185
+ associationType: "isRelatedTo",
13186
+ sourceId: "urn:uuid:wb-comp-002",
13187
+ targetId: "urn:uuid:wb-comm201"
13188
+ },
13189
+ // Data Communication → COMM 201
13190
+ // Ethical AI Practice (DS.ETHICS.*) — PHIL 310, DS 420
13191
+ {
13192
+ type: ["Association"],
13193
+ associationType: "isRelatedTo",
13194
+ sourceId: "urn:uuid:wb-comp-003",
13195
+ targetId: "urn:uuid:wb-phil310"
13196
+ },
13197
+ // Ethical AI Practice → PHIL 310
13198
+ {
13199
+ type: ["Association"],
13200
+ associationType: "isRelatedTo",
13201
+ sourceId: "urn:uuid:wb-comp-003",
13202
+ targetId: "urn:uuid:wb-ds420"
13203
+ },
13204
+ // Ethical AI Practice → DS 420
13205
+ // ── PREREQUISITES (precedes) ──────────────────────────────────────
13206
+ // A → B means A must be completed before B.
13207
+ {
13208
+ type: ["Association"],
13209
+ associationType: "precedes",
13210
+ sourceId: "urn:uuid:wb-ds101",
13211
+ targetId: "urn:uuid:wb-ds110"
13212
+ },
13213
+ // DS 101 → DS 110
13214
+ {
13215
+ type: ["Association"],
13216
+ associationType: "precedes",
13217
+ sourceId: "urn:uuid:wb-ds101",
13218
+ targetId: "urn:uuid:wb-ds201"
13219
+ },
13220
+ // DS 101 → DS 201
13221
+ {
13222
+ type: ["Association"],
13223
+ associationType: "precedes",
13224
+ sourceId: "urn:uuid:wb-ds110",
13225
+ targetId: "urn:uuid:wb-ds201"
13226
+ },
13227
+ // DS 110 → DS 201
13228
+ {
13229
+ type: ["Association"],
13230
+ associationType: "precedes",
13231
+ sourceId: "urn:uuid:wb-math151",
13232
+ targetId: "urn:uuid:wb-math201"
13233
+ },
13234
+ // MATH 151 → MATH 201
13235
+ {
13236
+ type: ["Association"],
13237
+ associationType: "precedes",
13238
+ sourceId: "urn:uuid:wb-cs101",
13239
+ targetId: "urn:uuid:wb-cs201"
13240
+ },
13241
+ // CS 101 → CS 201
13242
+ {
13243
+ type: ["Association"],
13244
+ associationType: "precedes",
13245
+ sourceId: "urn:uuid:wb-stat201",
13246
+ targetId: "urn:uuid:wb-ds211"
13247
+ },
13248
+ // STAT 201 → DS 211
13249
+ {
13250
+ type: ["Association"],
13251
+ associationType: "precedes",
13252
+ sourceId: "urn:uuid:wb-cs101",
13253
+ targetId: "urn:uuid:wb-cs310"
13254
+ },
13255
+ // CS 101 → CS 310
13256
+ {
13257
+ type: ["Association"],
13258
+ associationType: "precedes",
13259
+ sourceId: "urn:uuid:wb-cs201",
13260
+ targetId: "urn:uuid:wb-cs310"
13261
+ },
13262
+ // CS 201 → CS 310
13263
+ {
13264
+ type: ["Association"],
13265
+ associationType: "precedes",
13266
+ sourceId: "urn:uuid:wb-ds201",
13267
+ targetId: "urn:uuid:wb-ds301"
13268
+ },
13269
+ // DS 201 → DS 301
13270
+ {
13271
+ type: ["Association"],
13272
+ associationType: "precedes",
13273
+ sourceId: "urn:uuid:wb-ds201",
13274
+ targetId: "urn:uuid:wb-ds310"
13275
+ },
13276
+ // DS 201 → DS 310
13277
+ {
13278
+ type: ["Association"],
13279
+ associationType: "precedes",
13280
+ sourceId: "urn:uuid:wb-ds211",
13281
+ targetId: "urn:uuid:wb-ds311"
13282
+ },
13283
+ // DS 211 → DS 311
13284
+ {
13285
+ type: ["Association"],
13286
+ associationType: "precedes",
13287
+ sourceId: "urn:uuid:wb-ds320",
13288
+ targetId: "urn:uuid:wb-ds401"
13289
+ },
13290
+ // DS 320 → DS 401
13291
+ {
13292
+ type: ["Association"],
13293
+ associationType: "precedes",
13294
+ sourceId: "urn:uuid:wb-phil310",
13295
+ targetId: "urn:uuid:wb-ds420"
13296
+ },
13297
+ // PHIL 310 → DS 420
13298
+ {
13299
+ type: ["Association"],
13300
+ associationType: "precedes",
13301
+ sourceId: "urn:uuid:wb-ds301",
13302
+ targetId: "urn:uuid:wb-ds401"
13303
+ },
13304
+ // DS 301 → DS 401
13305
+ {
13306
+ type: ["Association"],
13307
+ associationType: "precedes",
13308
+ sourceId: "urn:uuid:wb-ds301",
13309
+ targetId: "urn:uuid:wb-ds490"
13310
+ },
13311
+ // DS 301 → DS 490
13312
+ {
13313
+ type: ["Association"],
13314
+ associationType: "precedes",
13315
+ sourceId: "urn:uuid:wb-ds401",
13316
+ targetId: "urn:uuid:wb-ds490"
13317
+ },
13318
+ // DS 401 → DS 490
13319
+ {
13320
+ type: ["Association"],
13321
+ associationType: "precedes",
13322
+ sourceId: "urn:uuid:wb-ds410",
13323
+ targetId: "urn:uuid:wb-ds490"
13324
+ },
13325
+ // DS 410 → DS 490
13326
+ {
13327
+ type: ["Association"],
13328
+ associationType: "precedes",
13329
+ sourceId: "urn:uuid:wb-ds450",
13330
+ targetId: "urn:uuid:wb-ds490"
13331
+ }
13332
+ // DS 450 → DS 490
13333
+ ]
13334
+ }
13335
+ }
13336
+ };
13337
+
13338
+ // src/fixtures/clr/competency-aligned.ts
13339
+ var clrCompetencyAligned = {
13340
+ id: "clr/competency-aligned",
13341
+ name: "Riverside College \u2014 Competency-Aligned Web Development Certificate",
13342
+ description: "A compact CLR v2 transcript that ties courses and a certificate to competency framework alignments, links competency credentials to their parent courses via associations, and carries evidence at the transcript, course, and program levels.",
13343
+ spec: "clr-v2",
13344
+ profile: "learner-record",
13345
+ features: [
13346
+ "results",
13347
+ "evidence",
13348
+ "alignment",
13349
+ "image",
13350
+ "associations",
13351
+ "nested-credentials",
13352
+ "status"
13353
+ ],
13354
+ source: "synthetic",
13355
+ signed: false,
13356
+ validity: "valid",
13357
+ tags: ["transcript", "certificate", "web-development", "clr-v2", "alignment", "competencies"],
13358
+ credential: {
13359
+ "@context": [
13360
+ "https://www.w3.org/ns/credentials/v2",
13361
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
13362
+ "https://purl.imsglobal.org/spec/clr/v2p0/context-2.0.1.json"
13363
+ ],
13364
+ id: "urn:uuid:rc-clr-2025-sam-okafor-001",
13365
+ type: ["VerifiableCredential", "ClrCredential"],
13366
+ name: "Web Development Certificate \u2014 Riverside College",
13367
+ description: "Competency-aligned certificate record for Samuel Okafor, documenting four courses, three demonstrated competencies, and the awarded Full-Stack Web Development certificate.",
13368
+ image: {
13369
+ id: "https://www.rcc.edu/_resources/assets/icons/riverside-logo.svg",
13370
+ type: "Image",
13371
+ caption: "Riverside College official logo"
13372
+ },
13373
+ issuer: {
13374
+ id: "did:web:registrar.riverside.edu",
13375
+ type: ["Profile"],
13376
+ name: "Riverside College \u2014 Office of the Registrar",
13377
+ url: "https://riverside.edu/registrar",
13378
+ email: "registrar@riverside.edu",
13379
+ image: {
13380
+ id: "https://www.rcc.edu/_resources/assets/icons/riverside-logo.svg",
13381
+ type: "Image",
13382
+ caption: "Riverside City College official logo"
13383
+ },
13384
+ address: {
13385
+ type: ["Address"],
13386
+ streetAddress: "450 River Road",
13387
+ addressLocality: "Riverside",
13388
+ addressRegion: "CA",
13389
+ postalCode: "92501",
13390
+ addressCountry: "USA"
13391
+ }
13392
+ },
13393
+ validFrom: "2025-06-02T00:00:00Z",
13394
+ awardedDate: "2025-05-30",
13395
+ credentialStatus: {
13396
+ id: "https://registrar.riverside.edu/status/2025#7",
13397
+ type: "BitstringStatusListEntry",
13398
+ statusPurpose: "revocation",
13399
+ statusListIndex: "7",
13400
+ statusListCredential: "https://registrar.riverside.edu/status/2025"
13401
+ },
13402
+ // Top-level evidence — belongs to the transcript as a whole.
13403
+ evidence: [
13404
+ {
13405
+ id: "https://registrar.riverside.edu/transcripts/t-rc-2025-001.pdf",
13406
+ type: ["Evidence"],
13407
+ name: "Official Certificate Transcript",
13408
+ description: "Official sealed certificate transcript issued by the Office of the Registrar.",
13409
+ genre: "Document",
13410
+ audience: "Employer"
13411
+ }
13412
+ ],
13413
+ credentialSubject: {
13414
+ id: "did:example:rc-student-2025-001",
13415
+ type: ["ClrSubject"],
13416
+ identifier: [
13417
+ {
13418
+ type: "IdentityObject",
13419
+ identityHash: "Samuel Okafor",
13420
+ identityType: "name",
13421
+ hashed: false
13422
+ },
13423
+ {
13424
+ type: "IdentityObject",
13425
+ identityHash: "s.okafor@riverside.edu",
13426
+ identityType: "emailAddress",
13427
+ hashed: false
13428
+ },
13429
+ {
13430
+ type: "IdentityObject",
13431
+ identityHash: "RC-2023-0188",
13432
+ identityType: "studentId",
13433
+ hashed: false
13434
+ }
13435
+ ],
13436
+ verifiableCredential: [
13437
+ // ── COURSE 1 ──────────────────────────────────────────────────────
13438
+ {
13439
+ "@context": [
13440
+ "https://www.w3.org/ns/credentials/v2",
13441
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13442
+ ],
13443
+ id: "urn:uuid:rc-web101",
13444
+ type: ["VerifiableCredential", "AchievementCredential"],
13445
+ name: "WEB 101 \u2014 HTML, CSS & Accessibility",
13446
+ issuer: {
13447
+ id: "did:web:registrar.riverside.edu",
13448
+ type: ["Profile"],
13449
+ name: "Riverside College"
13450
+ },
13451
+ validFrom: "2024-09-20T00:00:00Z",
13452
+ // Per-course evidence.
13453
+ evidence: [
13454
+ {
13455
+ id: "https://riverside.edu/portfolios/okafor/web101-landing-page.png",
13456
+ type: ["Evidence"],
13457
+ name: "Accessible Landing Page",
13458
+ description: "Final project: a WCAG 2.1 AA-compliant responsive landing page.",
13459
+ genre: "Image",
13460
+ audience: "Faculty, Employer"
13461
+ }
13462
+ ],
13463
+ credentialSubject: {
13464
+ id: "did:example:rc-student-2025-001",
13465
+ type: ["AchievementSubject"],
13466
+ achievement: {
13467
+ id: "https://riverside.edu/courses/web101",
13468
+ type: ["Achievement"],
13469
+ achievementType: "Course",
13470
+ name: "HTML, CSS & Accessibility",
13471
+ description: "Semantic HTML, modern CSS layout (flexbox, grid), responsive design, and building to WCAG accessibility standards.",
13472
+ humanCode: "WEB 101",
13473
+ fieldOfStudy: "Web Development",
13474
+ inLanguage: "en",
13475
+ // Course → framework competency alignment.
13476
+ alignment: [
13477
+ {
13478
+ type: ["Alignment"],
13479
+ targetCode: "WD.FRONT.1",
13480
+ targetName: "Front-End Fundamentals",
13481
+ targetFramework: "Riverside Web Dev Competency Framework",
13482
+ targetType: "CFItem",
13483
+ targetUrl: "https://riverside.edu/frameworks/wd/FRONT.1",
13484
+ targetDescription: "Builds accessible, responsive interfaces with semantic HTML and modern CSS."
13485
+ },
13486
+ {
13487
+ type: ["Alignment"],
13488
+ targetCode: "ceasn:accessibility-aware-design",
13489
+ targetName: "Accessibility-Aware Design",
13490
+ targetFramework: "Open Skills Network",
13491
+ targetType: "ceasn:Competency",
13492
+ targetUrl: "https://osn.example.org/competencies/accessibility-aware-design"
13493
+ }
13494
+ ],
13495
+ resultDescription: [
13496
+ {
13497
+ id: "urn:uuid:rc-rd-letter",
13498
+ type: ["ResultDescription"],
13499
+ name: "Letter Grade",
13500
+ resultType: "LetterGrade",
13501
+ allowedValue: ["A", "B", "C", "D", "F"]
13502
+ }
13503
+ ]
13504
+ },
13505
+ result: [
13506
+ {
13507
+ type: ["Result"],
13508
+ value: "A",
13509
+ resultDescription: "urn:uuid:rc-rd-letter"
13510
+ }
13511
+ ],
13512
+ creditsEarned: 3,
13513
+ term: "Fall 2024"
13514
+ }
13515
+ },
13516
+ // ── COURSE 2 ──────────────────────────────────────────────────────
13517
+ {
13518
+ "@context": [
13519
+ "https://www.w3.org/ns/credentials/v2",
13520
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13521
+ ],
13522
+ id: "urn:uuid:rc-web150",
13523
+ type: ["VerifiableCredential", "AchievementCredential"],
13524
+ name: "WEB 150 \u2014 JavaScript Programming",
13525
+ issuer: {
13526
+ id: "did:web:registrar.riverside.edu",
13527
+ type: ["Profile"],
13528
+ name: "Riverside College"
13529
+ },
13530
+ validFrom: "2024-12-18T00:00:00Z",
13531
+ evidence: [
13532
+ {
13533
+ id: "https://riverside.edu/portfolios/okafor/web150-todo-app.pdf",
13534
+ type: ["Evidence"],
13535
+ name: "Interactive To-Do App Writeup",
13536
+ description: "Project report for a vanilla-JS task manager with localStorage persistence.",
13537
+ genre: "Document",
13538
+ audience: "Faculty"
13539
+ }
13540
+ ],
13541
+ credentialSubject: {
13542
+ id: "did:example:rc-student-2025-001",
13543
+ type: ["AchievementSubject"],
13544
+ achievement: {
13545
+ id: "https://riverside.edu/courses/web150",
13546
+ type: ["Achievement"],
13547
+ achievementType: "Course",
13548
+ name: "JavaScript Programming",
13549
+ description: "Core JavaScript: types, functions, closures, the DOM, events, asynchronous patterns, and fetch.",
13550
+ humanCode: "WEB 150",
13551
+ fieldOfStudy: "Web Development",
13552
+ inLanguage: "en",
13553
+ alignment: [
13554
+ {
13555
+ type: ["Alignment"],
13556
+ targetCode: "WD.PROG.1",
13557
+ targetName: "Client-Side Programming",
13558
+ targetFramework: "Riverside Web Dev Competency Framework",
13559
+ targetType: "CFItem",
13560
+ targetUrl: "https://riverside.edu/frameworks/wd/PROG.1",
13561
+ targetDescription: "Writes interactive client-side logic using modern JavaScript."
13562
+ }
13563
+ ],
13564
+ resultDescription: [
13565
+ {
13566
+ id: "urn:uuid:rc-rd-letter",
13567
+ type: ["ResultDescription"],
13568
+ name: "Letter Grade",
13569
+ resultType: "LetterGrade",
13570
+ allowedValue: ["A", "B", "C", "D", "F"]
13571
+ }
13572
+ ]
13573
+ },
13574
+ result: [
13575
+ {
13576
+ type: ["Result"],
13577
+ value: "A-",
13578
+ resultDescription: "urn:uuid:rc-rd-letter"
13579
+ }
13580
+ ],
13581
+ creditsEarned: 4,
13582
+ term: "Fall 2024"
13583
+ }
13584
+ },
13585
+ // ── COURSE 3 ──────────────────────────────────────────────────────
13586
+ {
13587
+ "@context": [
13588
+ "https://www.w3.org/ns/credentials/v2",
13589
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13590
+ ],
13591
+ id: "urn:uuid:rc-web220",
13592
+ type: ["VerifiableCredential", "AchievementCredential"],
13593
+ name: "WEB 220 \u2014 React & Component Architecture",
13594
+ issuer: {
13595
+ id: "did:web:registrar.riverside.edu",
13596
+ type: ["Profile"],
13597
+ name: "Riverside College"
13598
+ },
13599
+ validFrom: "2025-05-14T00:00:00Z",
13600
+ credentialSubject: {
13601
+ id: "did:example:rc-student-2025-001",
13602
+ type: ["AchievementSubject"],
13603
+ achievement: {
13604
+ id: "https://riverside.edu/courses/web220",
13605
+ type: ["Achievement"],
13606
+ achievementType: "Course",
13607
+ name: "React & Component Architecture",
13608
+ description: "Building component-based UIs with React: hooks, state management, data fetching, and testing.",
13609
+ humanCode: "WEB 220",
13610
+ fieldOfStudy: "Web Development",
13611
+ inLanguage: "en",
13612
+ alignment: [
13613
+ {
13614
+ type: ["Alignment"],
13615
+ targetCode: "WD.PROG.2",
13616
+ targetName: "Component-Based UI Engineering",
13617
+ targetFramework: "Riverside Web Dev Competency Framework",
13618
+ targetType: "CFItem",
13619
+ targetUrl: "https://riverside.edu/frameworks/wd/PROG.2"
13620
+ }
13621
+ ],
13622
+ resultDescription: [
13623
+ {
13624
+ id: "urn:uuid:rc-rd-letter",
13625
+ type: ["ResultDescription"],
13626
+ name: "Letter Grade",
13627
+ resultType: "LetterGrade",
13628
+ allowedValue: ["A", "B", "C", "D", "F"]
13629
+ }
13630
+ ]
13631
+ },
13632
+ result: [
13633
+ {
13634
+ type: ["Result"],
13635
+ value: "A",
13636
+ resultDescription: "urn:uuid:rc-rd-letter"
13637
+ }
13638
+ ],
13639
+ creditsEarned: 4,
13640
+ term: "Spring 2025"
13641
+ }
13642
+ },
13643
+ // ── COURSE 4 ──────────────────────────────────────────────────────
13644
+ {
13645
+ "@context": [
13646
+ "https://www.w3.org/ns/credentials/v2",
13647
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13648
+ ],
13649
+ id: "urn:uuid:rc-web240",
13650
+ type: ["VerifiableCredential", "AchievementCredential"],
13651
+ name: "WEB 240 \u2014 APIs & Backend Services",
13652
+ issuer: {
13653
+ id: "did:web:registrar.riverside.edu",
13654
+ type: ["Profile"],
13655
+ name: "Riverside College"
13656
+ },
13657
+ validFrom: "2025-05-14T00:00:00Z",
13658
+ evidence: [
13659
+ {
13660
+ id: "https://riverside.edu/portfolios/okafor/web240-api.pdf",
13661
+ type: ["Evidence"],
13662
+ name: "REST API Design Document",
13663
+ description: "Design and implementation notes for a Node/Express REST API with auth.",
13664
+ genre: "Document",
13665
+ audience: "Faculty, Employer"
13666
+ }
13667
+ ],
13668
+ credentialSubject: {
13669
+ id: "did:example:rc-student-2025-001",
13670
+ type: ["AchievementSubject"],
13671
+ achievement: {
13672
+ id: "https://riverside.edu/courses/web240",
13673
+ type: ["Achievement"],
13674
+ achievementType: "Course",
13675
+ name: "APIs & Backend Services",
13676
+ description: "Designing and building RESTful services with Node and Express, authentication, and persistence.",
13677
+ humanCode: "WEB 240",
13678
+ fieldOfStudy: "Web Development",
13679
+ inLanguage: "en",
13680
+ alignment: [
13681
+ {
13682
+ type: ["Alignment"],
13683
+ targetCode: "WD.BACK.1",
13684
+ targetName: "Server-Side Services",
13685
+ targetFramework: "Riverside Web Dev Competency Framework",
13686
+ targetType: "CFItem",
13687
+ targetUrl: "https://riverside.edu/frameworks/wd/BACK.1"
13688
+ }
13689
+ ],
13690
+ resultDescription: [
13691
+ {
13692
+ id: "urn:uuid:rc-rd-letter",
13693
+ type: ["ResultDescription"],
13694
+ name: "Letter Grade",
13695
+ resultType: "LetterGrade",
13696
+ allowedValue: ["A", "B", "C", "D", "F"]
13697
+ }
13698
+ ]
13699
+ },
13700
+ result: [
13701
+ {
13702
+ type: ["Result"],
13703
+ value: "B+",
13704
+ resultDescription: "urn:uuid:rc-rd-letter"
13705
+ }
13706
+ ],
13707
+ creditsEarned: 4,
13708
+ term: "Spring 2025"
13709
+ }
13710
+ },
13711
+ // ── CERTIFICATE (PROGRAM) ─────────────────────────────────────────
13712
+ {
13713
+ "@context": [
13714
+ "https://www.w3.org/ns/credentials/v2",
13715
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13716
+ ],
13717
+ id: "urn:uuid:rc-cert-001",
13718
+ type: ["VerifiableCredential", "AchievementCredential"],
13719
+ name: "Full-Stack Web Development Certificate",
13720
+ issuer: {
13721
+ id: "did:web:registrar.riverside.edu",
13722
+ type: ["Profile"],
13723
+ name: "Riverside College"
13724
+ },
13725
+ validFrom: "2025-05-30T00:00:00Z",
13726
+ // Program-level evidence.
13727
+ evidence: [
13728
+ {
13729
+ id: "https://riverside.edu/certificates/c-rc-2025-001.jpg",
13730
+ type: ["Evidence"],
13731
+ name: "Certificate of Completion",
13732
+ description: "Full-Stack Web Development certificate awarded May 30, 2025.",
13733
+ genre: "Image",
13734
+ audience: "General"
13735
+ }
13736
+ ],
13737
+ credentialSubject: {
13738
+ id: "did:example:rc-student-2025-001",
13739
+ type: ["AchievementSubject"],
13740
+ achievement: {
13741
+ id: "https://riverside.edu/programs/fullstack-cert",
13742
+ type: ["Achievement"],
13743
+ achievementType: "LearningProgram",
13744
+ name: "Full-Stack Web Development Certificate",
13745
+ description: "A professional certificate covering the full web stack: accessible front-ends, interactive JavaScript, React, and backend APIs.",
13746
+ humanCode: "CERT-FSWD",
13747
+ fieldOfStudy: "Web Development",
13748
+ inLanguage: "en",
13749
+ // Program → framework alignment.
13750
+ alignment: [
13751
+ {
13752
+ type: ["Alignment"],
13753
+ targetCode: "OND-WEBDEV",
13754
+ targetName: "O*NET Web Developers (15-1254.00)",
13755
+ targetFramework: "O*NET-SOC 2019",
13756
+ targetType: "CTDL",
13757
+ targetUrl: "https://www.onetonline.org/link/summary/15-1254.00",
13758
+ targetDescription: "Aligns to the O*NET occupational profile for Web Developers."
13759
+ }
13760
+ ],
13761
+ resultDescription: [
13762
+ {
13763
+ id: "urn:uuid:rc-rd-gpa",
13764
+ type: ["ResultDescription"],
13765
+ name: "Certificate GPA",
13766
+ resultType: "GradePointAverage",
13767
+ valueMin: "0.0",
13768
+ valueMax: "4.0"
13769
+ }
13770
+ ]
13771
+ },
13772
+ result: [
13773
+ {
13774
+ type: ["Result"],
13775
+ value: 3.78,
13776
+ resultDescription: "urn:uuid:rc-rd-gpa"
13777
+ }
13778
+ ]
13779
+ }
13780
+ },
13781
+ // ── COMPETENCIES ──────────────────────────────────────────────────
13782
+ {
13783
+ "@context": [
13784
+ "https://www.w3.org/ns/credentials/v2",
13785
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13786
+ ],
13787
+ id: "urn:uuid:rc-comp-frontend",
13788
+ type: ["VerifiableCredential", "AchievementCredential"],
13789
+ name: "Competency \u2014 Accessible Front-End Development",
13790
+ issuer: {
13791
+ id: "did:web:registrar.riverside.edu",
13792
+ type: ["Profile"],
13793
+ name: "Riverside College"
13794
+ },
13795
+ validFrom: "2025-05-30T00:00:00Z",
13796
+ credentialSubject: {
13797
+ id: "did:example:rc-student-2025-001",
13798
+ type: ["AchievementSubject"],
13799
+ achievement: {
13800
+ id: "https://riverside.edu/competencies/accessible-frontend",
13801
+ type: ["Achievement"],
13802
+ achievementType: "Competency",
13803
+ name: "Accessible Front-End Development",
13804
+ description: "Builds responsive, accessible user interfaces that meet WCAG 2.1 AA.",
13805
+ fieldOfStudy: "Web Development",
13806
+ alignment: [
13807
+ {
13808
+ type: ["Alignment"],
13809
+ targetCode: "WD.FRONT.1",
13810
+ targetName: "Front-End Fundamentals",
13811
+ targetFramework: "Riverside Web Dev Competency Framework",
13812
+ targetType: "CFItem",
13813
+ targetUrl: "https://riverside.edu/frameworks/wd/FRONT.1"
13814
+ }
13815
+ ],
13816
+ resultDescription: [
13817
+ {
13818
+ id: "urn:uuid:rc-rd-comp-level",
13819
+ type: ["ResultDescription"],
13820
+ name: "Competency Level",
13821
+ resultType: "RubricCriterionLevel",
13822
+ allowedValue: ["Developing", "Proficient", "Advanced"]
13823
+ }
13824
+ ]
13825
+ },
13826
+ result: [
13827
+ {
13828
+ type: ["Result"],
13829
+ value: "Advanced",
13830
+ resultDescription: "urn:uuid:rc-rd-comp-level"
13831
+ }
13832
+ ]
13833
+ }
13834
+ },
13835
+ {
13836
+ "@context": [
13837
+ "https://www.w3.org/ns/credentials/v2",
13838
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13839
+ ],
13840
+ id: "urn:uuid:rc-comp-js",
13841
+ type: ["VerifiableCredential", "AchievementCredential"],
13842
+ name: "Competency \u2014 JavaScript Application Development",
13843
+ issuer: {
13844
+ id: "did:web:registrar.riverside.edu",
13845
+ type: ["Profile"],
13846
+ name: "Riverside College"
13847
+ },
13848
+ validFrom: "2025-05-30T00:00:00Z",
13849
+ credentialSubject: {
13850
+ id: "did:example:rc-student-2025-001",
13851
+ type: ["AchievementSubject"],
13852
+ achievement: {
13853
+ id: "https://riverside.edu/competencies/javascript-apps",
13854
+ type: ["Achievement"],
13855
+ achievementType: "Competency",
13856
+ name: "JavaScript Application Development",
13857
+ description: "Designs and builds interactive applications using JavaScript and React.",
13858
+ fieldOfStudy: "Web Development",
13859
+ alignment: [
13860
+ {
13861
+ type: ["Alignment"],
13862
+ targetCode: "WD.PROG.2",
13863
+ targetName: "Component-Based UI Engineering",
13864
+ targetFramework: "Riverside Web Dev Competency Framework",
13865
+ targetType: "CFItem",
13866
+ targetUrl: "https://riverside.edu/frameworks/wd/PROG.2"
13867
+ }
13868
+ ],
13869
+ resultDescription: [
13870
+ {
13871
+ id: "urn:uuid:rc-rd-comp-level",
13872
+ type: ["ResultDescription"],
13873
+ name: "Competency Level",
13874
+ resultType: "RubricCriterionLevel",
13875
+ allowedValue: ["Developing", "Proficient", "Advanced"]
13876
+ }
13877
+ ]
13878
+ },
13879
+ result: [
13880
+ {
13881
+ type: ["Result"],
13882
+ value: "Proficient",
13883
+ resultDescription: "urn:uuid:rc-rd-comp-level"
13884
+ }
13885
+ ]
13886
+ }
13887
+ },
13888
+ {
13889
+ "@context": [
13890
+ "https://www.w3.org/ns/credentials/v2",
13891
+ "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
13892
+ ],
13893
+ id: "urn:uuid:rc-comp-backend",
13894
+ type: ["VerifiableCredential", "AchievementCredential"],
13895
+ name: "Competency \u2014 Backend API Development",
13896
+ issuer: {
13897
+ id: "did:web:registrar.riverside.edu",
13898
+ type: ["Profile"],
13899
+ name: "Riverside College"
13900
+ },
13901
+ validFrom: "2025-05-30T00:00:00Z",
13902
+ credentialSubject: {
13903
+ id: "did:example:rc-student-2025-001",
13904
+ type: ["AchievementSubject"],
13905
+ achievement: {
13906
+ id: "https://riverside.edu/competencies/backend-apis",
13907
+ type: ["Achievement"],
13908
+ achievementType: "Competency",
13909
+ name: "Backend API Development",
13910
+ description: "Designs and implements secure RESTful services and data persistence.",
13911
+ fieldOfStudy: "Web Development",
13912
+ alignment: [
13913
+ {
13914
+ type: ["Alignment"],
13915
+ targetCode: "WD.BACK.1",
13916
+ targetName: "Server-Side Services",
13917
+ targetFramework: "Riverside Web Dev Competency Framework",
13918
+ targetType: "CFItem",
13919
+ targetUrl: "https://riverside.edu/frameworks/wd/BACK.1"
13920
+ }
13921
+ ],
13922
+ resultDescription: [
13923
+ {
13924
+ id: "urn:uuid:rc-rd-comp-level",
13925
+ type: ["ResultDescription"],
13926
+ name: "Competency Level",
13927
+ resultType: "RubricCriterionLevel",
13928
+ allowedValue: ["Developing", "Proficient", "Advanced"]
13929
+ }
13930
+ ]
13931
+ },
13932
+ result: [
13933
+ {
13934
+ type: ["Result"],
13935
+ value: "Proficient",
13936
+ resultDescription: "urn:uuid:rc-rd-comp-level"
13937
+ }
13938
+ ]
13939
+ }
13940
+ }
13941
+ ],
13942
+ association: [
13943
+ // Courses are part of the certificate.
13944
+ {
13945
+ type: ["Association"],
13946
+ associationType: "isChildOf",
13947
+ sourceId: "urn:uuid:rc-web101",
13948
+ targetId: "urn:uuid:rc-cert-001"
13949
+ },
13950
+ {
13951
+ type: ["Association"],
13952
+ associationType: "isChildOf",
13953
+ sourceId: "urn:uuid:rc-web150",
13954
+ targetId: "urn:uuid:rc-cert-001"
13955
+ },
13956
+ {
13957
+ type: ["Association"],
13958
+ associationType: "isChildOf",
13959
+ sourceId: "urn:uuid:rc-web220",
13960
+ targetId: "urn:uuid:rc-cert-001"
13961
+ },
13962
+ {
13963
+ type: ["Association"],
13964
+ associationType: "isChildOf",
13965
+ sourceId: "urn:uuid:rc-web240",
13966
+ targetId: "urn:uuid:rc-cert-001"
13967
+ },
13968
+ // Competencies are developed by specific courses (parent mapping).
13969
+ {
13970
+ type: ["Association"],
13971
+ associationType: "isRelatedTo",
13972
+ sourceId: "urn:uuid:rc-comp-frontend",
13973
+ targetId: "urn:uuid:rc-web101"
13974
+ },
13975
+ {
13976
+ type: ["Association"],
13977
+ associationType: "isRelatedTo",
13978
+ sourceId: "urn:uuid:rc-comp-js",
13979
+ targetId: "urn:uuid:rc-web150"
13980
+ },
13981
+ {
13982
+ type: ["Association"],
13983
+ associationType: "isRelatedTo",
13984
+ sourceId: "urn:uuid:rc-comp-js",
13985
+ targetId: "urn:uuid:rc-web220"
13986
+ },
13987
+ {
13988
+ type: ["Association"],
13989
+ associationType: "isRelatedTo",
13990
+ sourceId: "urn:uuid:rc-comp-backend",
13991
+ targetId: "urn:uuid:rc-web240"
13992
+ },
13993
+ // Competencies also relate to the overall certificate.
13994
+ {
13995
+ type: ["Association"],
13996
+ associationType: "isRelatedTo",
13997
+ sourceId: "urn:uuid:rc-comp-frontend",
13998
+ targetId: "urn:uuid:rc-cert-001"
13999
+ },
14000
+ {
14001
+ type: ["Association"],
14002
+ associationType: "isRelatedTo",
14003
+ sourceId: "urn:uuid:rc-comp-js",
14004
+ targetId: "urn:uuid:rc-cert-001"
14005
+ },
14006
+ {
14007
+ type: ["Association"],
14008
+ associationType: "isRelatedTo",
14009
+ sourceId: "urn:uuid:rc-comp-backend",
14010
+ targetId: "urn:uuid:rc-cert-001"
14011
+ },
14012
+ // Course sequencing.
14013
+ {
14014
+ type: ["Association"],
14015
+ associationType: "precedes",
14016
+ sourceId: "urn:uuid:rc-web101",
14017
+ targetId: "urn:uuid:rc-web150"
14018
+ },
14019
+ {
14020
+ type: ["Association"],
14021
+ associationType: "precedes",
14022
+ sourceId: "urn:uuid:rc-web150",
14023
+ targetId: "urn:uuid:rc-web220"
14024
+ },
14025
+ {
14026
+ type: ["Association"],
14027
+ associationType: "precedes",
14028
+ sourceId: "urn:uuid:rc-web150",
14029
+ targetId: "urn:uuid:rc-web240"
14030
+ }
14031
+ ]
14032
+ }
14033
+ }
14034
+ };
14035
+
10819
14036
  // src/fixtures/index.ts
10820
14037
  var ALL_FIXTURES = [
10821
14038
  // VC v1
@@ -10861,7 +14078,9 @@ var ALL_FIXTURES = [
10861
14078
  vcV2DigitalId,
10862
14079
  vcV2MembershipCredential,
10863
14080
  vcV2LicenseCredential,
10864
- clrGreatPlainsFull
14081
+ clrGreatPlainsFull,
14082
+ clrWestbridgeFull,
14083
+ clrCompetencyAligned
10865
14084
  ];
10866
14085
 
10867
14086
  // src/registry.ts
@@ -10990,23 +14209,44 @@ var generateUuid = /* @__PURE__ */ __name(() => {
10990
14209
  "crypto.randomUUID is not available in this environment. Please use a modern runtime with Web Crypto API support for secure UUID generation."
10991
14210
  );
10992
14211
  }, "generateUuid");
10993
- var patchIds = /* @__PURE__ */ __name((obj) => {
14212
+ var patchIds = /* @__PURE__ */ __name((obj, idMap) => {
10994
14213
  const result = {};
10995
14214
  for (const [key, value] of Object.entries(obj)) {
10996
14215
  if (key === "id" && typeof value === "string" && value.startsWith("urn:uuid:")) {
10997
- result[key] = `urn:uuid:${generateUuid()}`;
14216
+ const patchedId = idMap.get(value) ?? `urn:uuid:${generateUuid()}`;
14217
+ if (!idMap.has(value)) {
14218
+ idMap.set(value, patchedId);
14219
+ }
14220
+ result[key] = patchedId;
10998
14221
  } else if (Array.isArray(value)) {
10999
14222
  result[key] = value.map(
11000
- (item) => item && typeof item === "object" && !Array.isArray(item) ? patchIds(item) : item
14223
+ (item) => item && typeof item === "object" && !Array.isArray(item) ? patchIds(item, idMap) : item
11001
14224
  );
11002
14225
  } else if (value && typeof value === "object" && !Array.isArray(value)) {
11003
- result[key] = patchIds(value);
14226
+ result[key] = patchIds(value, idMap);
11004
14227
  } else {
11005
14228
  result[key] = value;
11006
14229
  }
11007
14230
  }
11008
14231
  return result;
11009
14232
  }, "patchIds");
14233
+ var remapUuidReferences = /* @__PURE__ */ __name((value, idMap) => {
14234
+ if (typeof value === "string") {
14235
+ return idMap.get(value) ?? value;
14236
+ }
14237
+ if (Array.isArray(value)) {
14238
+ return value.map((item) => remapUuidReferences(item, idMap));
14239
+ }
14240
+ if (value && typeof value === "object") {
14241
+ return Object.fromEntries(
14242
+ Object.entries(value).map(([key, nestedValue]) => [
14243
+ key,
14244
+ remapUuidReferences(nestedValue, idMap)
14245
+ ])
14246
+ );
14247
+ }
14248
+ return value;
14249
+ }, "remapUuidReferences");
11010
14250
  var patchIssuer = /* @__PURE__ */ __name((issuer, issuerDid) => {
11011
14251
  if (typeof issuer === "string") {
11012
14252
  return issuerDid;
@@ -11029,7 +14269,9 @@ var prepareFixture = /* @__PURE__ */ __name((fixture, options) => {
11029
14269
  const { issuerDid, subjectDid, validFrom, validUntil, freshIds = true } = options;
11030
14270
  let credential = JSON.parse(JSON.stringify(fixture.credential));
11031
14271
  if (freshIds) {
11032
- credential = patchIds(credential);
14272
+ const idMap = /* @__PURE__ */ new Map();
14273
+ credential = patchIds(credential, idMap);
14274
+ credential = remapUuidReferences(credential, idMap);
11033
14275
  }
11034
14276
  credential.issuer = patchIssuer(credential.issuer, issuerDid);
11035
14277
  if (subjectDid && credential.credentialSubject) {
@@ -11070,11 +14312,13 @@ export {
11070
14312
  boostDelegate,
11071
14313
  boostId,
11072
14314
  boostWithSkills,
14315
+ clrCompetencyAligned,
11073
14316
  clrGreatPlainsFull,
11074
14317
  clrMinimal,
11075
14318
  clrMultiAchievement,
11076
14319
  clrNdStudentTranscript,
11077
14320
  clrUniversityTranscript,
14321
+ clrWestbridgeFull,
11078
14322
  findFixture,
11079
14323
  getAllFixtures,
11080
14324
  getFixture,