@bendyline/gilde 0.1.16 → 0.1.18

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 (95) hide show
  1. package/README.md +5 -1
  2. package/authoring/gstack/LICENSE.gstack +21 -0
  3. package/authoring/gstack/README.md +50 -0
  4. package/authoring/gstack/evals/cso.json +152 -0
  5. package/authoring/gstack/evals/design-consultation.json +201 -0
  6. package/authoring/gstack/evals/document-generate.json +174 -0
  7. package/authoring/gstack/evals/investigate.json +153 -0
  8. package/authoring/gstack/evals/office-hours.json +141 -0
  9. package/authoring/gstack/evals/plan-ceo-review.json +135 -0
  10. package/authoring/gstack/evals/qa-only.json +376 -0
  11. package/authoring/gstack/evals/retro.json +191 -0
  12. package/authoring/gstack/evals/spec.json +162 -0
  13. package/authoring/gstack/overlays/cso.json +132 -0
  14. package/authoring/gstack/overlays/design-consultation.json +153 -0
  15. package/authoring/gstack/overlays/document-generate.json +124 -0
  16. package/authoring/gstack/overlays/investigate.json +128 -0
  17. package/authoring/gstack/overlays/office-hours.json +119 -0
  18. package/authoring/gstack/overlays/plan-ceo-review.json +128 -0
  19. package/authoring/gstack/overlays/qa-only.json +145 -0
  20. package/authoring/gstack/overlays/retro.json +132 -0
  21. package/authoring/gstack/overlays/spec.json +140 -0
  22. package/authoring/gstack/persona-drafts/cso.about.md +9 -0
  23. package/authoring/gstack/persona-drafts/design-consultation.about.md +9 -0
  24. package/authoring/gstack/persona-drafts/office-hours.about.md +9 -0
  25. package/authoring/gstack/persona-drafts/qa-only.about.md +5 -0
  26. package/authoring/gstack/persona-drafts/spec.about.md +26 -0
  27. package/authoring/gstack/snapshots/cso/SKILL.md +1285 -0
  28. package/authoring/gstack/snapshots/design-consultation/SKILL.md +1230 -0
  29. package/authoring/gstack/snapshots/document-generate/SKILL.md +1252 -0
  30. package/authoring/gstack/snapshots/investigate/SKILL.md +1074 -0
  31. package/authoring/gstack/snapshots/office-hours/SKILL.md +1697 -0
  32. package/authoring/gstack/snapshots/plan-ceo-review/SKILL.md +1476 -0
  33. package/authoring/gstack/snapshots/qa-only/SKILL.md +1256 -0
  34. package/authoring/gstack/snapshots/retro/SKILL.md +1812 -0
  35. package/authoring/gstack/snapshots/spec/SKILL.md +2359 -0
  36. package/authoring/gstack/wave.json +103 -0
  37. package/data/connector-types/gi/github-releases/manifest.json +17 -0
  38. package/data/connector-types/gi/github-releases/versions/1.0.0/manifest.json +71 -0
  39. package/data/connector-types/index.json +1 -1
  40. package/data/craftbook-templates/br/branding-website/versions/1.1.0/craftbook.json +190 -0
  41. package/data/craftbook-templates/br/branding-website/versions/1.1.0/test.json +164 -0
  42. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.0/craftbook.json +358 -0
  43. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.0/test.json +376 -0
  44. package/data/craftbook-templates/ca/careful-mode/versions/1.1.0/craftbook.json +43 -0
  45. package/data/craftbook-templates/ca/careful-mode/versions/1.1.0/test.json +110 -0
  46. package/data/craftbook-templates/ca/careful-mode/versions/1.2.0/craftbook.json +43 -0
  47. package/data/craftbook-templates/ca/careful-mode/versions/1.2.0/test.json +110 -0
  48. package/data/craftbook-templates/co/content-deck/versions/1.1.0/craftbook.json +185 -0
  49. package/data/craftbook-templates/co/content-deck/versions/1.1.0/test.json +166 -0
  50. package/data/craftbook-templates/co/content-deck/versions/1.2.0/craftbook.json +185 -0
  51. package/data/craftbook-templates/co/content-deck/versions/1.2.0/test.json +169 -0
  52. package/data/craftbook-templates/co/corpus-email-digest/versions/1.1.0/craftbook.json +189 -0
  53. package/data/craftbook-templates/co/corpus-email-digest/versions/1.1.0/test.json +182 -0
  54. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.0/craftbook.json +189 -0
  55. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.0/test.json +187 -0
  56. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.0/craftbook.json +385 -0
  57. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.0/test.json +201 -0
  58. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.0/craftbook.json +353 -0
  59. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.0/test.json +191 -0
  60. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.0/craftbook.json +347 -0
  61. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.0/test.json +135 -0
  62. package/data/craftbook-templates/fr/freeze-scope/versions/1.2.0/craftbook.json +50 -0
  63. package/data/craftbook-templates/fr/freeze-scope/versions/1.2.0/test.json +131 -0
  64. package/data/craftbook-templates/fr/freeze-scope/versions/1.3.0/craftbook.json +50 -0
  65. package/data/craftbook-templates/fr/freeze-scope/versions/1.3.0/test.json +131 -0
  66. package/data/craftbook-templates/ht/html-arcade-game/versions/1.1.0/craftbook.json +197 -0
  67. package/data/craftbook-templates/ht/html-arcade-game/versions/1.1.0/test.json +173 -0
  68. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.0/craftbook.json +197 -0
  69. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.0/test.json +176 -0
  70. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.0/craftbook.json +333 -0
  71. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.0/test.json +141 -0
  72. package/data/craftbook-templates/im/image-set-index/versions/1.1.0/craftbook.json +163 -0
  73. package/data/craftbook-templates/im/image-set-index/versions/1.1.0/test.json +177 -0
  74. package/data/craftbook-templates/im/image-set-index/versions/1.2.0/craftbook.json +163 -0
  75. package/data/craftbook-templates/im/image-set-index/versions/1.2.0/test.json +180 -0
  76. package/data/craftbook-templates/index.json +1 -1
  77. package/data/craftbook-templates/po/powerpoint-deck/versions/1.6.0/craftbook.json +257 -0
  78. package/data/craftbook-templates/po/powerpoint-deck/versions/1.6.0/test.json +225 -0
  79. package/data/craftbook-templates/re/release-artifact-sanity-check/art.json +13 -0
  80. package/data/craftbook-templates/re/release-artifact-sanity-check/logo.webp +0 -0
  81. package/data/craftbook-templates/re/release-artifact-sanity-check/manifest.json +24 -0
  82. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.0/craftbook.json +202 -0
  83. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.0/test.json +138 -0
  84. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.0/craftbook.json +348 -0
  85. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.0/test.json +153 -0
  86. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.0/craftbook.json +353 -0
  87. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.0/test.json +152 -0
  88. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.0/craftbook.json +391 -0
  89. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.0/test.json +162 -0
  90. package/data/craftbook-templates/te/technical-documentation/versions/2.0.0/craftbook.json +343 -0
  91. package/data/craftbook-templates/te/technical-documentation/versions/2.0.0/test.json +174 -0
  92. package/data/craftbook-templates/tr/translate-content/versions/1.1.0/craftbook.json +84 -0
  93. package/data/craftbook-templates/tr/translate-content/versions/1.1.0/test.json +141 -0
  94. package/package.json +8 -4
  95. package/schemas/craftbook-test.schema.json +232 -3
