@rathnasgala2/schemas 3.20.0 → 3.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/THIRD_PARTY_LICENSES.json +1 -1
  2. package/diagnostics/diagnostic-map.json +266 -24
  3. package/docs/catalogs/schema-inventory.json +6 -6
  4. package/examples/valid/build-input/rules.json +270 -28
  5. package/examples/valid/content-frontmatter/rules.json +41 -0
  6. package/examples/valid/interactions-config/rules.json +22 -0
  7. package/examples/valid/publication/rules.json +192 -13
  8. package/fixtures/boundary/build-input/rules.json +306 -33
  9. package/fixtures/boundary/content-frontmatter/rules.json +41 -0
  10. package/fixtures/boundary/interactions-config/rules.json +22 -0
  11. package/fixtures/boundary/publication/rules.json +243 -33
  12. package/fixtures/invalid/build-input/GRAPHEME_LENGTH_INVALID/cases.json +19 -8
  13. package/fixtures/invalid/build-input/REQUEST_FIELD_UNKNOWN/cases.json +80 -16
  14. package/fixtures/invalid/build-input/SCHEMA_ARRAY_DUPLICATE/cases.json +11 -0
  15. package/fixtures/invalid/build-input/SCHEMA_ARRAY_TOO_LONG/cases.json +15 -0
  16. package/fixtures/invalid/build-input/SCHEMA_CONSTANT_INVALID/cases.json +33 -0
  17. package/fixtures/invalid/build-input/SCHEMA_ENUM_INVALID/cases.json +22 -0
  18. package/fixtures/invalid/build-input/SCHEMA_NEGATED_RULE_MATCHED/cases.json +11 -0
  19. package/fixtures/invalid/build-input/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +204 -39
  20. package/fixtures/invalid/build-input/SCHEMA_TYPE_INVALID/cases.json +122 -11
  21. package/fixtures/invalid/build-input/SCHEMA_UNION_INVALID/cases.json +9 -0
  22. package/fixtures/invalid/content-frontmatter/SCHEMA_CONSTANT_INVALID/cases.json +11 -0
  23. package/fixtures/invalid/content-frontmatter/SCHEMA_NEGATED_RULE_MATCHED/cases.json +9 -0
  24. package/fixtures/invalid/content-frontmatter/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +31 -0
  25. package/fixtures/invalid/interactions-config/REQUEST_FIELD_UNKNOWN/cases.json +11 -0
  26. package/fixtures/invalid/interactions-config/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +11 -0
  27. package/fixtures/invalid/interactions-config/SCHEMA_TYPE_INVALID/cases.json +20 -0
  28. package/fixtures/invalid/publication/GRAPHEME_LENGTH_INVALID/cases.json +22 -11
  29. package/fixtures/invalid/publication/REQUEST_FIELD_UNKNOWN/cases.json +62 -9
  30. package/fixtures/invalid/publication/SCHEMA_ARRAY_DUPLICATE/cases.json +13 -0
  31. package/fixtures/invalid/publication/SCHEMA_ARRAY_TOO_LONG/cases.json +15 -0
  32. package/fixtures/invalid/publication/SCHEMA_CONSTANT_INVALID/cases.json +22 -0
  33. package/fixtures/invalid/publication/SCHEMA_ENUM_INVALID/cases.json +22 -0
  34. package/fixtures/invalid/publication/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +143 -20
  35. package/fixtures/invalid/publication/SCHEMA_TYPE_INVALID/cases.json +95 -4
  36. package/fixtures/invalid/publication/SCHEMA_UNION_INVALID/cases.json +11 -0
  37. package/fixtures/manifest.json +2059 -181
  38. package/fixtures/s2/empty-modules-placements.json +943 -0
  39. package/fixtures/s2/manifest.json +13 -1
  40. package/fixtures/s2/normalized-inputs.json +1704 -0
  41. package/fixtures/unknown-field/build-input/rules.json +123 -21
  42. package/fixtures/unknown-field/content-frontmatter/rules.json +5 -0
  43. package/fixtures/unknown-field/interactions-config/rules.json +14 -0
  44. package/fixtures/unknown-field/publication/rules.json +92 -9
  45. package/generated/browser/validator-core.mjs +3 -3
  46. package/generated/typescript/contracts/build-input.d.ts +47 -5
  47. package/generated/typescript/contracts/content-frontmatter.d.ts +1 -0
  48. package/generated/typescript/contracts/interactions-config.d.ts +3 -0
  49. package/generated/typescript/contracts/publication.d.ts +40 -5
  50. package/openapi/http-catalog.json +2 -2
  51. package/openapi/openapi.yaml +31 -0
  52. package/package.json +1 -1
  53. package/sbom.cdx.json +23 -23
  54. package/schemas/build-input.schema.json +104 -5
  55. package/schemas/content-frontmatter.schema.json +12 -0
  56. package/schemas/interactions-config.schema.json +7 -0
  57. package/schemas/publication.schema.json +85 -7