@@ -0,0 +1,141 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Incremental sidecar translation workflow",
4
+ "objective": "Prove that the translate-content task writes faithful mirrored translations, preserves originals, records the run, and clears its runtime completion gate.",
5
+ "tags": [
6
+ "corpus"
7
+ ],
8
+ "prompt": "Run the Translate Content craftbook for this project into Dutch (language: Nederlands). Translate docs/welcome.md and docs/pricing.md into mirrored sidecars under translations/Nederlands/, never modify the source files, and complete the real craftbook task including its run-note gate.",
9
+ "setup": {
10
+ "projectName": "Translate Content Eval",
11
+ "about": "Self-contained translation workflow eval. Two small English content documents are seeded under workspace/docs; the designated language is Dutch.",
12
+ "missionObjectives": "Use the Translate Content craftbook as a real task, keep a faithful Dutch shadow under translations/Nederlands/, preserve originals byte-for-byte, and clear the task's completion gate.",
13
+ "files": [
14
+ {
15
+ "path": "docs/welcome.md",
16
+ "content": "# Welcome to Brightbeam\n\nBrightbeam helps small workshops schedule their apprentices. Create a workshop, invite your crew, and the weekly plan builds itself.\n\nThe `brightbeam sync` command uploads your local plan. Do not rename it.\n"
17
+ },
18
+ {
19
+ "path": "docs/pricing.md",
20
+ "content": "# Pricing\n\nBrightbeam has two plans. The Workshop plan is free for up to five crew members. The Guild plan costs 12 euro per month and adds shared reports and priority support.\n"
21
+ }
22
+ ],
23
+ "craftbookParams": {
24
+ "language": "Nederlands"
25
+ },
26
+ "worker": {
27
+ "name": "Els",
28
+ "role": "Translator"
29
+ }
30
+ },
31
+ "mocks": [],
32
+ "success": {
33
+ "summary": "Both Dutch sidecars exist, originals remain intact, and History proves the translate step's runtime gate approved on a task sourced from translate-content.",
34
+ "deliverables": [
35
+ {
36
+ "path": "translations/Nederlands/docs/welcome.md",
37
+ "kind": "markdown-report",
38
+ "minBytes": 150,
39
+ "checks": [
40
+ {
41
+ "kind": "contains",
42
+ "file": "translations/Nederlands/docs/welcome.md",
43
+ "pattern": "Brightbeam",
44
+ "label": "product name stays untranslated"
45
+ },
46
+ {
47
+ "kind": "contains",
48
+ "file": "translations/Nederlands/docs/welcome.md",
49
+ "pattern": "`brightbeam sync`",
50
+ "label": "code identifier stays untranslated"
51
+ },
52
+ {
53
+ "kind": "contains",
54
+ "file": "translations/Nederlands/docs/welcome.md",
55
+ "pattern": "welkom|werkplaats|plannen|ploeg|leerling",
56
+ "flags": "i",
57
+ "label": "body reads as Dutch"
58
+ }
59
+ ]
60
+ },
61
+ {
62
+ "path": "translations/Nederlands/docs/pricing.md",
63
+ "kind": "markdown-report",
64
+ "minBytes": 100,
65
+ "checks": [
66
+ {
67
+ "kind": "contains",
68
+ "file": "translations/Nederlands/docs/pricing.md",
69
+ "pattern": "12",
70
+ "label": "the price survives translation"
71
+ },
72
+ {
73
+ "kind": "contains",
74
+ "file": "translations/Nederlands/docs/pricing.md",
75
+ "pattern": "gratis|per maand|prijzen|abonnement",
76
+ "flags": "i",
77
+ "label": "body reads as Dutch"
78
+ }
79
+ ]
80
+ }
81
+ ],
82
+ "checks": [
83
+ {
84
+ "kind": "contains",
85
+ "file": "docs/welcome.md",
86
+ "pattern": "Brightbeam helps small workshops schedule their apprentices",
87
+ "label": "original welcome.md is unmodified"
88
+ },
89
+ {
90
+ "kind": "contains",
91
+ "file": "docs/pricing.md",
92
+ "pattern": "The Workshop plan is free for up to five crew members",
93
+ "label": "original pricing.md is unmodified"
94
+ }
95
+ ],
96
+ "taskGraph": {
97
+ "requireCraftbookTask": true,
98
+ "requireTerminalStep": true
99
+ },
100
+ "history": [
101
+ {
102
+ "kind": "task.step.gated",
103
+ "minEntries": 1,
104
+ "details": {
105
+ "bookCatalogId": "translate-content",
106
+ "stepId": "translate",
107
+ "decision": "approve"
108
+ }
109
+ }
110
+ ],
111
+ "unchangedFixtures": [
112
+ "docs/welcome.md",
113
+ "docs/pricing.md"
114
+ ]
115
+ },
116
+ "rubric": {
117
+ "artifact": {
118
+ "path": "translations/Nederlands/docs/welcome.md",
119
+ "kind": "markdown"
120
+ },
121
+ "axes": [
122
+ {
123
+ "name": "fidelity",
124
+ "description": "Meaning, tone, and register survive translation; nothing material is added or dropped."
125
+ },
126
+ {
127
+ "name": "terminology",
128
+ "description": "Product names and code identifiers stay untranslated; established Dutch terms are used consistently."
129
+ },
130
+ {
131
+ "name": "structure",
132
+ "description": "Markdown structure and mirrored source paths are preserved exactly."
133
+ }
134
+ ]
135
+ },
136
+ "qualityFocus": [
137
+ "real craftbook task attribution",
138
+ "runtime gate approval evidence",
139
+ "sidecar and source-preservation discipline"
140
+ ]
141
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/gilde",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "description": "The gilde catalog: model manifests, toolsets, craftbooks, roles, and project types for gezel.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -14,6 +14,7 @@
14
14
  "url": "https://github.com/bendyline/gilde/issues"