@@ -1097,6 +1097,949 @@
1097
1097
  },
1098
1098
  "expectedDiagnostics": []
1099
1099
  },
1100
+ {
1101
+ "caseId": "build-input-valid-follows-module",
1102
+ "schemaId": "urn:gala:schema:build-input:2.0.0",
1103
+ "instance": {
1104
+ "schemaId": "urn:gala:schema:build-input:2.0.0",
1105
+ "schemaVersion": "2.0.0",
1106
+ "contractVersion": "2.0.0",
1107
+ "repository": {
1108
+ "repositoryId": "1",
1109
+ "repositoryOwnerId": "1",
1110
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1111
+ "rootDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1112
+ },
1113
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1114
+ "packages": {
1115
+ "schemas": {
1116
+ "package": "@rathnasgala2/schemas",
1117
+ "version": "2.0.0",
1118
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1119
+ "registry": "https://fixture-1.example.com/"
1120
+ },
1121
+ "template": {
1122
+ "package": "@rathnasgala2/template",
1123
+ "version": "2.0.0",
1124
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1125
+ "registry": "https://fixture-1.example.com/"
1126
+ },
1127
+ "theme": {
1128
+ "package": "@rathnasgala2/theme-default",
1129
+ "version": "2.0.0",
1130
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1131
+ "registry": "https://fixture-1.example.com/"
1132
+ },
1133
+ "publisher": [
1134
+ {
1135
+ "package": "@rathnasgala2/publish-action",
1136
+ "version": "2.0.0",
1137
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1138
+ "registry": "https://fixture-1.example.com/"
1139
+ },
1140
+ {
1141
+ "package": "@rathnasgala2/publish-kernel",
1142
+ "version": "2.0.0",
1143
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000002",
1144
+ "registry": "https://fixture-2.example.com/"
1145
+ },
1146
+ {
1147
+ "package": "@rathnasgala2/adapter-protocol",
1148
+ "version": "2.0.0",
1149
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000003",
1150
+ "registry": "https://fixture-3.example.com/"
1151
+ },
1152
+ {
1153
+ "package": "@rathnasgala2/adapter-local-directory",
1154
+ "version": "2.0.0",
1155
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000004",
1156
+ "registry": "https://fixture-4.example.com/"
1157
+ }
1158
+ ],
1159
+ "dependencies": [
1160
+ {
1161
+ "package": "fixture-1",
1162
+ "version": "2.0.0",
1163
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1164
+ "registry": "https://fixture-1.example.com/"
1165
+ }
1166
+ ]
1167
+ },
1168
+ "publication": {
1169
+ "id": "019c0000-0000-7000-8000-000000000001",
1170
+ "slug": "fixture-1",
1171
+ "title": "fixture-1",
1172
+ "description": "fixture-1",
1173
+ "canonicalBase": "https://fixture-1.example.com/",
1174
+ "defaultLanguage": "en-US",
1175
+ "authorIds": ["019c0000-0000-7000-8000-000000000001"],
1176
+ "socialLinks": [
1177
+ { "type": "website", "uri": "https://fixture-1.example.com/" }
1178
+ ],
1179
+ "sourcePath": "content/fixture-1.md",
1180
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1181
+ },
1182
+ "authors": [
1183
+ {
1184
+ "id": "019c0000-0000-7000-8000-000000000001",
1185
+ "displayName": "fixture-1",
1186
+ "biography": "fixture-1",
1187
+ "links": [
1188
+ { "type": "website", "uri": "https://fixture-1.example.com/" }
1189
+ ],
1190
+ "localized": [
1191
+ {
1192
+ "language": "en-US",
1193
+ "displayName": "fixture-1",
1194
+ "biography": "fixture-1"
1195
+ }
1196
+ ],
1197
+ "sourcePath": "content/fixture-1.md",
1198
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1199
+ }
1200
+ ],
1201
+ "content": [
1202
+ {
1203
+ "frontmatter": {
1204
+ "id": "019c0000-0000-7000-8000-000000000001",
1205
+ "kind": "article",
1206
+ "title": "fixture-1",
1207
+ "language": "en-US",
1208
+ "authorIds": ["019c0000-0000-7000-8000-000000000001"],
1209
+ "tags": ["fixture-1"],
1210
+ "status": "published",
1211
+ "createdAt": "2026-09-13T12:00:00.000Z",
1212
+ "publishedAt": "2026-09-13T12:00:00.000Z",
1213
+ "slug": "fixture-1",
1214
+ "redirects": ["/fixture-1"]
1215
+ },
1216
+ "body": "fixture-1",
1217
+ "bodyMediaType": "text/html",
1218
+ "bodyDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1219
+ "renderPolicy": {
1220
+ "name": "gala-render-policy",
1221
+ "version": "2.0.0",
1222
+ "digest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1223
+ },
1224
+ "sourcePath": "content/fixture-1.md",
1225
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1226
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1227
+ "resolvedAuthorIds": ["019c0000-0000-7000-8000-000000000001"]
1228
+ }
1229
+ ],
1230
+ "navigation": {
1231
+ "items": [
1232
+ {
1233
+ "type": "internal",
1234
+ "label": "fixture-1",
1235
+ "children": [
1236
+ {
1237
+ "type": "internal",
1238
+ "label": "fixture-1",
1239
+ "children": [],
1240
+ "route": "/fixture-1"
1241
+ }
1242
+ ],
1243
+ "route": "/fixture-1"
1244
+ }
1245
+ ],
1246
+ "footerItems": [
1247
+ {
1248
+ "type": "internal",
1249
+ "label": "fixture-1",
1250
+ "children": [
1251
+ {
1252
+ "type": "internal",
1253
+ "label": "fixture-1",
1254
+ "children": [],
1255
+ "route": "/fixture-1"
1256
+ }
1257
+ ],
1258
+ "route": "/fixture-1"
1259
+ }
1260
+ ],
1261
+ "source": {
1262
+ "kind": "authored",
1263
+ "sourcePath": "content/fixture-1.md",
1264
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1265
+ }
1266
+ },
1267
+ "appearance": {
1268
+ "theme": "@rathnasgala2/theme-default@2.0.0",
1269
+ "colorMode": { "allowed": ["light"], "default": "light" },
1270
+ "headerComposition": "mark-and-name",
1271
+ "footerComposition": "profile",
1272
+ "typeScale": "compact",
1273
+ "fontAssets": [
1274
+ {
1275
+ "path": "content/fixture-1.md",
1276
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1277
+ }
1278
+ ],
1279
+ "tokens": {},
1280
+ "source": {
1281
+ "kind": "authored",
1282
+ "sourcePath": "content/fixture-1.md",
1283
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1284
+ }
1285
+ },
1286
+ "modules": {
1287
+ "interactions": {
1288
+ "config": {
1289
+ "schemaId": "urn:gala:schema:interactions-config:2.0.0",
1290
+ "schemaVersion": "2.0.0",
1291
+ "reactions": {
1292
+ "enabled": true,
1293
+ "definitions": [
1294
+ {
1295
+ "key": "insightful",
1296
+ "label": "Insightful",
1297
+ "visual": { "kind": "emoji", "token": "💡" },
1298
+ "order": 1,
1299
+ "enabled": true
1300
+ }
1301
+ ]
1302
+ },
1303
+ "comments": {
1304
+ "enabled": true,
1305
+ "allowReplies": true,
1306
+ "maxDepth": 3
1307
+ },
1308
+ "publicCounts": { "reactions": true, "comments": true },
1309
+ "follows": { "enabled": true }
1310
+ },
1311
+ "apiOrigin": "https://api.galascribe.com",
1312
+ "appOrigin": "http://localhost:5173"
1313
+ }
1314
+ },
1315
+ "buildEpoch": "2026-09-13T12:00:00.000Z",
1316
+ "baseUrl": "https://fixture-1.example.com/",
1317
+ "basePath": "/fixture-1",
1318
+ "destinationCapabilities": {
1319
+ "adapter": {
1320
+ "adapterId": "local-directory",
1321
+ "adapterVersion": "2.0.0",
1322
+ "adapterDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1323
+ },
1324
+ "baseUrl": "https://fixture-1.example.com/",
1325
+ "capabilityDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1326
+ },
1327
+ "placements": [],
1328
+ "inputDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1329
+ },
1330
+ "expectedDiagnostics": []
1331
+ },
1332
+ {
1333
+ "caseId": "build-input-rejects-follows-unknown-member",
1334
+ "schemaId": "urn:gala:schema:build-input:2.0.0",
1335
+ "instance": {
1336
+ "schemaId": "urn:gala:schema:build-input:2.0.0",
1337
+ "schemaVersion": "2.0.0",
1338
+ "contractVersion": "2.0.0",
1339
+ "repository": {
1340
+ "repositoryId": "1",
1341
+ "repositoryOwnerId": "1",
1342
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1343
+ "rootDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1344
+ },
1345
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1346
+ "packages": {
1347
+ "schemas": {
1348
+ "package": "@rathnasgala2/schemas",
1349
+ "version": "2.0.0",
1350
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1351
+ "registry": "https://fixture-1.example.com/"
1352
+ },
1353
+ "template": {
1354
+ "package": "@rathnasgala2/template",
1355
+ "version": "2.0.0",
1356
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1357
+ "registry": "https://fixture-1.example.com/"
1358
+ },
1359
+ "theme": {
1360
+ "package": "@rathnasgala2/theme-default",
1361
+ "version": "2.0.0",
1362
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1363
+ "registry": "https://fixture-1.example.com/"
1364
+ },
1365
+ "publisher": [
1366
+ {
1367
+ "package": "@rathnasgala2/publish-action",
1368
+ "version": "2.0.0",
1369
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1370
+ "registry": "https://fixture-1.example.com/"
1371
+ },
1372
+ {
1373
+ "package": "@rathnasgala2/publish-kernel",
1374
+ "version": "2.0.0",
1375
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000002",
1376
+ "registry": "https://fixture-2.example.com/"
1377
+ },
1378
+ {
1379
+ "package": "@rathnasgala2/adapter-protocol",
1380
+ "version": "2.0.0",
1381
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000003",
1382
+ "registry": "https://fixture-3.example.com/"
1383
+ },
1384
+ {
1385
+ "package": "@rathnasgala2/adapter-local-directory",
1386
+ "version": "2.0.0",
1387
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000004",
1388
+ "registry": "https://fixture-4.example.com/"
1389
+ }
1390
+ ],
1391
+ "dependencies": [
1392
+ {
1393
+ "package": "fixture-1",
1394
+ "version": "2.0.0",
1395
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1396
+ "registry": "https://fixture-1.example.com/"
1397
+ }
1398
+ ]
1399
+ },
1400
+ "publication": {
1401
+ "id": "019c0000-0000-7000-8000-000000000001",
1402
+ "slug": "fixture-1",
1403
+ "title": "fixture-1",
1404
+ "description": "fixture-1",
1405
+ "canonicalBase": "https://fixture-1.example.com/",
1406
+ "defaultLanguage": "en-US",
1407
+ "authorIds": ["019c0000-0000-7000-8000-000000000001"],
1408
+ "socialLinks": [
1409
+ { "type": "website", "uri": "https://fixture-1.example.com/" }
1410
+ ],
1411
+ "sourcePath": "content/fixture-1.md",
1412
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1413
+ },
1414
+ "authors": [
1415
+ {
1416
+ "id": "019c0000-0000-7000-8000-000000000001",
1417
+ "displayName": "fixture-1",
1418
+ "biography": "fixture-1",
1419
+ "links": [
1420
+ { "type": "website", "uri": "https://fixture-1.example.com/" }
1421
+ ],
1422
+ "localized": [
1423
+ {
1424
+ "language": "en-US",
1425
+ "displayName": "fixture-1",
1426
+ "biography": "fixture-1"
1427
+ }
1428
+ ],
1429
+ "sourcePath": "content/fixture-1.md",
1430
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1431
+ }
1432
+ ],
1433
+ "content": [
1434
+ {
1435
+ "frontmatter": {
1436
+ "id": "019c0000-0000-7000-8000-000000000001",
1437
+ "kind": "article",
1438
+ "title": "fixture-1",
1439
+ "language": "en-US",
1440
+ "authorIds": ["019c0000-0000-7000-8000-000000000001"],
1441
+ "tags": ["fixture-1"],
1442
+ "status": "published",
1443
+ "createdAt": "2026-09-13T12:00:00.000Z",
1444
+ "publishedAt": "2026-09-13T12:00:00.000Z",
1445
+ "slug": "fixture-1",
1446
+ "redirects": ["/fixture-1"]
1447
+ },
1448
+ "body": "fixture-1",
1449
+ "bodyMediaType": "text/html",
1450
+ "bodyDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1451
+ "renderPolicy": {
1452
+ "name": "gala-render-policy",
1453
+ "version": "2.0.0",
1454
+ "digest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1455
+ },
1456
+ "sourcePath": "content/fixture-1.md",
1457
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1458
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1459
+ "resolvedAuthorIds": ["019c0000-0000-7000-8000-000000000001"]
1460
+ }
1461
+ ],
1462
+ "navigation": {
1463
+ "items": [
1464
+ {
1465
+ "type": "internal",
1466
+ "label": "fixture-1",
1467
+ "children": [
1468
+ {
1469
+ "type": "internal",
1470
+ "label": "fixture-1",
1471
+ "children": [],
1472
+ "route": "/fixture-1"
1473
+ }
1474
+ ],
1475
+ "route": "/fixture-1"
1476
+ }
1477
+ ],
1478
+ "footerItems": [
1479
+ {
1480
+ "type": "internal",
1481
+ "label": "fixture-1",
1482
+ "children": [
1483
+ {
1484
+ "type": "internal",
1485
+ "label": "fixture-1",
1486
+ "children": [],
1487
+ "route": "/fixture-1"
1488
+ }
1489
+ ],
1490
+ "route": "/fixture-1"
1491
+ }
1492
+ ],
1493
+ "source": {
1494
+ "kind": "authored",
1495
+ "sourcePath": "content/fixture-1.md",
1496
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1497
+ }
1498
+ },
1499
+ "appearance": {
1500
+ "theme": "@rathnasgala2/theme-default@2.0.0",
1501
+ "colorMode": { "allowed": ["light"], "default": "light" },
1502
+ "headerComposition": "mark-and-name",
1503
+ "footerComposition": "profile",
1504
+ "typeScale": "compact",
1505
+ "fontAssets": [
1506
+ {
1507
+ "path": "content/fixture-1.md",
1508
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1509
+ }
1510
+ ],
1511
+ "tokens": {},
1512
+ "source": {
1513
+ "kind": "authored",
1514
+ "sourcePath": "content/fixture-1.md",
1515
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1516
+ }
1517
+ },
1518
+ "modules": {
1519
+ "interactions": {
1520
+ "config": {
1521
+ "schemaId": "urn:gala:schema:interactions-config:2.0.0",
1522
+ "schemaVersion": "2.0.0",
1523
+ "reactions": {
1524
+ "enabled": true,
1525
+ "definitions": [
1526
+ {
1527
+ "key": "insightful",
1528
+ "label": "Insightful",
1529
+ "visual": { "kind": "emoji", "token": "💡" },
1530
+ "order": 1,
1531
+ "enabled": true
1532
+ }
1533
+ ]
1534
+ },
1535
+ "comments": {
1536
+ "enabled": true,
1537
+ "allowReplies": true,
1538
+ "maxDepth": 3
1539
+ },
1540
+ "publicCounts": { "reactions": true, "comments": true },
1541
+ "follows": { "enabled": true, "digest": true }
1542
+ },
1543
+ "apiOrigin": "https://api.galascribe.com",
1544
+ "appOrigin": "http://localhost:5173"
1545
+ }
1546
+ },
1547
+ "buildEpoch": "2026-09-13T12:00:00.000Z",
1548
+ "baseUrl": "https://fixture-1.example.com/",
1549
+ "basePath": "/fixture-1",
1550
+ "destinationCapabilities": {
1551
+ "adapter": {
1552
+ "adapterId": "local-directory",
1553
+ "adapterVersion": "2.0.0",
1554
+ "adapterDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1555
+ },
1556
+ "baseUrl": "https://fixture-1.example.com/",
1557
+ "capabilityDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1558
+ },
1559
+ "placements": [],
1560
+ "inputDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1561
+ },
1562
+ "expectedDiagnostics": [
1563
+ {
1564
+ "code": "REQUEST_FIELD_UNKNOWN",
1565
+ "instancePointer": "/modules/interactions/config/follows/digest"
1566
+ }
1567
+ ]
1568
+ },
1569
+ {
1570
+ "caseId": "build-input-rejects-follows-without-enabled",
1571
+ "schemaId": "urn:gala:schema:build-input:2.0.0",
1572
+ "instance": {
1573
+ "schemaId": "urn:gala:schema:build-input:2.0.0",
1574
+ "schemaVersion": "2.0.0",
1575
+ "contractVersion": "2.0.0",
1576
+ "repository": {
1577
+ "repositoryId": "1",
1578
+ "repositoryOwnerId": "1",
1579
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1580
+ "rootDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1581
+ },
1582
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1583
+ "packages": {
1584
+ "schemas": {
1585
+ "package": "@rathnasgala2/schemas",
1586
+ "version": "2.0.0",
1587
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1588
+ "registry": "https://fixture-1.example.com/"
1589
+ },
1590
+ "template": {
1591
+ "package": "@rathnasgala2/template",
1592
+ "version": "2.0.0",
1593
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1594
+ "registry": "https://fixture-1.example.com/"
1595
+ },
1596
+ "theme": {
1597
+ "package": "@rathnasgala2/theme-default",
1598
+ "version": "2.0.0",
1599
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1600
+ "registry": "https://fixture-1.example.com/"
1601
+ },
1602
+ "publisher": [
1603
+ {
1604
+ "package": "@rathnasgala2/publish-action",
1605
+ "version": "2.0.0",
1606
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1607
+ "registry": "https://fixture-1.example.com/"
1608
+ },
1609
+ {
1610
+ "package": "@rathnasgala2/publish-kernel",
1611
+ "version": "2.0.0",
1612
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000002",
1613
+ "registry": "https://fixture-2.example.com/"
1614
+ },
1615
+ {
1616
+ "package": "@rathnasgala2/adapter-protocol",
1617
+ "version": "2.0.0",
1618
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000003",
1619
+ "registry": "https://fixture-3.example.com/"
1620
+ },
1621
+ {
1622
+ "package": "@rathnasgala2/adapter-local-directory",
1623
+ "version": "2.0.0",
1624
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000004",
1625
+ "registry": "https://fixture-4.example.com/"
1626
+ }
1627
+ ],
1628
+ "dependencies": [
1629
+ {
1630
+ "package": "fixture-1",
1631
+ "version": "2.0.0",
1632
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1633
+ "registry": "https://fixture-1.example.com/"
1634
+ }
1635
+ ]
1636
+ },
1637
+ "publication": {
1638
+ "id": "019c0000-0000-7000-8000-000000000001",
1639
+ "slug": "fixture-1",
1640
+ "title": "fixture-1",
1641
+ "description": "fixture-1",
1642
+ "canonicalBase": "https://fixture-1.example.com/",
1643
+ "defaultLanguage": "en-US",
1644
+ "authorIds": ["019c0000-0000-7000-8000-000000000001"],
1645
+ "socialLinks": [
1646
+ { "type": "website", "uri": "https://fixture-1.example.com/" }
1647
+ ],
1648
+ "sourcePath": "content/fixture-1.md",
1649
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1650
+ },
1651
+ "authors": [
1652
+ {
1653
+ "id": "019c0000-0000-7000-8000-000000000001",
1654
+ "displayName": "fixture-1",
1655
+ "biography": "fixture-1",
1656
+ "links": [
1657
+ { "type": "website", "uri": "https://fixture-1.example.com/" }
1658
+ ],
1659
+ "localized": [
1660
+ {
1661
+ "language": "en-US",
1662
+ "displayName": "fixture-1",
1663
+ "biography": "fixture-1"
1664
+ }
1665
+ ],
1666
+ "sourcePath": "content/fixture-1.md",
1667
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1668
+ }
1669
+ ],
1670
+ "content": [
1671
+ {
1672
+ "frontmatter": {
1673
+ "id": "019c0000-0000-7000-8000-000000000001",
1674
+ "kind": "article",
1675
+ "title": "fixture-1",
1676
+ "language": "en-US",
1677
+ "authorIds": ["019c0000-0000-7000-8000-000000000001"],
1678
+ "tags": ["fixture-1"],
1679
+ "status": "published",
1680
+ "createdAt": "2026-09-13T12:00:00.000Z",
1681
+ "publishedAt": "2026-09-13T12:00:00.000Z",
1682
+ "slug": "fixture-1",
1683
+ "redirects": ["/fixture-1"]
1684
+ },
1685
+ "body": "fixture-1",
1686
+ "bodyMediaType": "text/html",
1687
+ "bodyDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1688
+ "renderPolicy": {
1689
+ "name": "gala-render-policy",
1690
+ "version": "2.0.0",
1691
+ "digest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1692
+ },
1693
+ "sourcePath": "content/fixture-1.md",
1694
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1695
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1696
+ "resolvedAuthorIds": ["019c0000-0000-7000-8000-000000000001"]
1697
+ }
1698
+ ],
1699
+ "navigation": {
1700
+ "items": [
1701
+ {
1702
+ "type": "internal",
1703
+ "label": "fixture-1",
1704
+ "children": [
1705
+ {
1706
+ "type": "internal",
1707
+ "label": "fixture-1",
1708
+ "children": [],
1709
+ "route": "/fixture-1"
1710
+ }
1711
+ ],
1712
+ "route": "/fixture-1"
1713
+ }
1714
+ ],
1715
+ "footerItems": [
1716
+ {
1717
+ "type": "internal",
1718
+ "label": "fixture-1",
1719
+ "children": [
1720
+ {
1721
+ "type": "internal",
1722
+ "label": "fixture-1",
1723
+ "children": [],
1724
+ "route": "/fixture-1"
1725
+ }
1726
+ ],
1727
+ "route": "/fixture-1"
1728
+ }
1729
+ ],
1730
+ "source": {
1731
+ "kind": "authored",
1732
+ "sourcePath": "content/fixture-1.md",
1733
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1734
+ }
1735
+ },
1736
+ "appearance": {
1737
+ "theme": "@rathnasgala2/theme-default@2.0.0",
1738
+ "colorMode": { "allowed": ["light"], "default": "light" },
1739
+ "headerComposition": "mark-and-name",
1740
+ "footerComposition": "profile",
1741
+ "typeScale": "compact",
1742
+ "fontAssets": [
1743
+ {
1744
+ "path": "content/fixture-1.md",
1745
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1746
+ }
1747
+ ],
1748
+ "tokens": {},
1749
+ "source": {
1750
+ "kind": "authored",
1751
+ "sourcePath": "content/fixture-1.md",
1752
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1753
+ }
1754
+ },
1755
+ "modules": {
1756
+ "interactions": {
1757
+ "config": {
1758
+ "schemaId": "urn:gala:schema:interactions-config:2.0.0",
1759
+ "schemaVersion": "2.0.0",
1760
+ "reactions": {
1761
+ "enabled": true,
1762
+ "definitions": [
1763
+ {
1764
+ "key": "insightful",
1765
+ "label": "Insightful",
1766
+ "visual": { "kind": "emoji", "token": "💡" },
1767
+ "order": 1,
1768
+ "enabled": true
1769
+ }
1770
+ ]
1771
+ },
1772
+ "comments": {
1773
+ "enabled": true,
1774
+ "allowReplies": true,
1775
+ "maxDepth": 3
1776
+ },
1777
+ "publicCounts": { "reactions": true, "comments": true },
1778
+ "follows": {}
1779
+ },
1780
+ "apiOrigin": "https://api.galascribe.com",
1781
+ "appOrigin": "http://localhost:5173"
1782
+ }
1783
+ },
1784
+ "buildEpoch": "2026-09-13T12:00:00.000Z",
1785
+ "baseUrl": "https://fixture-1.example.com/",
1786
+ "basePath": "/fixture-1",
1787
+ "destinationCapabilities": {
1788
+ "adapter": {
1789
+ "adapterId": "local-directory",
1790
+ "adapterVersion": "2.0.0",
1791
+ "adapterDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1792
+ },
1793
+ "baseUrl": "https://fixture-1.example.com/",
1794
+ "capabilityDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1795
+ },
1796
+ "placements": [],
1797
+ "inputDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1798
+ },
1799
+ "expectedDiagnostics": [
1800
+ {
1801
+ "code": "SCHEMA_REQUIRED_FIELD_MISSING",
1802
+ "instancePointer": "/modules/interactions/config/follows/enabled"
1803
+ }
1804
+ ]
1805
+ },
1806
+ {
1807
+ "caseId": "build-input-rejects-follows-enabled-not-boolean",
1808
+ "schemaId": "urn:gala:schema:build-input:2.0.0",
1809
+ "instance": {
1810
+ "schemaId": "urn:gala:schema:build-input:2.0.0",
1811
+ "schemaVersion": "2.0.0",
1812
+ "contractVersion": "2.0.0",
1813
+ "repository": {
1814
+ "repositoryId": "1",
1815
+ "repositoryOwnerId": "1",
1816
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1817
+ "rootDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1818
+ },
1819
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1820
+ "packages": {
1821
+ "schemas": {
1822
+ "package": "@rathnasgala2/schemas",
1823
+ "version": "2.0.0",
1824
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1825
+ "registry": "https://fixture-1.example.com/"
1826
+ },
1827
+ "template": {
1828
+ "package": "@rathnasgala2/template",
1829
+ "version": "2.0.0",
1830
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1831
+ "registry": "https://fixture-1.example.com/"
1832
+ },
1833
+ "theme": {
1834
+ "package": "@rathnasgala2/theme-default",
1835
+ "version": "2.0.0",
1836
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1837
+ "registry": "https://fixture-1.example.com/"
1838
+ },
1839
+ "publisher": [
1840
+ {
1841
+ "package": "@rathnasgala2/publish-action",
1842
+ "version": "2.0.0",
1843
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1844
+ "registry": "https://fixture-1.example.com/"
1845
+ },
1846
+ {
1847
+ "package": "@rathnasgala2/publish-kernel",
1848
+ "version": "2.0.0",
1849
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000002",
1850
+ "registry": "https://fixture-2.example.com/"
1851
+ },
1852
+ {
1853
+ "package": "@rathnasgala2/adapter-protocol",
1854
+ "version": "2.0.0",
1855
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000003",
1856
+ "registry": "https://fixture-3.example.com/"
1857
+ },
1858
+ {
1859
+ "package": "@rathnasgala2/adapter-local-directory",
1860
+ "version": "2.0.0",
1861
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000004",
1862
+ "registry": "https://fixture-4.example.com/"
1863
+ }
1864
+ ],
1865
+ "dependencies": [
1866
+ {
1867
+ "package": "fixture-1",
1868
+ "version": "2.0.0",
1869
+ "integrity": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1870
+ "registry": "https://fixture-1.example.com/"
1871
+ }
1872
+ ]
1873
+ },
1874
+ "publication": {
1875
+ "id": "019c0000-0000-7000-8000-000000000001",
1876
+ "slug": "fixture-1",
1877
+ "title": "fixture-1",
1878
+ "description": "fixture-1",
1879
+ "canonicalBase": "https://fixture-1.example.com/",
1880
+ "defaultLanguage": "en-US",
1881
+ "authorIds": ["019c0000-0000-7000-8000-000000000001"],
1882
+ "socialLinks": [
1883
+ { "type": "website", "uri": "https://fixture-1.example.com/" }
1884
+ ],
1885
+ "sourcePath": "content/fixture-1.md",
1886
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1887
+ },
1888
+ "authors": [
1889
+ {
1890
+ "id": "019c0000-0000-7000-8000-000000000001",
1891
+ "displayName": "fixture-1",
1892
+ "biography": "fixture-1",
1893
+ "links": [
1894
+ { "type": "website", "uri": "https://fixture-1.example.com/" }
1895
+ ],
1896
+ "localized": [
1897
+ {
1898
+ "language": "en-US",
1899
+ "displayName": "fixture-1",
1900
+ "biography": "fixture-1"
1901
+ }
1902
+ ],
1903
+ "sourcePath": "content/fixture-1.md",
1904
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1905
+ }
1906
+ ],
1907
+ "content": [
1908
+ {
1909
+ "frontmatter": {
1910
+ "id": "019c0000-0000-7000-8000-000000000001",
1911
+ "kind": "article",
1912
+ "title": "fixture-1",
1913
+ "language": "en-US",
1914
+ "authorIds": ["019c0000-0000-7000-8000-000000000001"],
1915
+ "tags": ["fixture-1"],
1916
+ "status": "published",
1917
+ "createdAt": "2026-09-13T12:00:00.000Z",
1918
+ "publishedAt": "2026-09-13T12:00:00.000Z",
1919
+ "slug": "fixture-1",
1920
+ "redirects": ["/fixture-1"]
1921
+ },
1922
+ "body": "fixture-1",
1923
+ "bodyMediaType": "text/html",
1924
+ "bodyDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1925
+ "renderPolicy": {
1926
+ "name": "gala-render-policy",
1927
+ "version": "2.0.0",
1928
+ "digest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1929
+ },
1930
+ "sourcePath": "content/fixture-1.md",
1931
+ "sourceRevision": "sha1:0000000000000000000000000000000000000001",
1932
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001",
1933
+ "resolvedAuthorIds": ["019c0000-0000-7000-8000-000000000001"]
1934
+ }
1935
+ ],
1936
+ "navigation": {
1937
+ "items": [
1938
+ {
1939
+ "type": "internal",
1940
+ "label": "fixture-1",
1941
+ "children": [
1942
+ {
1943
+ "type": "internal",
1944
+ "label": "fixture-1",
1945
+ "children": [],
1946
+ "route": "/fixture-1"
1947
+ }
1948
+ ],
1949
+ "route": "/fixture-1"
1950
+ }
1951
+ ],
1952
+ "footerItems": [
1953
+ {
1954
+ "type": "internal",
1955
+ "label": "fixture-1",
1956
+ "children": [
1957
+ {
1958
+ "type": "internal",
1959
+ "label": "fixture-1",
1960
+ "children": [],
1961
+ "route": "/fixture-1"
1962
+ }
1963
+ ],
1964
+ "route": "/fixture-1"
1965
+ }
1966
+ ],
1967
+ "source": {
1968
+ "kind": "authored",
1969
+ "sourcePath": "content/fixture-1.md",
1970
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1971
+ }
1972
+ },
1973
+ "appearance": {
1974
+ "theme": "@rathnasgala2/theme-default@2.0.0",
1975
+ "colorMode": { "allowed": ["light"], "default": "light" },
1976
+ "headerComposition": "mark-and-name",
1977
+ "footerComposition": "profile",
1978
+ "typeScale": "compact",
1979
+ "fontAssets": [
1980
+ {
1981
+ "path": "content/fixture-1.md",
1982
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1983
+ }
1984
+ ],
1985
+ "tokens": {},
1986
+ "source": {
1987
+ "kind": "authored",
1988
+ "sourcePath": "content/fixture-1.md",
1989
+ "sourceDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
1990
+ }
1991
+ },
1992
+ "modules": {
1993
+ "interactions": {
1994
+ "config": {
1995
+ "schemaId": "urn:gala:schema:interactions-config:2.0.0",
1996
+ "schemaVersion": "2.0.0",
1997
+ "reactions": {
1998
+ "enabled": true,
1999
+ "definitions": [
2000
+ {
2001
+ "key": "insightful",
2002
+ "label": "Insightful",
2003
+ "visual": { "kind": "emoji", "token": "💡" },
2004
+ "order": 1,
2005
+ "enabled": true
2006
+ }
2007
+ ]
2008
+ },
2009
+ "comments": {
2010
+ "enabled": true,
2011
+ "allowReplies": true,
2012
+ "maxDepth": 3
2013
+ },
2014
+ "publicCounts": { "reactions": true, "comments": true },
2015
+ "follows": { "enabled": 1 }
2016
+ },
2017
+ "apiOrigin": "https://api.galascribe.com",
2018
+ "appOrigin": "http://localhost:5173"
2019
+ }
2020
+ },
2021
+ "buildEpoch": "2026-09-13T12:00:00.000Z",
2022
+ "baseUrl": "https://fixture-1.example.com/",
2023
+ "basePath": "/fixture-1",
2024
+ "destinationCapabilities": {
2025
+ "adapter": {
2026
+ "adapterId": "local-directory",
2027
+ "adapterVersion": "2.0.0",
2028
+ "adapterDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
2029
+ },
2030
+ "baseUrl": "https://fixture-1.example.com/",
2031
+ "capabilityDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
2032
+ },
2033
+ "placements": [],
2034
+ "inputDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000001"
2035
+ },
2036
+ "expectedDiagnostics": [
2037
+ {
2038
+ "code": "SCHEMA_TYPE_INVALID",
2039
+ "instancePointer": "/modules/interactions/config/follows/enabled"
2040
+ }
2041
+ ]
2042
+ },
1100
2043
  {
1101
2044
  "caseId": "build-input-rejects-nonempty-placements",
1102
2045
  "schemaId": "urn:gala:schema:build-input:2.0.0",