15
15
  },
16
16
  "files": [
17
+ "authoring",
17
18
  "data",
18
19
  "schemas",
19
20
  "README.md"
@@ -24,16 +25,19 @@
24
25
  "./schemas/*": "./schemas/*"
25
26
  },
26
27
  "scripts": {
27
- "fix": "npm run format && npm run build-index",
28
- "check": "npm run format:check && npm run validate && npm run check-index && npm run lint-models && npm run check-page-demos",
28
+ "fix": "npm run format && npm run format:authoring && npm run build-index",
29
+ "check": "npm run format:check && npm run format:authoring:check && npm run validate && npm run check-authoring && npm run check-index && npm run lint-models && npm run check-page-demos",
29
30
  "validate": "npm --prefix tools ci --silent && node tools/validate.mjs",
31
+ "check-authoring": "node tools/check-authoring.mjs",
30
32
  "build-index": "node tools/build-index.mjs",
31
33
  "check-index": "node tools/build-index.mjs --check",
32
34
  "lint-models": "node tools/lint-models.mjs",
33
35
  "check-page-demos": "node tools/check-page-demos.mjs",
34
36
  "demos": "node tools/serve-page-demos.mjs",
35
37
  "format": "node tools/format.mjs --write",
36
- "format:check": "node tools/format.mjs"
38
+ "format:check": "node tools/format.mjs",
39
+ "format:authoring": "node tools/format.mjs --write --root=authoring",
40
+ "format:authoring:check": "node tools/format.mjs --root=authoring"
37
41
  },
38
42
  "keywords": [
39
43
  "gezel",
@@ -57,8 +57,12 @@
57
57
  "type": "string",
58
58
  "enum": [
59
59
  "workspace",
60
- "artifact"
60
+ "artifact",
61
+ "harness"
61
62
  ]
63
+ },
64
+ "modelInput": {
65
+ "type": "boolean"
62
66
  }
63
67
  },
64
68
  "required": [
@@ -68,6 +72,15 @@
68
72
  "additionalProperties": false
69
73
  }
70
74
  },
75
+ "craftbookParams": {
76
+ "type": "object",
77
+ "propertyNames": {
78
+ "type": "string"
79
+ },
80
+ "additionalProperties": {
81
+ "type": "string"
82
+ }
83
+ },
71
84
  "worker": {
72
85
  "type": "object",
73
86
  "properties": {
@@ -288,7 +301,7 @@
288
301
  "toolsetId": {
289
302
  "type": "string",
290
303
  "minLength": 1,
291
- "pattern": "^[a-z0-9][a-z0-9-]*$"
304
+ "pattern": "^(?:@[a-z0-9][a-z0-9._-]*\\/)?[a-z0-9][a-z0-9._-]*$"
292
305
  },
293
306
  "tools": {
294
307
  "minItems": 1,
@@ -305,6 +318,11 @@
305
318
  "minLength": 1
306
319
  },
307
320
  "resultTemplate": {},
321
+ "resultSequence": {
322
+ "minItems": 1,
323
+ "type": "array",
324
+ "items": {}
325
+ },
308
326
  "writeFixture": {
309
327
  "type": "object",
310
328
  "properties": {
@@ -324,7 +342,8 @@
324
342
  "enum": [
325
343
  "minimal-pptx",
326
344
  "minimal-docx",
327
- "minimal-pdf"
345
+ "minimal-pdf",
346
+ "minimal-png"
328
347
  ]
329
348
  }
330
349
  },
@@ -4178,6 +4197,9 @@
4178
4197
  "requireCraftbookTask": {
4179
4198
  "type": "boolean"
4180
4199
  },
4200
+ "requireTerminalStep": {
4201
+ "type": "boolean"
4202
+ },
4181
4203
  "requireDraftRef": {
4182
4204
  "type": "boolean"
4183
4205
  },
@@ -4256,6 +4278,30 @@
4256
4278
  "type": "string",
4257
4279
  "minLength": 1
4258
4280
  }
4281
+ },
4282
+ "toolCalls": {
4283
+ "type": "object",
4284
+ "propertyNames": {
4285
+ "type": "string",
4286
+ "minLength": 1
4287
+ },
4288
+ "additionalProperties": {
4289
+ "type": "object",
4290
+ "properties": {
4291
+ "minCalls": {
4292
+ "default": 1,
4293
+ "type": "integer",
4294
+ "minimum": 0,
4295
+ "maximum": 9007199254740991
4296
+ },
4297
+ "maxCalls": {
4298
+ "type": "integer",
4299
+ "minimum": 0,
4300
+ "maximum": 9007199254740991
4301
+ }
4302
+ },
4303
+ "additionalProperties": false
4304
+ }
4259
4305
  }
4260
4306
  },
4261
4307
  "required": [
@@ -4263,6 +4309,189 @@
4263
4309
  ],
4264
4310
  "additionalProperties": false
4265
4311
  }
4312
+ },
4313
+ "history": {
4314
+ "type": "array",
4315
+ "items": {
4316
+ "type": "object",
4317
+ "properties": {
4318
+ "kind": {
4319
+ "type": "string",
4320
+ "enum": [
4321
+ "gezel.created",
4322
+ "gezel.deleted",
4323
+ "gezel.renamed",
4324
+ "gezel.settings.updated",
4325
+ "gezel.about.generated",
4326
+ "icon.generated",
4327
+ "icon.reverted",
4328
+ "poppetje.generated",
4329
+ "poppetje.updated",
4330
+ "poppetje.rerolled",
4331
+ "project.created",
4332
+ "project.deleted",
4333
+ "project.updated",
4334
+ "project.about.updated",
4335
+ "project.mission.updated",
4336
+ "project.voorman.changed",
4337
+ "project.gezel.joined",
4338
+ "project.gezel.left",
4339
+ "project.suggested-work.enabled",
4340
+ "project.suggested-work.disabled",
4341
+ "project.properties.updated",
4342
+ "report.action.fired",
4343
+ "report.action.dismissed",
4344
+ "project.status.changed",
4345
+ "project.nudge.sent",
4346
+ "project.github.linked",
4347
+ "project.github.unlinked",
4348
+ "project.github.synced",
4349
+ "project.review.requested",
4350
+ "project.review.settled",
4351
+ "project.connector.bound",
4352
+ "project.connector.unbound",
4353
+ "project.connector.synced",
4354
+ "document.created",
4355
+ "document.renamed",
4356
+ "document.deleted",
4357
+ "workspace.write",
4358
+ "workspace.delete",
4359
+ "workspace.mkdir",
4360
+ "workspace.move",
4361
+ "workspace.npm.installed",
4362
+ "workspace.npm.declined",
4363
+ "workspace.script.run",
4364
+ "workspace.script.declined",
4365
+ "workspace.npx.run",
4366
+ "workspace.npx.declined",
4367
+ "terminal.command.run",
4368
+ "workspace.allow-writes.changed",
4369
+ "tool.called",
4370
+ "page.tool.invoked",
4371
+ "page.reaction.sent",
4372
+ "tool.gated",
4373
+ "meester.changed",
4374
+ "klerk.changed",
4375
+ "boekwachter.changed",
4376
+ "keurmeester.changed",
4377
+ "gilde.updated",
4378
+ "v1.chat.completion",
4379
+ "keurmeester.intervention",
4380
+ "keurmeester.digest.generated",
4381
+ "task.created",
4382
+ "task.activated",
4383
+ "task.updated",
4384
+ "task.status.changed",
4385
+ "task.assignee.changed",
4386
+ "task.step.added",
4387
+ "task.step.activated",
4388
+ "task.step.completed",
4389
+ "task.step.redriven",
4390
+ "task.step.stalled",
4391
+ "task.step.gated",
4392
+ "task.step.routed",
4393
+ "task.entry.dispatched",
4394
+ "task.craftbook.tier-collapsed",
4395
+ "task.tick",
4396
+ "task.canceled",
4397
+ "task.instance.spawned",
4398
+ "task.fanout.materialized",
4399
+ "tasknote.appended",
4400
+ "tasknote.updated",
4401
+ "tasknote.deleted",
4402
+ "task.about.updated",
4403
+ "task.step.updated",
4404
+ "task.step.removed",
4405
+ "task.craftbook.reordered",
4406
+ "task.craftbook.updated",
4407
+ "craftbook.created",
4408
+ "craftbook.updated",
4409
+ "craftbook.deleted",
4410
+ "toolset.config.updated",
4411
+ "config.credential.updated",
4412
+ "config.engagementMode.changed",
4413
+ "memory.auto-recalled",
4414
+ "memory.auto-summarized",
4415
+ "memory.compacted",
4416
+ "memory.lessons-updated",
4417
+ "project.digest.generated",
4418
+ "meester.status.generated",
4419
+ "gezel.level.up",
4420
+ "gezel.trait.adopted",
4421
+ "gezel.trait.removed",
4422
+ "gezel.tuning.adjusted",
4423
+ "chat.compacted",
4424
+ "gezel.messaged",
4425
+ "gezel.message.delivered",
4426
+ "gezel.message.delivery_failed",
4427
+ "gezel.reply.dropped",
4428
+ "chat.mention.fanout",
4429
+ "render.generated",
4430
+ "user.question.asked",
4431
+ "user.question.answered",
4432
+ "debug.bridge.failed",
4433
+ "channel.configured",
4434
+ "channel.message.sent",
4435
+ "channel.message.failed",
4436
+ "copilot.builtin.denied",
4437
+ "credential.used",
4438
+ "eval.trial.started",
4439
+ "eval.trial.completed"
4440
+ ]
4441
+ },
4442
+ "minEntries": {
4443
+ "default": 1,
4444
+ "type": "integer",
4445
+ "minimum": 0,
4446
+ "maximum": 9007199254740991
4447
+ },
4448
+ "maxEntries": {
4449
+ "type": "integer",
4450
+ "minimum": 0,
4451
+ "maximum": 9007199254740991
4452
+ },
4453
+ "summaryPattern": {
4454
+ "type": "string",
4455
+ "minLength": 1
4456
+ },
4457
+ "flags": {
4458
+ "type": "string"
4459
+ },
4460
+ "details": {
4461
+ "type": "object",
4462
+ "propertyNames": {
4463
+ "type": "string"
4464
+ },
4465
+ "additionalProperties": {
4466
+ "anyOf": [
4467
+ {
4468
+ "type": "string"
4469
+ },
4470
+ {
4471
+ "type": "number"
4472
+ },
4473
+ {
4474
+ "type": "boolean"
4475
+ },
4476
+ {
4477
+ "type": "null"
4478
+ }
4479
+ ]
4480
+ }
4481
+ }
4482
+ },
4483
+ "required": [
4484
+ "kind"
4485
+ ],
4486
+ "additionalProperties": false
4487
+ }
4488
+ },
4489
+ "unchangedFixtures": {
4490
+ "type": "array",
4491
+ "items": {
4492
+ "type": "string",
4493
+ "minLength": 1
4494
+ }
4266
4495
  }
4267
4496
  },
4268
4497
  "required": [