backend/data/prompts.json CHANGED
@@ -1967,7 +1967,7 @@
1967
  ],
1968
  "events": [
1969
  {
1970
- "id": "silent_action",
1971
  "modality": "silent_action",
1972
  "actor": "person_A",
1973
  "action": "thumbs_up",
@@ -1976,7 +1976,7 @@
1976
  "definition": "The person's right hand forms or holds a thumbs-up pose: a fist closed with the thumb extended upward, clearly recognizable. The target is the pose, not a separate hand-raising motion."
1977
  },
1978
  {
1979
- "id": "silent_action",
1980
  "modality": "silent_action",
1981
  "actor": "person_A",
1982
  "action": "raise_open_palm",
@@ -1986,7 +1986,14 @@
1986
  }
1987
  ],
1988
  "content": {
1989
- "silent_action": {
 
 
 
 
 
 
 
1990
  "actor": "person_A",
1991
  "action": "raise_open_palm",
1992
  "body_side": "right",
@@ -2001,8 +2008,8 @@
2001
  "timing_type": "relative",
2002
  "value": {
2003
  "sequence": [
2004
- "silent_action",
2005
- "silent_action"
2006
  ]
2007
  }
2008
  },
@@ -2022,7 +2029,7 @@
2022
  ],
2023
  "events": [
2024
  {
2025
- "id": "silent_action",
2026
  "modality": "silent_action",
2027
  "actor": "person_A",
2028
  "action": "raise_open_palm",
@@ -2031,7 +2038,7 @@
2031
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers together and extended, held clearly as a recognizable open-palm pose. The target is the held pose, not a separate raising motion."
2032
  },
2033
  {
2034
- "id": "silent_action",
2035
  "modality": "silent_action",
2036
  "actor": "person_A",
2037
  "action": "thumbs_up",
@@ -2041,7 +2048,14 @@
2041
  }
2042
  ],
2043
  "content": {
2044
- "silent_action": {
 
 
 
 
 
 
 
2045
  "actor": "person_A",
2046
  "action": "thumbs_up",
2047
  "body_side": "right",
@@ -2056,8 +2070,8 @@
2056
  "timing_type": "relative",
2057
  "value": {
2058
  "sequence": [
2059
- "silent_action",
2060
- "silent_action"
2061
  ]
2062
  }
2063
  },
@@ -2213,7 +2227,7 @@
2213
  ],
2214
  "events": [
2215
  {
2216
- "id": "sounding_action",
2217
  "modality": "sounding_action",
2218
  "actor": "person_A",
2219
  "action": "slapping_the_thigh",
@@ -2225,7 +2239,7 @@
2225
  "definition": "The person's left hand strikes the top of the left thigh, with visible contact and a sharp slap sound at the moment of impact."
2226
  },
2227
  {
2228
- "id": "sounding_action",
2229
  "modality": "sounding_action",
2230
  "actor": "person_A",
2231
  "action": "clapping_hands",
@@ -2238,7 +2252,17 @@
2238
  }
2239
  ],
2240
  "content": {
2241
- "sounding_action": {
 
 
 
 
 
 
 
 
 
 
2242
  "actor": "person_A",
2243
  "action": "clapping_hands",
2244
  "acting_body_side": "both",
@@ -2256,8 +2280,8 @@
2256
  "timing_type": "relative",
2257
  "value": {
2258
  "sequence": [
2259
- "sounding_action",
2260
- "sounding_action"
2261
  ]
2262
  }
2263
  },
@@ -2277,7 +2301,7 @@
2277
  ],
2278
  "events": [
2279
  {
2280
- "id": "sounding_action",
2281
  "modality": "sounding_action",
2282
  "actor": "person_A",
2283
  "action": "clapping_hands",
@@ -2289,7 +2313,7 @@
2289
  "definition": "The person brings both hands together in front of the torso to clap, with visible hand-to-hand contact and a single sharp clap sound at the moment of impact."
2290
  },
2291
  {
2292
- "id": "sounding_action",
2293
  "modality": "sounding_action",
2294
  "actor": "person_A",
2295
  "action": "slapping_the_thigh",
@@ -2302,7 +2326,17 @@
2302
  }
2303
  ],
2304
  "content": {
2305
- "sounding_action": {
 
 
 
 
 
 
 
 
 
 
2306
  "actor": "person_A",
2307
  "action": "slapping_the_thigh",
2308
  "acting_body_side": "left",
@@ -2320,8 +2354,8 @@
2320
  "timing_type": "relative",
2321
  "value": {
2322
  "sequence": [
2323
- "sounding_action",
2324
- "sounding_action"
2325
  ]
2326
  }
2327
  },
@@ -3735,14 +3769,14 @@
3735
  ],
3736
  "events": [
3737
  {
3738
- "id": "speech",
3739
  "modality": "speech",
3740
  "actor": "person_A",
3741
  "text": "stop",
3742
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3743
  },
3744
  {
3745
- "id": "silent_action",
3746
  "modality": "silent_action",
3747
  "actor": "person_A",
3748
  "action": "raise_open_palm",
@@ -3751,7 +3785,7 @@
3751
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
3752
  },
3753
  {
3754
- "id": "sounding_action",
3755
  "modality": "sounding_action",
3756
  "actor": "person_A",
3757
  "action": "clapping_hands",
@@ -3762,19 +3796,19 @@
3762
  }
3763
  ],
3764
  "content": {
3765
- "speech": {
3766
  "actor": "person_A",
3767
  "text": "stop",
3768
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3769
  },
3770
- "silent_action": {
3771
  "actor": "person_A",
3772
  "action": "raise_open_palm",
3773
  "body_side": "right",
3774
  "body_part": "hand",
3775
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
3776
  },
3777
- "sounding_action": {
3778
  "actor": "person_A",
3779
  "action": "clapping_hands",
3780
  "acting_body_side": "both",
@@ -3977,14 +4011,14 @@
3977
  ],
3978
  "events": [
3979
  {
3980
- "id": "speech",
3981
  "modality": "speech",
3982
  "actor": "person_A",
3983
  "text": "stop",
3984
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3985
  },
3986
  {
3987
- "id": "silent_action",
3988
  "modality": "silent_action",
3989
  "actor": "person_A",
3990
  "action": "peace_sign",
@@ -3993,7 +4027,7 @@
3993
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
3994
  },
3995
  {
3996
- "id": "sounding_action",
3997
  "modality": "sounding_action",
3998
  "actor": "person_A",
3999
  "action": "clapping_hands",
@@ -4004,19 +4038,19 @@
4004
  }
4005
  ],
4006
  "content": {
4007
- "speech": {
4008
  "actor": "person_A",
4009
  "text": "stop",
4010
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4011
  },
4012
- "silent_action": {
4013
  "actor": "person_A",
4014
  "action": "peace_sign",
4015
  "body_side": "right",
4016
  "body_part": "hand",
4017
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4018
  },
4019
- "sounding_action": {
4020
  "actor": "person_A",
4021
  "action": "clapping_hands",
4022
  "acting_body_side": "both",
@@ -4142,14 +4176,14 @@
4142
  ],
4143
  "events": [
4144
  {
4145
- "id": "speech",
4146
  "modality": "speech",
4147
  "actor": "person_A",
4148
  "text": "stop",
4149
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4150
  },
4151
  {
4152
- "id": "silent_action",
4153
  "modality": "silent_action",
4154
  "actor": "person_A",
4155
  "action": "peace_sign",
@@ -4158,7 +4192,7 @@
4158
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4159
  },
4160
  {
4161
- "id": "sounding_action",
4162
  "modality": "sounding_action",
4163
  "actor": "person_A",
4164
  "action": "clapping_hands",
@@ -4169,19 +4203,19 @@
4169
  }
4170
  ],
4171
  "content": {
4172
- "speech": {
4173
  "actor": "person_A",
4174
  "text": "stop",
4175
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4176
  },
4177
- "silent_action": {
4178
  "actor": "person_A",
4179
  "action": "peace_sign",
4180
  "body_side": "right",
4181
  "body_part": "hand",
4182
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4183
  },
4184
- "sounding_action": {
4185
  "actor": "person_A",
4186
  "action": "clapping_hands",
4187
  "acting_body_side": "both",
@@ -4230,14 +4264,14 @@
4230
  ],
4231
  "events": [
4232
  {
4233
- "id": "speech",
4234
  "modality": "speech",
4235
  "actor": "person_A",
4236
  "text": "stop",
4237
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4238
  },
4239
  {
4240
- "id": "silent_action",
4241
  "modality": "silent_action",
4242
  "actor": "person_A",
4243
  "action": "peace_sign",
@@ -4246,7 +4280,7 @@
4246
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4247
  },
4248
  {
4249
- "id": "sounding_action",
4250
  "modality": "sounding_action",
4251
  "actor": "person_A",
4252
  "action": "clapping_hands",
@@ -4257,19 +4291,19 @@
4257
  }
4258
  ],
4259
  "content": {
4260
- "speech": {
4261
  "actor": "person_A",
4262
  "text": "stop",
4263
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4264
  },
4265
- "silent_action": {
4266
  "actor": "person_A",
4267
  "action": "peace_sign",
4268
  "body_side": "right",
4269
  "body_part": "hand",
4270
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4271
  },
4272
- "sounding_action": {
4273
  "actor": "person_A",
4274
  "action": "clapping_hands",
4275
  "acting_body_side": "both",
@@ -4395,14 +4429,14 @@
4395
  ],
4396
  "events": [
4397
  {
4398
- "id": "speech",
4399
  "modality": "speech",
4400
  "actor": "person_A",
4401
  "text": "stop",
4402
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4403
  },
4404
  {
4405
- "id": "silent_action",
4406
  "modality": "silent_action",
4407
  "actor": "person_A",
4408
  "action": "peace_sign",
@@ -4411,7 +4445,7 @@
4411
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4412
  },
4413
  {
4414
- "id": "sounding_action",
4415
  "modality": "sounding_action",
4416
  "actor": "person_A",
4417
  "action": "clapping_hands",
@@ -4422,19 +4456,19 @@
4422
  }
4423
  ],
4424
  "content": {
4425
- "speech": {
4426
  "actor": "person_A",
4427
  "text": "stop",
4428
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4429
  },
4430
- "silent_action": {
4431
  "actor": "person_A",
4432
  "action": "peace_sign",
4433
  "body_side": "right",
4434
  "body_part": "hand",
4435
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4436
  },
4437
- "sounding_action": {
4438
  "actor": "person_A",
4439
  "action": "clapping_hands",
4440
  "acting_body_side": "both",
@@ -4483,14 +4517,14 @@
4483
  ],
4484
  "events": [
4485
  {
4486
- "id": "speech",
4487
  "modality": "speech",
4488
  "actor": "person_A",
4489
  "text": "stop",
4490
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4491
  },
4492
  {
4493
- "id": "silent_action",
4494
  "modality": "silent_action",
4495
  "actor": "person_A",
4496
  "action": "peace_sign",
@@ -4499,7 +4533,7 @@
4499
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4500
  },
4501
  {
4502
- "id": "sounding_action",
4503
  "modality": "sounding_action",
4504
  "actor": "person_A",
4505
  "action": "clapping_hands",
@@ -4510,19 +4544,19 @@
4510
  }
4511
  ],
4512
  "content": {
4513
- "speech": {
4514
  "actor": "person_A",
4515
  "text": "stop",
4516
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4517
  },
4518
- "silent_action": {
4519
  "actor": "person_A",
4520
  "action": "peace_sign",
4521
  "body_side": "right",
4522
  "body_part": "hand",
4523
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4524
  },
4525
- "sounding_action": {
4526
  "actor": "person_A",
4527
  "action": "clapping_hands",
4528
  "acting_body_side": "both",
@@ -4571,14 +4605,14 @@
4571
  ],
4572
  "events": [
4573
  {
4574
- "id": "speech",
4575
  "modality": "speech",
4576
  "actor": "person_A",
4577
  "text": "stop",
4578
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4579
  },
4580
  {
4581
- "id": "silent_action",
4582
  "modality": "silent_action",
4583
  "actor": "person_A",
4584
  "action": "peace_sign",
@@ -4587,7 +4621,7 @@
4587
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4588
  },
4589
  {
4590
- "id": "sounding_action",
4591
  "modality": "sounding_action",
4592
  "actor": "person_A",
4593
  "action": "clapping_hands",
@@ -4598,19 +4632,19 @@
4598
  }
4599
  ],
4600
  "content": {
4601
- "speech": {
4602
  "actor": "person_A",
4603
  "text": "stop",
4604
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4605
  },
4606
- "silent_action": {
4607
  "actor": "person_A",
4608
  "action": "peace_sign",
4609
  "body_side": "right",
4610
  "body_part": "hand",
4611
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4612
  },
4613
- "sounding_action": {
4614
  "actor": "person_A",
4615
  "action": "clapping_hands",
4616
  "acting_body_side": "both",
@@ -4659,14 +4693,14 @@
4659
  ],
4660
  "events": [
4661
  {
4662
- "id": "speech",
4663
  "modality": "speech",
4664
  "actor": "person_A",
4665
  "text": "stop",
4666
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4667
  },
4668
  {
4669
- "id": "silent_action",
4670
  "modality": "silent_action",
4671
  "actor": "person_A",
4672
  "action": "peace_sign",
@@ -4675,7 +4709,7 @@
4675
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4676
  },
4677
  {
4678
- "id": "sounding_action",
4679
  "modality": "sounding_action",
4680
  "actor": "person_A",
4681
  "action": "clapping_hands",
@@ -4686,19 +4720,19 @@
4686
  }
4687
  ],
4688
  "content": {
4689
- "speech": {
4690
  "actor": "person_A",
4691
  "text": "stop",
4692
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4693
  },
4694
- "silent_action": {
4695
  "actor": "person_A",
4696
  "action": "peace_sign",
4697
  "body_side": "right",
4698
  "body_part": "hand",
4699
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4700
  },
4701
- "sounding_action": {
4702
  "actor": "person_A",
4703
  "action": "clapping_hands",
4704
  "acting_body_side": "both",
@@ -5132,14 +5166,14 @@
5132
  ],
5133
  "events": [
5134
  {
5135
- "id": "speech",
5136
  "modality": "speech",
5137
  "actor": "person_A",
5138
  "text": "okay",
5139
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5140
  },
5141
  {
5142
- "id": "silent_action",
5143
  "modality": "silent_action",
5144
  "actor": "person_A",
5145
  "action": "raise_open_palm",
@@ -5148,7 +5182,7 @@
5148
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5149
  },
5150
  {
5151
- "id": "sounding_action",
5152
  "modality": "sounding_action",
5153
  "actor": "person_A",
5154
  "action": "clapping_hands",
@@ -5159,19 +5193,19 @@
5159
  }
5160
  ],
5161
  "content": {
5162
- "speech": {
5163
  "actor": "person_A",
5164
  "text": "okay",
5165
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5166
  },
5167
- "silent_action": {
5168
  "actor": "person_A",
5169
  "action": "raise_open_palm",
5170
  "body_side": "right",
5171
  "body_part": "hand",
5172
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5173
  },
5174
- "sounding_action": {
5175
  "actor": "person_A",
5176
  "action": "clapping_hands",
5177
  "acting_body_side": "both",
@@ -5220,14 +5254,14 @@
5220
  ],
5221
  "events": [
5222
  {
5223
- "id": "speech",
5224
  "modality": "speech",
5225
  "actor": "person_A",
5226
  "text": "okay",
5227
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5228
  },
5229
  {
5230
- "id": "silent_action",
5231
  "modality": "silent_action",
5232
  "actor": "person_A",
5233
  "action": "raise_open_palm",
@@ -5236,7 +5270,7 @@
5236
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5237
  },
5238
  {
5239
- "id": "sounding_action",
5240
  "modality": "sounding_action",
5241
  "actor": "person_A",
5242
  "action": "clapping_hands",
@@ -5247,19 +5281,19 @@
5247
  }
5248
  ],
5249
  "content": {
5250
- "speech": {
5251
  "actor": "person_A",
5252
  "text": "okay",
5253
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5254
  },
5255
- "silent_action": {
5256
  "actor": "person_A",
5257
  "action": "raise_open_palm",
5258
  "body_side": "right",
5259
  "body_part": "hand",
5260
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5261
  },
5262
- "sounding_action": {
5263
  "actor": "person_A",
5264
  "action": "clapping_hands",
5265
  "acting_body_side": "both",
@@ -5385,14 +5419,14 @@
5385
  ],
5386
  "events": [
5387
  {
5388
- "id": "speech",
5389
  "modality": "speech",
5390
  "actor": "person_A",
5391
  "text": "okay",
5392
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5393
  },
5394
  {
5395
- "id": "silent_action",
5396
  "modality": "silent_action",
5397
  "actor": "person_A",
5398
  "action": "raise_open_palm",
@@ -5401,7 +5435,7 @@
5401
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5402
  },
5403
  {
5404
- "id": "sounding_action",
5405
  "modality": "sounding_action",
5406
  "actor": "person_A",
5407
  "action": "clapping_hands",
@@ -5412,19 +5446,19 @@
5412
  }
5413
  ],
5414
  "content": {
5415
- "speech": {
5416
  "actor": "person_A",
5417
  "text": "okay",
5418
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5419
  },
5420
- "silent_action": {
5421
  "actor": "person_A",
5422
  "action": "raise_open_palm",
5423
  "body_side": "right",
5424
  "body_part": "hand",
5425
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5426
  },
5427
- "sounding_action": {
5428
  "actor": "person_A",
5429
  "action": "clapping_hands",
5430
  "acting_body_side": "both",
@@ -5550,14 +5584,14 @@
5550
  ],
5551
  "events": [
5552
  {
5553
- "id": "speech",
5554
  "modality": "speech",
5555
  "actor": "person_A",
5556
  "text": "okay",
5557
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5558
  },
5559
  {
5560
- "id": "silent_action",
5561
  "modality": "silent_action",
5562
  "actor": "person_A",
5563
  "action": "peace_sign",
@@ -5566,7 +5600,7 @@
5566
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5567
  },
5568
  {
5569
- "id": "sounding_action",
5570
  "modality": "sounding_action",
5571
  "actor": "person_A",
5572
  "action": "clapping_hands",
@@ -5577,19 +5611,19 @@
5577
  }
5578
  ],
5579
  "content": {
5580
- "speech": {
5581
  "actor": "person_A",
5582
  "text": "okay",
5583
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5584
  },
5585
- "silent_action": {
5586
  "actor": "person_A",
5587
  "action": "peace_sign",
5588
  "body_side": "right",
5589
  "body_part": "hand",
5590
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5591
  },
5592
- "sounding_action": {
5593
  "actor": "person_A",
5594
  "action": "clapping_hands",
5595
  "acting_body_side": "both",
@@ -5638,14 +5672,14 @@
5638
  ],
5639
  "events": [
5640
  {
5641
- "id": "speech",
5642
  "modality": "speech",
5643
  "actor": "person_A",
5644
  "text": "okay",
5645
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5646
  },
5647
  {
5648
- "id": "silent_action",
5649
  "modality": "silent_action",
5650
  "actor": "person_A",
5651
  "action": "peace_sign",
@@ -5654,7 +5688,7 @@
5654
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5655
  },
5656
  {
5657
- "id": "sounding_action",
5658
  "modality": "sounding_action",
5659
  "actor": "person_A",
5660
  "action": "clapping_hands",
@@ -5665,19 +5699,19 @@
5665
  }
5666
  ],
5667
  "content": {
5668
- "speech": {
5669
  "actor": "person_A",
5670
  "text": "okay",
5671
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5672
  },
5673
- "silent_action": {
5674
  "actor": "person_A",
5675
  "action": "peace_sign",
5676
  "body_side": "right",
5677
  "body_part": "hand",
5678
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5679
  },
5680
- "sounding_action": {
5681
  "actor": "person_A",
5682
  "action": "clapping_hands",
5683
  "acting_body_side": "both",
@@ -5803,14 +5837,14 @@
5803
  ],
5804
  "events": [
5805
  {
5806
- "id": "speech",
5807
  "modality": "speech",
5808
  "actor": "person_A",
5809
  "text": "okay",
5810
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5811
  },
5812
  {
5813
- "id": "silent_action",
5814
  "modality": "silent_action",
5815
  "actor": "person_A",
5816
  "action": "peace_sign",
@@ -5819,7 +5853,7 @@
5819
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5820
  },
5821
  {
5822
- "id": "sounding_action",
5823
  "modality": "sounding_action",
5824
  "actor": "person_A",
5825
  "action": "clapping_hands",
@@ -5830,19 +5864,19 @@
5830
  }
5831
  ],
5832
  "content": {
5833
- "speech": {
5834
  "actor": "person_A",
5835
  "text": "okay",
5836
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5837
  },
5838
- "silent_action": {
5839
  "actor": "person_A",
5840
  "action": "peace_sign",
5841
  "body_side": "right",
5842
  "body_part": "hand",
5843
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5844
  },
5845
- "sounding_action": {
5846
  "actor": "person_A",
5847
  "action": "clapping_hands",
5848
  "acting_body_side": "both",
@@ -5891,14 +5925,14 @@
5891
  ],
5892
  "events": [
5893
  {
5894
- "id": "speech",
5895
  "modality": "speech",
5896
  "actor": "person_A",
5897
  "text": "okay",
5898
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5899
  },
5900
  {
5901
- "id": "silent_action",
5902
  "modality": "silent_action",
5903
  "actor": "person_A",
5904
  "action": "peace_sign",
@@ -5907,7 +5941,7 @@
5907
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5908
  },
5909
  {
5910
- "id": "sounding_action",
5911
  "modality": "sounding_action",
5912
  "actor": "person_A",
5913
  "action": "clapping_hands",
@@ -5918,19 +5952,19 @@
5918
  }
5919
  ],
5920
  "content": {
5921
- "speech": {
5922
  "actor": "person_A",
5923
  "text": "okay",
5924
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5925
  },
5926
- "silent_action": {
5927
  "actor": "person_A",
5928
  "action": "peace_sign",
5929
  "body_side": "right",
5930
  "body_part": "hand",
5931
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5932
  },
5933
- "sounding_action": {
5934
  "actor": "person_A",
5935
  "action": "clapping_hands",
5936
  "acting_body_side": "both",
@@ -5979,14 +6013,14 @@
5979
  ],
5980
  "events": [
5981
  {
5982
- "id": "speech",
5983
  "modality": "speech",
5984
  "actor": "person_A",
5985
  "text": "okay",
5986
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5987
  },
5988
  {
5989
- "id": "silent_action",
5990
  "modality": "silent_action",
5991
  "actor": "person_A",
5992
  "action": "peace_sign",
@@ -5995,7 +6029,7 @@
5995
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5996
  },
5997
  {
5998
- "id": "sounding_action",
5999
  "modality": "sounding_action",
6000
  "actor": "person_A",
6001
  "action": "clapping_hands",
@@ -6006,19 +6040,19 @@
6006
  }
6007
  ],
6008
  "content": {
6009
- "speech": {
6010
  "actor": "person_A",
6011
  "text": "okay",
6012
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6013
  },
6014
- "silent_action": {
6015
  "actor": "person_A",
6016
  "action": "peace_sign",
6017
  "body_side": "right",
6018
  "body_part": "hand",
6019
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6020
  },
6021
- "sounding_action": {
6022
  "actor": "person_A",
6023
  "action": "clapping_hands",
6024
  "acting_body_side": "both",
@@ -6144,14 +6178,14 @@
6144
  ],
6145
  "events": [
6146
  {
6147
- "id": "speech",
6148
  "modality": "speech",
6149
  "actor": "person_A",
6150
  "text": "okay",
6151
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6152
  },
6153
  {
6154
- "id": "silent_action",
6155
  "modality": "silent_action",
6156
  "actor": "person_A",
6157
  "action": "peace_sign",
@@ -6160,7 +6194,7 @@
6160
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6161
  },
6162
  {
6163
- "id": "sounding_action",
6164
  "modality": "sounding_action",
6165
  "actor": "person_A",
6166
  "action": "clapping_hands",
@@ -6171,19 +6205,19 @@
6171
  }
6172
  ],
6173
  "content": {
6174
- "speech": {
6175
  "actor": "person_A",
6176
  "text": "okay",
6177
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6178
  },
6179
- "silent_action": {
6180
  "actor": "person_A",
6181
  "action": "peace_sign",
6182
  "body_side": "right",
6183
  "body_part": "hand",
6184
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6185
  },
6186
- "sounding_action": {
6187
  "actor": "person_A",
6188
  "action": "clapping_hands",
6189
  "acting_body_side": "both",
@@ -6232,14 +6266,14 @@
6232
  ],
6233
  "events": [
6234
  {
6235
- "id": "speech",
6236
  "modality": "speech",
6237
  "actor": "person_A",
6238
  "text": "okay",
6239
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6240
  },
6241
  {
6242
- "id": "silent_action",
6243
  "modality": "silent_action",
6244
  "actor": "person_A",
6245
  "action": "peace_sign",
@@ -6248,7 +6282,7 @@
6248
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6249
  },
6250
  {
6251
- "id": "sounding_action",
6252
  "modality": "sounding_action",
6253
  "actor": "person_A",
6254
  "action": "clapping_hands",
@@ -6259,19 +6293,19 @@
6259
  }
6260
  ],
6261
  "content": {
6262
- "speech": {
6263
  "actor": "person_A",
6264
  "text": "okay",
6265
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6266
  },
6267
- "silent_action": {
6268
  "actor": "person_A",
6269
  "action": "peace_sign",
6270
  "body_side": "right",
6271
  "body_part": "hand",
6272
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6273
  },
6274
- "sounding_action": {
6275
  "actor": "person_A",
6276
  "action": "clapping_hands",
6277
  "acting_body_side": "both",
 
1967
  ],
1968
  "events": [
1969
  {
1970
+ "id": "thumbs_up",
1971
  "modality": "silent_action",
1972
  "actor": "person_A",
1973
  "action": "thumbs_up",
 
1976
  "definition": "The person's right hand forms or holds a thumbs-up pose: a fist closed with the thumb extended upward, clearly recognizable. The target is the pose, not a separate hand-raising motion."
1977
  },
1978
  {
1979
+ "id": "open_palm",
1980
  "modality": "silent_action",
1981
  "actor": "person_A",
1982
  "action": "raise_open_palm",
 
1986
  }
1987
  ],
1988
  "content": {
1989
+ "thumbs_up": {
1990
+ "actor": "person_A",
1991
+ "action": "thumbs_up",
1992
+ "body_side": "right",
1993
+ "body_part": "hand",
1994
+ "definition": "The person's right hand forms or holds a thumbs-up pose: a fist closed with the thumb extended upward, clearly recognizable. The target is the pose, not a separate hand-raising motion."
1995
+ },
1996
+ "open_palm": {
1997
  "actor": "person_A",
1998
  "action": "raise_open_palm",
1999
  "body_side": "right",
 
2008
  "timing_type": "relative",
2009
  "value": {
2010
  "sequence": [
2011
+ "thumbs_up",
2012
+ "open_palm"
2013
  ]
2014
  }
2015
  },
 
2029
  ],
2030
  "events": [
2031
  {
2032
+ "id": "open_palm",
2033
  "modality": "silent_action",
2034
  "actor": "person_A",
2035
  "action": "raise_open_palm",
 
2038
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers together and extended, held clearly as a recognizable open-palm pose. The target is the held pose, not a separate raising motion."
2039
  },
2040
  {
2041
+ "id": "thumbs_up",
2042
  "modality": "silent_action",
2043
  "actor": "person_A",
2044
  "action": "thumbs_up",
 
2048
  }
2049
  ],
2050
  "content": {
2051
+ "open_palm": {
2052
+ "actor": "person_A",
2053
+ "action": "raise_open_palm",
2054
+ "body_side": "right",
2055
+ "body_part": "hand",
2056
+ "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers together and extended, held clearly as a recognizable open-palm pose. The target is the held pose, not a separate raising motion."
2057
+ },
2058
+ "thumbs_up": {
2059
  "actor": "person_A",
2060
  "action": "thumbs_up",
2061
  "body_side": "right",
 
2070
  "timing_type": "relative",
2071
  "value": {
2072
  "sequence": [
2073
+ "open_palm",
2074
+ "thumbs_up"
2075
  ]
2076
  }
2077
  },
 
2227
  ],
2228
  "events": [
2229
  {
2230
+ "id": "slap",
2231
  "modality": "sounding_action",
2232
  "actor": "person_A",
2233
  "action": "slapping_the_thigh",
 
2239
  "definition": "The person's left hand strikes the top of the left thigh, with visible contact and a sharp slap sound at the moment of impact."
2240
  },
2241
  {
2242
+ "id": "clap",
2243
  "modality": "sounding_action",
2244
  "actor": "person_A",
2245
  "action": "clapping_hands",
 
2252
  }
2253
  ],
2254
  "content": {
2255
+ "slap": {
2256
+ "actor": "person_A",
2257
+ "action": "slapping_the_thigh",
2258
+ "acting_body_side": "left",
2259
+ "acting_body_part": "hand",
2260
+ "target_body_side": "left",
2261
+ "target_body_part": "thigh",
2262
+ "target_sound": "sharp slap sound",
2263
+ "definition": "The person's left hand strikes the top of the left thigh, with visible contact and a sharp slap sound at the moment of impact."
2264
+ },
2265
+ "clap": {
2266
  "actor": "person_A",
2267
  "action": "clapping_hands",
2268
  "acting_body_side": "both",
 
2280
  "timing_type": "relative",
2281
  "value": {
2282
  "sequence": [
2283
+ "slap",
2284
+ "clap"
2285
  ]
2286
  }
2287
  },
 
2301
  ],
2302
  "events": [
2303
  {
2304
+ "id": "clap",
2305
  "modality": "sounding_action",
2306
  "actor": "person_A",
2307
  "action": "clapping_hands",
 
2313
  "definition": "The person brings both hands together in front of the torso to clap, with visible hand-to-hand contact and a single sharp clap sound at the moment of impact."
2314
  },
2315
  {
2316
+ "id": "slap",
2317
  "modality": "sounding_action",
2318
  "actor": "person_A",
2319
  "action": "slapping_the_thigh",
 
2326
  }
2327
  ],
2328
  "content": {
2329
+ "clap": {
2330
+ "actor": "person_A",
2331
+ "action": "clapping_hands",
2332
+ "acting_body_side": "both",
2333
+ "acting_body_part": "hand",
2334
+ "target_body_side": "both",
2335
+ "target_body_part": "hand",
2336
+ "target_sound": "sharp clap sound",
2337
+ "definition": "The person brings both hands together in front of the torso to clap, with visible hand-to-hand contact and a single sharp clap sound at the moment of impact."
2338
+ },
2339
+ "slap": {
2340
  "actor": "person_A",
2341
  "action": "slapping_the_thigh",
2342
  "acting_body_side": "left",
 
2354
  "timing_type": "relative",
2355
  "value": {
2356
  "sequence": [
2357
+ "clap",
2358
+ "slap"
2359
  ]
2360
  }
2361
  },
 
3769
  ],
3770
  "events": [
3771
  {
3772
+ "id": "speech_stop",
3773
  "modality": "speech",
3774
  "actor": "person_A",
3775
  "text": "stop",
3776
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3777
  },
3778
  {
3779
+ "id": "open_palm",
3780
  "modality": "silent_action",
3781
  "actor": "person_A",
3782
  "action": "raise_open_palm",
 
3785
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
3786
  },
3787
  {
3788
+ "id": "clap",
3789
  "modality": "sounding_action",
3790
  "actor": "person_A",
3791
  "action": "clapping_hands",
 
3796
  }
3797
  ],
3798
  "content": {
3799
+ "speech_stop": {
3800
  "actor": "person_A",
3801
  "text": "stop",
3802
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3803
  },
3804
+ "open_palm": {
3805
  "actor": "person_A",
3806
  "action": "raise_open_palm",
3807
  "body_side": "right",
3808
  "body_part": "hand",
3809
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
3810
  },
3811
+ "clap": {
3812
  "actor": "person_A",
3813
  "action": "clapping_hands",
3814
  "acting_body_side": "both",
 
4011
  ],
4012
  "events": [
4013
  {
4014
+ "id": "speech_stop",
4015
  "modality": "speech",
4016
  "actor": "person_A",
4017
  "text": "stop",
4018
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4019
  },
4020
  {
4021
+ "id": "peace_sign",
4022
  "modality": "silent_action",
4023
  "actor": "person_A",
4024
  "action": "peace_sign",
 
4027
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4028
  },
4029
  {
4030
+ "id": "clap",
4031
  "modality": "sounding_action",
4032
  "actor": "person_A",
4033
  "action": "clapping_hands",
 
4038
  }
4039
  ],
4040
  "content": {
4041
+ "speech_stop": {
4042
  "actor": "person_A",
4043
  "text": "stop",
4044
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4045
  },
4046
+ "peace_sign": {
4047
  "actor": "person_A",
4048
  "action": "peace_sign",
4049
  "body_side": "right",
4050
  "body_part": "hand",
4051
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4052
  },
4053
+ "clap": {
4054
  "actor": "person_A",
4055
  "action": "clapping_hands",
4056
  "acting_body_side": "both",
 
4176
  ],
4177
  "events": [
4178
  {
4179
+ "id": "speech_stop",
4180
  "modality": "speech",
4181
  "actor": "person_A",
4182
  "text": "stop",
4183
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4184
  },
4185
  {
4186
+ "id": "peace_sign",
4187
  "modality": "silent_action",
4188
  "actor": "person_A",
4189
  "action": "peace_sign",
 
4192
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4193
  },
4194
  {
4195
+ "id": "clap",
4196
  "modality": "sounding_action",
4197
  "actor": "person_A",
4198
  "action": "clapping_hands",
 
4203
  }
4204
  ],
4205
  "content": {
4206
+ "speech_stop": {
4207
  "actor": "person_A",
4208
  "text": "stop",
4209
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4210
  },
4211
+ "peace_sign": {
4212
  "actor": "person_A",
4213
  "action": "peace_sign",
4214
  "body_side": "right",
4215
  "body_part": "hand",
4216
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4217
  },
4218
+ "clap": {
4219
  "actor": "person_A",
4220
  "action": "clapping_hands",
4221
  "acting_body_side": "both",
 
4264
  ],
4265
  "events": [
4266
  {
4267
+ "id": "speech_stop",
4268
  "modality": "speech",
4269
  "actor": "person_A",
4270
  "text": "stop",
4271
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4272
  },
4273
  {
4274
+ "id": "peace_sign",
4275
  "modality": "silent_action",
4276
  "actor": "person_A",
4277
  "action": "peace_sign",
 
4280
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4281
  },
4282
  {
4283
+ "id": "clap",
4284
  "modality": "sounding_action",
4285
  "actor": "person_A",
4286
  "action": "clapping_hands",
 
4291
  }
4292
  ],
4293
  "content": {
4294
+ "speech_stop": {
4295
  "actor": "person_A",
4296
  "text": "stop",
4297
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4298
  },
4299
+ "peace_sign": {
4300
  "actor": "person_A",
4301
  "action": "peace_sign",
4302
  "body_side": "right",
4303
  "body_part": "hand",
4304
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4305
  },
4306
+ "clap": {
4307
  "actor": "person_A",
4308
  "action": "clapping_hands",
4309
  "acting_body_side": "both",
 
4429
  ],
4430
  "events": [
4431
  {
4432
+ "id": "speech_stop",
4433
  "modality": "speech",
4434
  "actor": "person_A",
4435
  "text": "stop",
4436
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4437
  },
4438
  {
4439
+ "id": "peace_sign",
4440
  "modality": "silent_action",
4441
  "actor": "person_A",
4442
  "action": "peace_sign",
 
4445
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4446
  },
4447
  {
4448
+ "id": "clap",
4449
  "modality": "sounding_action",
4450
  "actor": "person_A",
4451
  "action": "clapping_hands",
 
4456
  }
4457
  ],
4458
  "content": {
4459
+ "speech_stop": {
4460
  "actor": "person_A",
4461
  "text": "stop",
4462
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4463
  },
4464
+ "peace_sign": {
4465
  "actor": "person_A",
4466
  "action": "peace_sign",
4467
  "body_side": "right",
4468
  "body_part": "hand",
4469
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4470
  },
4471
+ "clap": {
4472
  "actor": "person_A",
4473
  "action": "clapping_hands",
4474
  "acting_body_side": "both",
 
4517
  ],
4518
  "events": [
4519
  {
4520
+ "id": "speech_stop",
4521
  "modality": "speech",
4522
  "actor": "person_A",
4523
  "text": "stop",
4524
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4525
  },
4526
  {
4527
+ "id": "peace_sign",
4528
  "modality": "silent_action",
4529
  "actor": "person_A",
4530
  "action": "peace_sign",
 
4533
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4534
  },
4535
  {
4536
+ "id": "clap",
4537
  "modality": "sounding_action",
4538
  "actor": "person_A",
4539
  "action": "clapping_hands",
 
4544
  }
4545
  ],
4546
  "content": {
4547
+ "speech_stop": {
4548
  "actor": "person_A",
4549
  "text": "stop",
4550
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4551
  },
4552
+ "peace_sign": {
4553
  "actor": "person_A",
4554
  "action": "peace_sign",
4555
  "body_side": "right",
4556
  "body_part": "hand",
4557
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4558
  },
4559
+ "clap": {
4560
  "actor": "person_A",
4561
  "action": "clapping_hands",
4562
  "acting_body_side": "both",
 
4605
  ],
4606
  "events": [
4607
  {
4608
+ "id": "speech_stop",
4609
  "modality": "speech",
4610
  "actor": "person_A",
4611
  "text": "stop",
4612
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4613
  },
4614
  {
4615
+ "id": "peace_sign",
4616
  "modality": "silent_action",
4617
  "actor": "person_A",
4618
  "action": "peace_sign",
 
4621
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4622
  },
4623
  {
4624
+ "id": "clap",
4625
  "modality": "sounding_action",
4626
  "actor": "person_A",
4627
  "action": "clapping_hands",
 
4632
  }
4633
  ],
4634
  "content": {
4635
+ "speech_stop": {
4636
  "actor": "person_A",
4637
  "text": "stop",
4638
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4639
  },
4640
+ "peace_sign": {
4641
  "actor": "person_A",
4642
  "action": "peace_sign",
4643
  "body_side": "right",
4644
  "body_part": "hand",
4645
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4646
  },
4647
+ "clap": {
4648
  "actor": "person_A",
4649
  "action": "clapping_hands",
4650
  "acting_body_side": "both",
 
4693
  ],
4694
  "events": [
4695
  {
4696
+ "id": "speech_stop",
4697
  "modality": "speech",
4698
  "actor": "person_A",
4699
  "text": "stop",
4700
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4701
  },
4702
  {
4703
+ "id": "peace_sign",
4704
  "modality": "silent_action",
4705
  "actor": "person_A",
4706
  "action": "peace_sign",
 
4709
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4710
  },
4711
  {
4712
+ "id": "clap",
4713
  "modality": "sounding_action",
4714
  "actor": "person_A",
4715
  "action": "clapping_hands",
 
4720
  }
4721
  ],
4722
  "content": {
4723
+ "speech_stop": {
4724
  "actor": "person_A",
4725
  "text": "stop",
4726
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4727
  },
4728
+ "peace_sign": {
4729
  "actor": "person_A",
4730
  "action": "peace_sign",
4731
  "body_side": "right",
4732
  "body_part": "hand",
4733
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4734
  },
4735
+ "clap": {
4736
  "actor": "person_A",
4737
  "action": "clapping_hands",
4738
  "acting_body_side": "both",
 
5166
  ],
5167
  "events": [
5168
  {
5169
+ "id": "speech_okay",
5170
  "modality": "speech",
5171
  "actor": "person_A",
5172
  "text": "okay",
5173
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5174
  },
5175
  {
5176
+ "id": "open_palm",
5177
  "modality": "silent_action",
5178
  "actor": "person_A",
5179
  "action": "raise_open_palm",
 
5182
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5183
  },
5184
  {
5185
+ "id": "clap",
5186
  "modality": "sounding_action",
5187
  "actor": "person_A",
5188
  "action": "clapping_hands",
 
5193
  }
5194
  ],
5195
  "content": {
5196
+ "speech_okay": {
5197
  "actor": "person_A",
5198
  "text": "okay",
5199
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5200
  },
5201
+ "open_palm": {
5202
  "actor": "person_A",
5203
  "action": "raise_open_palm",
5204
  "body_side": "right",
5205
  "body_part": "hand",
5206
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5207
  },
5208
+ "clap": {
5209
  "actor": "person_A",
5210
  "action": "clapping_hands",
5211
  "acting_body_side": "both",
 
5254
  ],
5255
  "events": [
5256
  {
5257
+ "id": "speech_okay",
5258
  "modality": "speech",
5259
  "actor": "person_A",
5260
  "text": "okay",
5261
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5262
  },
5263
  {
5264
+ "id": "open_palm",
5265
  "modality": "silent_action",
5266
  "actor": "person_A",
5267
  "action": "raise_open_palm",
 
5270
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5271
  },
5272
  {
5273
+ "id": "clap",
5274
  "modality": "sounding_action",
5275
  "actor": "person_A",
5276
  "action": "clapping_hands",
 
5281
  }
5282
  ],
5283
  "content": {
5284
+ "speech_okay": {
5285
  "actor": "person_A",
5286
  "text": "okay",
5287
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5288
  },
5289
+ "open_palm": {
5290
  "actor": "person_A",
5291
  "action": "raise_open_palm",
5292
  "body_side": "right",
5293
  "body_part": "hand",
5294
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5295
  },
5296
+ "clap": {
5297
  "actor": "person_A",
5298
  "action": "clapping_hands",
5299
  "acting_body_side": "both",
 
5419
  ],
5420
  "events": [
5421
  {
5422
+ "id": "speech_okay",
5423
  "modality": "speech",
5424
  "actor": "person_A",
5425
  "text": "okay",
5426
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5427
  },
5428
  {
5429
+ "id": "open_palm",
5430
  "modality": "silent_action",
5431
  "actor": "person_A",
5432
  "action": "raise_open_palm",
 
5435
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5436
  },
5437
  {
5438
+ "id": "clap",
5439
  "modality": "sounding_action",
5440
  "actor": "person_A",
5441
  "action": "clapping_hands",
 
5446
  }
5447
  ],
5448
  "content": {
5449
+ "speech_okay": {
5450
  "actor": "person_A",
5451
  "text": "okay",
5452
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5453
  },
5454
+ "open_palm": {
5455
  "actor": "person_A",
5456
  "action": "raise_open_palm",
5457
  "body_side": "right",
5458
  "body_part": "hand",
5459
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5460
  },
5461
+ "clap": {
5462
  "actor": "person_A",
5463
  "action": "clapping_hands",
5464
  "acting_body_side": "both",
 
5584
  ],
5585
  "events": [
5586
  {
5587
+ "id": "speech_okay",
5588
  "modality": "speech",
5589
  "actor": "person_A",
5590
  "text": "okay",
5591
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5592
  },
5593
  {
5594
+ "id": "peace_sign",
5595
  "modality": "silent_action",
5596
  "actor": "person_A",
5597
  "action": "peace_sign",
 
5600
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5601
  },
5602
  {
5603
+ "id": "clap",
5604
  "modality": "sounding_action",
5605
  "actor": "person_A",
5606
  "action": "clapping_hands",
 
5611
  }
5612
  ],
5613
  "content": {
5614
+ "speech_okay": {
5615
  "actor": "person_A",
5616
  "text": "okay",
5617
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5618
  },
5619
+ "peace_sign": {
5620
  "actor": "person_A",
5621
  "action": "peace_sign",
5622
  "body_side": "right",
5623
  "body_part": "hand",
5624
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5625
  },
5626
+ "clap": {
5627
  "actor": "person_A",
5628
  "action": "clapping_hands",
5629
  "acting_body_side": "both",
 
5672
  ],
5673
  "events": [
5674
  {
5675
+ "id": "speech_okay",
5676
  "modality": "speech",
5677
  "actor": "person_A",
5678
  "text": "okay",
5679
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5680
  },
5681
  {
5682
+ "id": "peace_sign",
5683
  "modality": "silent_action",
5684
  "actor": "person_A",
5685
  "action": "peace_sign",
 
5688
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5689
  },
5690
  {
5691
+ "id": "clap",
5692
  "modality": "sounding_action",
5693
  "actor": "person_A",
5694
  "action": "clapping_hands",
 
5699
  }
5700
  ],
5701
  "content": {
5702
+ "speech_okay": {
5703
  "actor": "person_A",
5704
  "text": "okay",
5705
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5706
  },
5707
+ "peace_sign": {
5708
  "actor": "person_A",
5709
  "action": "peace_sign",
5710
  "body_side": "right",
5711
  "body_part": "hand",
5712
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5713
  },
5714
+ "clap": {
5715
  "actor": "person_A",
5716
  "action": "clapping_hands",
5717
  "acting_body_side": "both",
 
5837
  ],
5838
  "events": [
5839
  {
5840
+ "id": "speech_okay",
5841
  "modality": "speech",
5842
  "actor": "person_A",
5843
  "text": "okay",
5844
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5845
  },
5846
  {
5847
+ "id": "peace_sign",
5848
  "modality": "silent_action",
5849
  "actor": "person_A",
5850
  "action": "peace_sign",
 
5853
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5854
  },
5855
  {
5856
+ "id": "clap",
5857
  "modality": "sounding_action",
5858
  "actor": "person_A",
5859
  "action": "clapping_hands",
 
5864
  }
5865
  ],
5866
  "content": {
5867
+ "speech_okay": {
5868
  "actor": "person_A",
5869
  "text": "okay",
5870
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5871
  },
5872
+ "peace_sign": {
5873
  "actor": "person_A",
5874
  "action": "peace_sign",
5875
  "body_side": "right",
5876
  "body_part": "hand",
5877
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5878
  },
5879
+ "clap": {
5880
  "actor": "person_A",
5881
  "action": "clapping_hands",
5882
  "acting_body_side": "both",
 
5925
  ],
5926
  "events": [
5927
  {
5928
+ "id": "speech_okay",
5929
  "modality": "speech",
5930
  "actor": "person_A",
5931
  "text": "okay",
5932
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5933
  },
5934
  {
5935
+ "id": "peace_sign",
5936
  "modality": "silent_action",
5937
  "actor": "person_A",
5938
  "action": "peace_sign",
 
5941
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5942
  },
5943
  {
5944
+ "id": "clap",
5945
  "modality": "sounding_action",
5946
  "actor": "person_A",
5947
  "action": "clapping_hands",
 
5952
  }
5953
  ],
5954
  "content": {
5955
+ "speech_okay": {
5956
  "actor": "person_A",
5957
  "text": "okay",
5958
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5959
  },
5960
+ "peace_sign": {
5961
  "actor": "person_A",
5962
  "action": "peace_sign",
5963
  "body_side": "right",
5964
  "body_part": "hand",
5965
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5966
  },
5967
+ "clap": {
5968
  "actor": "person_A",
5969
  "action": "clapping_hands",
5970
  "acting_body_side": "both",
 
6013
  ],
6014
  "events": [
6015
  {
6016
+ "id": "speech_okay",
6017
  "modality": "speech",
6018
  "actor": "person_A",
6019
  "text": "okay",
6020
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6021
  },
6022
  {
6023
+ "id": "peace_sign",
6024
  "modality": "silent_action",
6025
  "actor": "person_A",
6026
  "action": "peace_sign",
 
6029
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6030
  },
6031
  {
6032
+ "id": "clap",
6033
  "modality": "sounding_action",
6034
  "actor": "person_A",
6035
  "action": "clapping_hands",
 
6040
  }
6041
  ],
6042
  "content": {
6043
+ "speech_okay": {
6044
  "actor": "person_A",
6045
  "text": "okay",
6046
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6047
  },
6048
+ "peace_sign": {
6049
  "actor": "person_A",
6050
  "action": "peace_sign",
6051
  "body_side": "right",
6052
  "body_part": "hand",
6053
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6054
  },
6055
+ "clap": {
6056
  "actor": "person_A",
6057
  "action": "clapping_hands",
6058
  "acting_body_side": "both",
 
6178
  ],
6179
  "events": [
6180
  {
6181
+ "id": "speech_okay",
6182
  "modality": "speech",
6183
  "actor": "person_A",
6184
  "text": "okay",
6185
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6186
  },
6187
  {
6188
+ "id": "peace_sign",
6189
  "modality": "silent_action",
6190
  "actor": "person_A",
6191
  "action": "peace_sign",
 
6194
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6195
  },
6196
  {
6197
+ "id": "clap",
6198
  "modality": "sounding_action",
6199
  "actor": "person_A",
6200
  "action": "clapping_hands",
 
6205
  }
6206
  ],
6207
  "content": {
6208
+ "speech_okay": {
6209
  "actor": "person_A",
6210
  "text": "okay",
6211
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6212
  },
6213
+ "peace_sign": {
6214
  "actor": "person_A",
6215
  "action": "peace_sign",
6216
  "body_side": "right",
6217
  "body_part": "hand",
6218
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6219
  },
6220
+ "clap": {
6221
  "actor": "person_A",
6222
  "action": "clapping_hands",
6223
  "acting_body_side": "both",
 
6266
  ],
6267
  "events": [
6268
  {
6269
+ "id": "speech_okay",
6270
  "modality": "speech",
6271
  "actor": "person_A",
6272
  "text": "okay",
6273
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6274
  },
6275
  {
6276
+ "id": "peace_sign",
6277
  "modality": "silent_action",
6278
  "actor": "person_A",
6279
  "action": "peace_sign",
 
6282
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6283
  },
6284
  {
6285
+ "id": "clap",
6286
  "modality": "sounding_action",
6287
  "actor": "person_A",
6288
  "action": "clapping_hands",
 
6293
  }
6294
  ],
6295
  "content": {
6296
+ "speech_okay": {
6297
  "actor": "person_A",
6298
  "text": "okay",
6299
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6300
  },
6301
+ "peace_sign": {
6302
  "actor": "person_A",
6303
  "action": "peace_sign",
6304
  "body_side": "right",
6305
  "body_part": "hand",
6306
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6307
  },
6308
+ "clap": {
6309
  "actor": "person_A",
6310
  "action": "clapping_hands",
6311
  "acting_body_side": "both",
backend/main.py CHANGED
@@ -26,6 +26,7 @@ from uuid import uuid4
26
 
27
  # import assignment
28
  from backend import assignment
 
29
 
30
  app = FastAPI()
31
 
@@ -105,6 +106,7 @@ class AnnotationPayload(BaseModel):
105
  @app.on_event("startup")
106
  def startup():
107
  ensure_dataset_configured()
 
108
  try:
109
  fetch_video_catalog()
110
  except Exception as exc:
@@ -335,6 +337,19 @@ def load_prompt_items():
335
  return json.load(prompts_file)
336
 
337
 
 
 
 
 
 
 
 
 
 
 
 
 
 
338
  def fetch_video_catalog():
339
  """Lists every video under main_videos/ once and caches it in memory as
340
  {model: {item_id: [(variant_number, path), ...sorted by variant]}}.
 
26
 
27
  # import assignment
28
  from backend import assignment
29
+ from backend.validate_prompts import check_items
30
 
31
  app = FastAPI()
32
 
 
106
  @app.on_event("startup")
107
  def startup():
108
  ensure_dataset_configured()
109
+ validate_prompt_data()
110
  try:
111
  fetch_video_catalog()
112
  except Exception as exc:
 
337
  return json.load(prompts_file)
338
 
339
 
340
+ def validate_prompt_data():
341
+ """Fails fast at startup if prompts.json violates the event-id schema
342
+ check_items() enforces (see validate_prompts.py). A violation doesn't
343
+ raise anywhere else - it silently corrupts the annotation screen (merged
344
+ annotation state, garbled temporal-constraint text) instead - so this is
345
+ the only place that catches it before annotators do."""
346
+ errors = check_items(load_prompt_items())
347
+ if errors:
348
+ raise RuntimeError(
349
+ "prompts.json failed schema validation:\n" + "\n".join(f" - {e}" for e in errors)
350
+ )
351
+
352
+
353
  def fetch_video_catalog():
354
  """Lists every video under main_videos/ once and caches it in memory as
355
  {model: {item_id: [(variant_number, path), ...sorted by variant]}}.
backend/validate_prompts.py ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ """Validates prompts.json against the schema the frontend's event / temporal-
3
+ constraint rendering (frontend/src/lib/promptSchema.js) relies on:
4
+
5
+ 1. Event id uniqueness: within one item, every events[].id must be unique.
6
+ 2. Referential integrity: every id referenced anywhere in
7
+ temporal_constraint.value must exist in that item's events[].id set.
8
+
9
+ Both are structural invariants, not a naming convention - an id can be
10
+ anything (a generic modality name or a specific semantic name) as long as
11
+ it's unique within its item and every reference to it resolves. Violating
12
+ either one doesn't raise anywhere in the frontend; it silently degrades
13
+ (id collisions merge annotation state across events, missing ids fall back
14
+ to printing the raw id instead of a readable label) - which is how 22 items
15
+ went unnoticed in prompts.json before this validator existed.
16
+
17
+ Run directly to check backend/data/prompts.json and, if present,
18
+ frontend/src/data/prompts.json (also verifying the two are byte-identical,
19
+ since the deployed container only reads the backend copy - see main.py):
20
+
21
+ python backend/validate_prompts.py
22
+
23
+ Exits non-zero if any check fails. check_items() is also imported by
24
+ main.py's startup hook so a broken prompts.json fails deploy immediately
25
+ instead of shipping a silently-corrupted annotation screen.
26
+ """
27
+
28
+ import json
29
+ import sys
30
+ from pathlib import Path
31
+
32
+ KNOWN_RELATION_TYPES = {"synchronization", "sync_count", "order", "order_count"}
33
+
34
+
35
+ def referenced_ids(temporal_constraint):
36
+ """All event ids referenced by a temporal_constraint's value, regardless
37
+ of relation_type's value shape. None means the relation_type itself is
38
+ unrecognized (checked separately - there's nothing to id-check)."""
39
+ relation_type = temporal_constraint.get("relation_type")
40
+ value = temporal_constraint.get("value") or {}
41
+
42
+ if relation_type in ("synchronization", "sync_count"):
43
+ return list(value.get("events") or [])
44
+ if relation_type == "order":
45
+ return list(value.get("sequence") or [])
46
+ if relation_type == "order_count":
47
+ ids = list(value.get("ordered_events") or [])
48
+ ids += list((value.get("event_counts") or {}).keys())
49
+ return ids
50
+ return None
51
+
52
+
53
+ def check_item(item):
54
+ """Returns a list of error strings for one prompt item (empty if valid)."""
55
+ errors = []
56
+ item_id = item.get("item_id", "<missing item_id>")
57
+
58
+ events = item.get("events") or []
59
+ event_ids = [e.get("id") for e in events]
60
+ seen = set()
61
+ for event_id in event_ids:
62
+ if event_id in seen:
63
+ errors.append(f"{item_id}: duplicate event id {event_id!r} in events[]")
64
+ seen.add(event_id)
65
+
66
+ tc = item.get("temporal_constraint") or {}
67
+ relation_type = tc.get("relation_type")
68
+ if relation_type not in KNOWN_RELATION_TYPES:
69
+ errors.append(f"{item_id}: unknown temporal_constraint.relation_type {relation_type!r}")
70
+ return errors
71
+
72
+ referenced = referenced_ids(tc)
73
+ missing = sorted(set(referenced) - set(event_ids))
74
+ for missing_id in missing:
75
+ errors.append(
76
+ f"{item_id}: temporal_constraint references event id {missing_id!r} "
77
+ f"which does not exist in events[] {event_ids}"
78
+ )
79
+ return errors
80
+
81
+
82
+ def check_items(items):
83
+ """Returns a flat list of error strings across every item."""
84
+ errors = []
85
+ for item in items:
86
+ errors.extend(check_item(item))
87
+ return errors
88
+
89
+
90
+ def _load(path):
91
+ with open(path, encoding="utf-8") as f:
92
+ return json.load(f)
93
+
94
+
95
+ def main():
96
+ backend_path = Path(__file__).resolve().parent / "data" / "prompts.json"
97
+ frontend_path = (
98
+ Path(__file__).resolve().parent.parent / "frontend" / "src" / "data" / "prompts.json"
99
+ )
100
+
101
+ all_errors = []
102
+
103
+ backend_items = _load(backend_path)
104
+ all_errors += [f"[backend/data/prompts.json] {e}" for e in check_items(backend_items)]
105
+
106
+ if frontend_path.exists():
107
+ frontend_items = _load(frontend_path)
108
+ all_errors += [f"[frontend/src/data/prompts.json] {e}" for e in check_items(frontend_items)]
109
+
110
+ if backend_path.read_bytes() != frontend_path.read_bytes():
111
+ all_errors.append(
112
+ "backend/data/prompts.json and frontend/src/data/prompts.json "
113
+ "are not byte-identical - they must be kept in sync."
114
+ )
115
+
116
+ if all_errors:
117
+ print(f"prompts.json validation FAILED - {len(all_errors)} issue(s):\n")
118
+ for error in all_errors:
119
+ print(f" - {error}")
120
+ sys.exit(1)
121
+
122
+ print(f"prompts.json validation passed ({len(backend_items)} items).")
123
+
124
+
125
+ if __name__ == "__main__":
126
+ main()
frontend/package-lock.json CHANGED
@@ -840,9 +840,6 @@
840
  "arm"
841
  ],
842
  "dev": true,
843
- "libc": [
844
- "glibc"
845
- ],
846
  "license": "MIT",
847
  "optional": true,
848
  "os": [
@@ -857,9 +854,6 @@
857
  "arm"
858
  ],
859
  "dev": true,
860
- "libc": [
861
- "musl"
862
- ],
863
  "license": "MIT",
864
  "optional": true,
865
  "os": [
@@ -874,9 +868,6 @@
874
  "arm64"
875
  ],
876
  "dev": true,
877
- "libc": [
878
- "glibc"
879
- ],
880
  "license": "MIT",
881
  "optional": true,
882
  "os": [
@@ -891,9 +882,6 @@
891
  "arm64"
892
  ],
893
  "dev": true,
894
- "libc": [
895
- "musl"
896
- ],
897
  "license": "MIT",
898
  "optional": true,
899
  "os": [
@@ -908,9 +896,6 @@
908
  "loong64"
909
  ],
910
  "dev": true,
911
- "libc": [
912
- "glibc"
913
- ],
914
  "license": "MIT",
915
  "optional": true,
916
  "os": [
@@ -925,9 +910,6 @@
925
  "loong64"
926
  ],
927
  "dev": true,
928
- "libc": [
929
- "musl"
930
- ],
931
  "license": "MIT",
932
  "optional": true,
933
  "os": [
@@ -942,9 +924,6 @@
942
  "ppc64"
943
  ],
944
  "dev": true,
945
- "libc": [
946
- "glibc"
947
- ],
948
  "license": "MIT",
949
  "optional": true,
950
  "os": [
@@ -959,9 +938,6 @@
959
  "ppc64"
960
  ],
961
  "dev": true,
962
- "libc": [
963
- "musl"
964
- ],
965
  "license": "MIT",
966
  "optional": true,
967
  "os": [
@@ -976,9 +952,6 @@
976
  "riscv64"
977
  ],
978
  "dev": true,
979
- "libc": [
980
- "glibc"
981
- ],
982
  "license": "MIT",
983
  "optional": true,
984
  "os": [
@@ -993,9 +966,6 @@
993
  "riscv64"
994
  ],
995
  "dev": true,
996
- "libc": [
997
- "musl"
998
- ],
999
  "license": "MIT",
1000
  "optional": true,
1001
  "os": [
@@ -1010,9 +980,6 @@
1010
  "s390x"
1011
  ],
1012
  "dev": true,
1013
- "libc": [
1014
- "glibc"
1015
- ],
1016
  "license": "MIT",
1017
  "optional": true,
1018
  "os": [
@@ -1027,9 +994,6 @@
1027
  "x64"
1028
  ],
1029
  "dev": true,
1030
- "libc": [
1031
- "glibc"
1032
- ],
1033
  "license": "MIT",
1034
  "optional": true,
1035
  "os": [
@@ -1044,9 +1008,6 @@
1044
  "x64"
1045
  ],
1046
  "dev": true,
1047
- "libc": [
1048
- "musl"
1049
- ],
1050
  "license": "MIT",
1051
  "optional": true,
1052
  "os": [
 
840
  "arm"
841
  ],
842
  "dev": true,
 
 
 
843
  "license": "MIT",
844
  "optional": true,
845
  "os": [
 
854
  "arm"
855
  ],
856
  "dev": true,
 
 
 
857
  "license": "MIT",
858
  "optional": true,
859
  "os": [
 
868
  "arm64"
869
  ],
870
  "dev": true,
 
 
 
871
  "license": "MIT",
872
  "optional": true,
873
  "os": [
 
882
  "arm64"
883
  ],
884
  "dev": true,
 
 
 
885
  "license": "MIT",
886
  "optional": true,
887
  "os": [
 
896
  "loong64"
897
  ],
898
  "dev": true,
 
 
 
899
  "license": "MIT",
900
  "optional": true,
901
  "os": [
 
910
  "loong64"
911
  ],
912
  "dev": true,
 
 
 
913
  "license": "MIT",
914
  "optional": true,
915
  "os": [
 
924
  "ppc64"
925
  ],
926
  "dev": true,
 
 
 
927
  "license": "MIT",
928
  "optional": true,
929
  "os": [
 
938
  "ppc64"
939
  ],
940
  "dev": true,
 
 
 
941
  "license": "MIT",
942
  "optional": true,
943
  "os": [
 
952
  "riscv64"
953
  ],
954
  "dev": true,
 
 
 
955
  "license": "MIT",
956
  "optional": true,
957
  "os": [
 
966
  "riscv64"
967
  ],
968
  "dev": true,
 
 
 
969
  "license": "MIT",
970
  "optional": true,
971
  "os": [
 
980
  "s390x"
981
  ],
982
  "dev": true,
 
 
 
983
  "license": "MIT",
984
  "optional": true,
985
  "os": [
 
994
  "x64"
995
  ],
996
  "dev": true,
 
 
 
997
  "license": "MIT",
998
  "optional": true,
999
  "os": [
 
1008
  "x64"
1009
  ],
1010
  "dev": true,
 
 
 
1011
  "license": "MIT",
1012
  "optional": true,
1013
  "os": [
frontend/src/data/prompts.json CHANGED
@@ -1967,7 +1967,7 @@
1967
  ],
1968
  "events": [
1969
  {
1970
- "id": "silent_action",
1971
  "modality": "silent_action",
1972
  "actor": "person_A",
1973
  "action": "thumbs_up",
@@ -1976,7 +1976,7 @@
1976
  "definition": "The person's right hand forms or holds a thumbs-up pose: a fist closed with the thumb extended upward, clearly recognizable. The target is the pose, not a separate hand-raising motion."
1977
  },
1978
  {
1979
- "id": "silent_action",
1980
  "modality": "silent_action",
1981
  "actor": "person_A",
1982
  "action": "raise_open_palm",
@@ -1986,7 +1986,14 @@
1986
  }
1987
  ],
1988
  "content": {
1989
- "silent_action": {
 
 
 
 
 
 
 
1990
  "actor": "person_A",
1991
  "action": "raise_open_palm",
1992
  "body_side": "right",
@@ -2001,8 +2008,8 @@
2001
  "timing_type": "relative",
2002
  "value": {
2003
  "sequence": [
2004
- "silent_action",
2005
- "silent_action"
2006
  ]
2007
  }
2008
  },
@@ -2022,7 +2029,7 @@
2022
  ],
2023
  "events": [
2024
  {
2025
- "id": "silent_action",
2026
  "modality": "silent_action",
2027
  "actor": "person_A",
2028
  "action": "raise_open_palm",
@@ -2031,7 +2038,7 @@
2031
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers together and extended, held clearly as a recognizable open-palm pose. The target is the held pose, not a separate raising motion."
2032
  },
2033
  {
2034
- "id": "silent_action",
2035
  "modality": "silent_action",
2036
  "actor": "person_A",
2037
  "action": "thumbs_up",
@@ -2041,7 +2048,14 @@
2041
  }
2042
  ],
2043
  "content": {
2044
- "silent_action": {
 
 
 
 
 
 
 
2045
  "actor": "person_A",
2046
  "action": "thumbs_up",
2047
  "body_side": "right",
@@ -2056,8 +2070,8 @@
2056
  "timing_type": "relative",
2057
  "value": {
2058
  "sequence": [
2059
- "silent_action",
2060
- "silent_action"
2061
  ]
2062
  }
2063
  },
@@ -2213,7 +2227,7 @@
2213
  ],
2214
  "events": [
2215
  {
2216
- "id": "sounding_action",
2217
  "modality": "sounding_action",
2218
  "actor": "person_A",
2219
  "action": "slapping_the_thigh",
@@ -2225,7 +2239,7 @@
2225
  "definition": "The person's left hand strikes the top of the left thigh, with visible contact and a sharp slap sound at the moment of impact."
2226
  },
2227
  {
2228
- "id": "sounding_action",
2229
  "modality": "sounding_action",
2230
  "actor": "person_A",
2231
  "action": "clapping_hands",
@@ -2238,7 +2252,17 @@
2238
  }
2239
  ],
2240
  "content": {
2241
- "sounding_action": {
 
 
 
 
 
 
 
 
 
 
2242
  "actor": "person_A",
2243
  "action": "clapping_hands",
2244
  "acting_body_side": "both",
@@ -2256,8 +2280,8 @@
2256
  "timing_type": "relative",
2257
  "value": {
2258
  "sequence": [
2259
- "sounding_action",
2260
- "sounding_action"
2261
  ]
2262
  }
2263
  },
@@ -2277,7 +2301,7 @@
2277
  ],
2278
  "events": [
2279
  {
2280
- "id": "sounding_action",
2281
  "modality": "sounding_action",
2282
  "actor": "person_A",
2283
  "action": "clapping_hands",
@@ -2289,7 +2313,7 @@
2289
  "definition": "The person brings both hands together in front of the torso to clap, with visible hand-to-hand contact and a single sharp clap sound at the moment of impact."
2290
  },
2291
  {
2292
- "id": "sounding_action",
2293
  "modality": "sounding_action",
2294
  "actor": "person_A",
2295
  "action": "slapping_the_thigh",
@@ -2302,7 +2326,17 @@
2302
  }
2303
  ],
2304
  "content": {
2305
- "sounding_action": {
 
 
 
 
 
 
 
 
 
 
2306
  "actor": "person_A",
2307
  "action": "slapping_the_thigh",
2308
  "acting_body_side": "left",
@@ -2320,8 +2354,8 @@
2320
  "timing_type": "relative",
2321
  "value": {
2322
  "sequence": [
2323
- "sounding_action",
2324
- "sounding_action"
2325
  ]
2326
  }
2327
  },
@@ -3735,14 +3769,14 @@
3735
  ],
3736
  "events": [
3737
  {
3738
- "id": "speech",
3739
  "modality": "speech",
3740
  "actor": "person_A",
3741
  "text": "stop",
3742
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3743
  },
3744
  {
3745
- "id": "silent_action",
3746
  "modality": "silent_action",
3747
  "actor": "person_A",
3748
  "action": "raise_open_palm",
@@ -3751,7 +3785,7 @@
3751
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
3752
  },
3753
  {
3754
- "id": "sounding_action",
3755
  "modality": "sounding_action",
3756
  "actor": "person_A",
3757
  "action": "clapping_hands",
@@ -3762,19 +3796,19 @@
3762
  }
3763
  ],
3764
  "content": {
3765
- "speech": {
3766
  "actor": "person_A",
3767
  "text": "stop",
3768
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3769
  },
3770
- "silent_action": {
3771
  "actor": "person_A",
3772
  "action": "raise_open_palm",
3773
  "body_side": "right",
3774
  "body_part": "hand",
3775
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
3776
  },
3777
- "sounding_action": {
3778
  "actor": "person_A",
3779
  "action": "clapping_hands",
3780
  "acting_body_side": "both",
@@ -3977,14 +4011,14 @@
3977
  ],
3978
  "events": [
3979
  {
3980
- "id": "speech",
3981
  "modality": "speech",
3982
  "actor": "person_A",
3983
  "text": "stop",
3984
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3985
  },
3986
  {
3987
- "id": "silent_action",
3988
  "modality": "silent_action",
3989
  "actor": "person_A",
3990
  "action": "peace_sign",
@@ -3993,7 +4027,7 @@
3993
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
3994
  },
3995
  {
3996
- "id": "sounding_action",
3997
  "modality": "sounding_action",
3998
  "actor": "person_A",
3999
  "action": "clapping_hands",
@@ -4004,19 +4038,19 @@
4004
  }
4005
  ],
4006
  "content": {
4007
- "speech": {
4008
  "actor": "person_A",
4009
  "text": "stop",
4010
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4011
  },
4012
- "silent_action": {
4013
  "actor": "person_A",
4014
  "action": "peace_sign",
4015
  "body_side": "right",
4016
  "body_part": "hand",
4017
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4018
  },
4019
- "sounding_action": {
4020
  "actor": "person_A",
4021
  "action": "clapping_hands",
4022
  "acting_body_side": "both",
@@ -4142,14 +4176,14 @@
4142
  ],
4143
  "events": [
4144
  {
4145
- "id": "speech",
4146
  "modality": "speech",
4147
  "actor": "person_A",
4148
  "text": "stop",
4149
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4150
  },
4151
  {
4152
- "id": "silent_action",
4153
  "modality": "silent_action",
4154
  "actor": "person_A",
4155
  "action": "peace_sign",
@@ -4158,7 +4192,7 @@
4158
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4159
  },
4160
  {
4161
- "id": "sounding_action",
4162
  "modality": "sounding_action",
4163
  "actor": "person_A",
4164
  "action": "clapping_hands",
@@ -4169,19 +4203,19 @@
4169
  }
4170
  ],
4171
  "content": {
4172
- "speech": {
4173
  "actor": "person_A",
4174
  "text": "stop",
4175
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4176
  },
4177
- "silent_action": {
4178
  "actor": "person_A",
4179
  "action": "peace_sign",
4180
  "body_side": "right",
4181
  "body_part": "hand",
4182
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4183
  },
4184
- "sounding_action": {
4185
  "actor": "person_A",
4186
  "action": "clapping_hands",
4187
  "acting_body_side": "both",
@@ -4230,14 +4264,14 @@
4230
  ],
4231
  "events": [
4232
  {
4233
- "id": "speech",
4234
  "modality": "speech",
4235
  "actor": "person_A",
4236
  "text": "stop",
4237
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4238
  },
4239
  {
4240
- "id": "silent_action",
4241
  "modality": "silent_action",
4242
  "actor": "person_A",
4243
  "action": "peace_sign",
@@ -4246,7 +4280,7 @@
4246
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4247
  },
4248
  {
4249
- "id": "sounding_action",
4250
  "modality": "sounding_action",
4251
  "actor": "person_A",
4252
  "action": "clapping_hands",
@@ -4257,19 +4291,19 @@
4257
  }
4258
  ],
4259
  "content": {
4260
- "speech": {
4261
  "actor": "person_A",
4262
  "text": "stop",
4263
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4264
  },
4265
- "silent_action": {
4266
  "actor": "person_A",
4267
  "action": "peace_sign",
4268
  "body_side": "right",
4269
  "body_part": "hand",
4270
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4271
  },
4272
- "sounding_action": {
4273
  "actor": "person_A",
4274
  "action": "clapping_hands",
4275
  "acting_body_side": "both",
@@ -4395,14 +4429,14 @@
4395
  ],
4396
  "events": [
4397
  {
4398
- "id": "speech",
4399
  "modality": "speech",
4400
  "actor": "person_A",
4401
  "text": "stop",
4402
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4403
  },
4404
  {
4405
- "id": "silent_action",
4406
  "modality": "silent_action",
4407
  "actor": "person_A",
4408
  "action": "peace_sign",
@@ -4411,7 +4445,7 @@
4411
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4412
  },
4413
  {
4414
- "id": "sounding_action",
4415
  "modality": "sounding_action",
4416
  "actor": "person_A",
4417
  "action": "clapping_hands",
@@ -4422,19 +4456,19 @@
4422
  }
4423
  ],
4424
  "content": {
4425
- "speech": {
4426
  "actor": "person_A",
4427
  "text": "stop",
4428
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4429
  },
4430
- "silent_action": {
4431
  "actor": "person_A",
4432
  "action": "peace_sign",
4433
  "body_side": "right",
4434
  "body_part": "hand",
4435
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4436
  },
4437
- "sounding_action": {
4438
  "actor": "person_A",
4439
  "action": "clapping_hands",
4440
  "acting_body_side": "both",
@@ -4483,14 +4517,14 @@
4483
  ],
4484
  "events": [
4485
  {
4486
- "id": "speech",
4487
  "modality": "speech",
4488
  "actor": "person_A",
4489
  "text": "stop",
4490
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4491
  },
4492
  {
4493
- "id": "silent_action",
4494
  "modality": "silent_action",
4495
  "actor": "person_A",
4496
  "action": "peace_sign",
@@ -4499,7 +4533,7 @@
4499
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4500
  },
4501
  {
4502
- "id": "sounding_action",
4503
  "modality": "sounding_action",
4504
  "actor": "person_A",
4505
  "action": "clapping_hands",
@@ -4510,19 +4544,19 @@
4510
  }
4511
  ],
4512
  "content": {
4513
- "speech": {
4514
  "actor": "person_A",
4515
  "text": "stop",
4516
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4517
  },
4518
- "silent_action": {
4519
  "actor": "person_A",
4520
  "action": "peace_sign",
4521
  "body_side": "right",
4522
  "body_part": "hand",
4523
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4524
  },
4525
- "sounding_action": {
4526
  "actor": "person_A",
4527
  "action": "clapping_hands",
4528
  "acting_body_side": "both",
@@ -4571,14 +4605,14 @@
4571
  ],
4572
  "events": [
4573
  {
4574
- "id": "speech",
4575
  "modality": "speech",
4576
  "actor": "person_A",
4577
  "text": "stop",
4578
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4579
  },
4580
  {
4581
- "id": "silent_action",
4582
  "modality": "silent_action",
4583
  "actor": "person_A",
4584
  "action": "peace_sign",
@@ -4587,7 +4621,7 @@
4587
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4588
  },
4589
  {
4590
- "id": "sounding_action",
4591
  "modality": "sounding_action",
4592
  "actor": "person_A",
4593
  "action": "clapping_hands",
@@ -4598,19 +4632,19 @@
4598
  }
4599
  ],
4600
  "content": {
4601
- "speech": {
4602
  "actor": "person_A",
4603
  "text": "stop",
4604
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4605
  },
4606
- "silent_action": {
4607
  "actor": "person_A",
4608
  "action": "peace_sign",
4609
  "body_side": "right",
4610
  "body_part": "hand",
4611
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4612
  },
4613
- "sounding_action": {
4614
  "actor": "person_A",
4615
  "action": "clapping_hands",
4616
  "acting_body_side": "both",
@@ -4659,14 +4693,14 @@
4659
  ],
4660
  "events": [
4661
  {
4662
- "id": "speech",
4663
  "modality": "speech",
4664
  "actor": "person_A",
4665
  "text": "stop",
4666
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4667
  },
4668
  {
4669
- "id": "silent_action",
4670
  "modality": "silent_action",
4671
  "actor": "person_A",
4672
  "action": "peace_sign",
@@ -4675,7 +4709,7 @@
4675
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4676
  },
4677
  {
4678
- "id": "sounding_action",
4679
  "modality": "sounding_action",
4680
  "actor": "person_A",
4681
  "action": "clapping_hands",
@@ -4686,19 +4720,19 @@
4686
  }
4687
  ],
4688
  "content": {
4689
- "speech": {
4690
  "actor": "person_A",
4691
  "text": "stop",
4692
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4693
  },
4694
- "silent_action": {
4695
  "actor": "person_A",
4696
  "action": "peace_sign",
4697
  "body_side": "right",
4698
  "body_part": "hand",
4699
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4700
  },
4701
- "sounding_action": {
4702
  "actor": "person_A",
4703
  "action": "clapping_hands",
4704
  "acting_body_side": "both",
@@ -5132,14 +5166,14 @@
5132
  ],
5133
  "events": [
5134
  {
5135
- "id": "speech",
5136
  "modality": "speech",
5137
  "actor": "person_A",
5138
  "text": "okay",
5139
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5140
  },
5141
  {
5142
- "id": "silent_action",
5143
  "modality": "silent_action",
5144
  "actor": "person_A",
5145
  "action": "raise_open_palm",
@@ -5148,7 +5182,7 @@
5148
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5149
  },
5150
  {
5151
- "id": "sounding_action",
5152
  "modality": "sounding_action",
5153
  "actor": "person_A",
5154
  "action": "clapping_hands",
@@ -5159,19 +5193,19 @@
5159
  }
5160
  ],
5161
  "content": {
5162
- "speech": {
5163
  "actor": "person_A",
5164
  "text": "okay",
5165
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5166
  },
5167
- "silent_action": {
5168
  "actor": "person_A",
5169
  "action": "raise_open_palm",
5170
  "body_side": "right",
5171
  "body_part": "hand",
5172
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5173
  },
5174
- "sounding_action": {
5175
  "actor": "person_A",
5176
  "action": "clapping_hands",
5177
  "acting_body_side": "both",
@@ -5220,14 +5254,14 @@
5220
  ],
5221
  "events": [
5222
  {
5223
- "id": "speech",
5224
  "modality": "speech",
5225
  "actor": "person_A",
5226
  "text": "okay",
5227
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5228
  },
5229
  {
5230
- "id": "silent_action",
5231
  "modality": "silent_action",
5232
  "actor": "person_A",
5233
  "action": "raise_open_palm",
@@ -5236,7 +5270,7 @@
5236
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5237
  },
5238
  {
5239
- "id": "sounding_action",
5240
  "modality": "sounding_action",
5241
  "actor": "person_A",
5242
  "action": "clapping_hands",
@@ -5247,19 +5281,19 @@
5247
  }
5248
  ],
5249
  "content": {
5250
- "speech": {
5251
  "actor": "person_A",
5252
  "text": "okay",
5253
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5254
  },
5255
- "silent_action": {
5256
  "actor": "person_A",
5257
  "action": "raise_open_palm",
5258
  "body_side": "right",
5259
  "body_part": "hand",
5260
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5261
  },
5262
- "sounding_action": {
5263
  "actor": "person_A",
5264
  "action": "clapping_hands",
5265
  "acting_body_side": "both",
@@ -5385,14 +5419,14 @@
5385
  ],
5386
  "events": [
5387
  {
5388
- "id": "speech",
5389
  "modality": "speech",
5390
  "actor": "person_A",
5391
  "text": "okay",
5392
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5393
  },
5394
  {
5395
- "id": "silent_action",
5396
  "modality": "silent_action",
5397
  "actor": "person_A",
5398
  "action": "raise_open_palm",
@@ -5401,7 +5435,7 @@
5401
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5402
  },
5403
  {
5404
- "id": "sounding_action",
5405
  "modality": "sounding_action",
5406
  "actor": "person_A",
5407
  "action": "clapping_hands",
@@ -5412,19 +5446,19 @@
5412
  }
5413
  ],
5414
  "content": {
5415
- "speech": {
5416
  "actor": "person_A",
5417
  "text": "okay",
5418
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5419
  },
5420
- "silent_action": {
5421
  "actor": "person_A",
5422
  "action": "raise_open_palm",
5423
  "body_side": "right",
5424
  "body_part": "hand",
5425
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5426
  },
5427
- "sounding_action": {
5428
  "actor": "person_A",
5429
  "action": "clapping_hands",
5430
  "acting_body_side": "both",
@@ -5550,14 +5584,14 @@
5550
  ],
5551
  "events": [
5552
  {
5553
- "id": "speech",
5554
  "modality": "speech",
5555
  "actor": "person_A",
5556
  "text": "okay",
5557
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5558
  },
5559
  {
5560
- "id": "silent_action",
5561
  "modality": "silent_action",
5562
  "actor": "person_A",
5563
  "action": "peace_sign",
@@ -5566,7 +5600,7 @@
5566
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5567
  },
5568
  {
5569
- "id": "sounding_action",
5570
  "modality": "sounding_action",
5571
  "actor": "person_A",
5572
  "action": "clapping_hands",
@@ -5577,19 +5611,19 @@
5577
  }
5578
  ],
5579
  "content": {
5580
- "speech": {
5581
  "actor": "person_A",
5582
  "text": "okay",
5583
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5584
  },
5585
- "silent_action": {
5586
  "actor": "person_A",
5587
  "action": "peace_sign",
5588
  "body_side": "right",
5589
  "body_part": "hand",
5590
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5591
  },
5592
- "sounding_action": {
5593
  "actor": "person_A",
5594
  "action": "clapping_hands",
5595
  "acting_body_side": "both",
@@ -5638,14 +5672,14 @@
5638
  ],
5639
  "events": [
5640
  {
5641
- "id": "speech",
5642
  "modality": "speech",
5643
  "actor": "person_A",
5644
  "text": "okay",
5645
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5646
  },
5647
  {
5648
- "id": "silent_action",
5649
  "modality": "silent_action",
5650
  "actor": "person_A",
5651
  "action": "peace_sign",
@@ -5654,7 +5688,7 @@
5654
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5655
  },
5656
  {
5657
- "id": "sounding_action",
5658
  "modality": "sounding_action",
5659
  "actor": "person_A",
5660
  "action": "clapping_hands",
@@ -5665,19 +5699,19 @@
5665
  }
5666
  ],
5667
  "content": {
5668
- "speech": {
5669
  "actor": "person_A",
5670
  "text": "okay",
5671
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5672
  },
5673
- "silent_action": {
5674
  "actor": "person_A",
5675
  "action": "peace_sign",
5676
  "body_side": "right",
5677
  "body_part": "hand",
5678
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5679
  },
5680
- "sounding_action": {
5681
  "actor": "person_A",
5682
  "action": "clapping_hands",
5683
  "acting_body_side": "both",
@@ -5803,14 +5837,14 @@
5803
  ],
5804
  "events": [
5805
  {
5806
- "id": "speech",
5807
  "modality": "speech",
5808
  "actor": "person_A",
5809
  "text": "okay",
5810
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5811
  },
5812
  {
5813
- "id": "silent_action",
5814
  "modality": "silent_action",
5815
  "actor": "person_A",
5816
  "action": "peace_sign",
@@ -5819,7 +5853,7 @@
5819
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5820
  },
5821
  {
5822
- "id": "sounding_action",
5823
  "modality": "sounding_action",
5824
  "actor": "person_A",
5825
  "action": "clapping_hands",
@@ -5830,19 +5864,19 @@
5830
  }
5831
  ],
5832
  "content": {
5833
- "speech": {
5834
  "actor": "person_A",
5835
  "text": "okay",
5836
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5837
  },
5838
- "silent_action": {
5839
  "actor": "person_A",
5840
  "action": "peace_sign",
5841
  "body_side": "right",
5842
  "body_part": "hand",
5843
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5844
  },
5845
- "sounding_action": {
5846
  "actor": "person_A",
5847
  "action": "clapping_hands",
5848
  "acting_body_side": "both",
@@ -5891,14 +5925,14 @@
5891
  ],
5892
  "events": [
5893
  {
5894
- "id": "speech",
5895
  "modality": "speech",
5896
  "actor": "person_A",
5897
  "text": "okay",
5898
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5899
  },
5900
  {
5901
- "id": "silent_action",
5902
  "modality": "silent_action",
5903
  "actor": "person_A",
5904
  "action": "peace_sign",
@@ -5907,7 +5941,7 @@
5907
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5908
  },
5909
  {
5910
- "id": "sounding_action",
5911
  "modality": "sounding_action",
5912
  "actor": "person_A",
5913
  "action": "clapping_hands",
@@ -5918,19 +5952,19 @@
5918
  }
5919
  ],
5920
  "content": {
5921
- "speech": {
5922
  "actor": "person_A",
5923
  "text": "okay",
5924
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5925
  },
5926
- "silent_action": {
5927
  "actor": "person_A",
5928
  "action": "peace_sign",
5929
  "body_side": "right",
5930
  "body_part": "hand",
5931
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5932
  },
5933
- "sounding_action": {
5934
  "actor": "person_A",
5935
  "action": "clapping_hands",
5936
  "acting_body_side": "both",
@@ -5979,14 +6013,14 @@
5979
  ],
5980
  "events": [
5981
  {
5982
- "id": "speech",
5983
  "modality": "speech",
5984
  "actor": "person_A",
5985
  "text": "okay",
5986
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5987
  },
5988
  {
5989
- "id": "silent_action",
5990
  "modality": "silent_action",
5991
  "actor": "person_A",
5992
  "action": "peace_sign",
@@ -5995,7 +6029,7 @@
5995
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5996
  },
5997
  {
5998
- "id": "sounding_action",
5999
  "modality": "sounding_action",
6000
  "actor": "person_A",
6001
  "action": "clapping_hands",
@@ -6006,19 +6040,19 @@
6006
  }
6007
  ],
6008
  "content": {
6009
- "speech": {
6010
  "actor": "person_A",
6011
  "text": "okay",
6012
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6013
  },
6014
- "silent_action": {
6015
  "actor": "person_A",
6016
  "action": "peace_sign",
6017
  "body_side": "right",
6018
  "body_part": "hand",
6019
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6020
  },
6021
- "sounding_action": {
6022
  "actor": "person_A",
6023
  "action": "clapping_hands",
6024
  "acting_body_side": "both",
@@ -6144,14 +6178,14 @@
6144
  ],
6145
  "events": [
6146
  {
6147
- "id": "speech",
6148
  "modality": "speech",
6149
  "actor": "person_A",
6150
  "text": "okay",
6151
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6152
  },
6153
  {
6154
- "id": "silent_action",
6155
  "modality": "silent_action",
6156
  "actor": "person_A",
6157
  "action": "peace_sign",
@@ -6160,7 +6194,7 @@
6160
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6161
  },
6162
  {
6163
- "id": "sounding_action",
6164
  "modality": "sounding_action",
6165
  "actor": "person_A",
6166
  "action": "clapping_hands",
@@ -6171,19 +6205,19 @@
6171
  }
6172
  ],
6173
  "content": {
6174
- "speech": {
6175
  "actor": "person_A",
6176
  "text": "okay",
6177
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6178
  },
6179
- "silent_action": {
6180
  "actor": "person_A",
6181
  "action": "peace_sign",
6182
  "body_side": "right",
6183
  "body_part": "hand",
6184
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6185
  },
6186
- "sounding_action": {
6187
  "actor": "person_A",
6188
  "action": "clapping_hands",
6189
  "acting_body_side": "both",
@@ -6232,14 +6266,14 @@
6232
  ],
6233
  "events": [
6234
  {
6235
- "id": "speech",
6236
  "modality": "speech",
6237
  "actor": "person_A",
6238
  "text": "okay",
6239
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6240
  },
6241
  {
6242
- "id": "silent_action",
6243
  "modality": "silent_action",
6244
  "actor": "person_A",
6245
  "action": "peace_sign",
@@ -6248,7 +6282,7 @@
6248
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6249
  },
6250
  {
6251
- "id": "sounding_action",
6252
  "modality": "sounding_action",
6253
  "actor": "person_A",
6254
  "action": "clapping_hands",
@@ -6259,19 +6293,19 @@
6259
  }
6260
  ],
6261
  "content": {
6262
- "speech": {
6263
  "actor": "person_A",
6264
  "text": "okay",
6265
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6266
  },
6267
- "silent_action": {
6268
  "actor": "person_A",
6269
  "action": "peace_sign",
6270
  "body_side": "right",
6271
  "body_part": "hand",
6272
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6273
  },
6274
- "sounding_action": {
6275
  "actor": "person_A",
6276
  "action": "clapping_hands",
6277
  "acting_body_side": "both",
 
1967
  ],
1968
  "events": [
1969
  {
1970
+ "id": "thumbs_up",
1971
  "modality": "silent_action",
1972
  "actor": "person_A",
1973
  "action": "thumbs_up",
 
1976
  "definition": "The person's right hand forms or holds a thumbs-up pose: a fist closed with the thumb extended upward, clearly recognizable. The target is the pose, not a separate hand-raising motion."
1977
  },
1978
  {
1979
+ "id": "open_palm",
1980
  "modality": "silent_action",
1981
  "actor": "person_A",
1982
  "action": "raise_open_palm",
 
1986
  }
1987
  ],
1988
  "content": {
1989
+ "thumbs_up": {
1990
+ "actor": "person_A",
1991
+ "action": "thumbs_up",
1992
+ "body_side": "right",
1993
+ "body_part": "hand",
1994
+ "definition": "The person's right hand forms or holds a thumbs-up pose: a fist closed with the thumb extended upward, clearly recognizable. The target is the pose, not a separate hand-raising motion."
1995
+ },
1996
+ "open_palm": {
1997
  "actor": "person_A",
1998
  "action": "raise_open_palm",
1999
  "body_side": "right",
 
2008
  "timing_type": "relative",
2009
  "value": {
2010
  "sequence": [
2011
+ "thumbs_up",
2012
+ "open_palm"
2013
  ]
2014
  }
2015
  },
 
2029
  ],
2030
  "events": [
2031
  {
2032
+ "id": "open_palm",
2033
  "modality": "silent_action",
2034
  "actor": "person_A",
2035
  "action": "raise_open_palm",
 
2038
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers together and extended, held clearly as a recognizable open-palm pose. The target is the held pose, not a separate raising motion."
2039
  },
2040
  {
2041
+ "id": "thumbs_up",
2042
  "modality": "silent_action",
2043
  "actor": "person_A",
2044
  "action": "thumbs_up",
 
2048
  }
2049
  ],
2050
  "content": {
2051
+ "open_palm": {
2052
+ "actor": "person_A",
2053
+ "action": "raise_open_palm",
2054
+ "body_side": "right",
2055
+ "body_part": "hand",
2056
+ "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers together and extended, held clearly as a recognizable open-palm pose. The target is the held pose, not a separate raising motion."
2057
+ },
2058
+ "thumbs_up": {
2059
  "actor": "person_A",
2060
  "action": "thumbs_up",
2061
  "body_side": "right",
 
2070
  "timing_type": "relative",
2071
  "value": {
2072
  "sequence": [
2073
+ "open_palm",
2074
+ "thumbs_up"
2075
  ]
2076
  }
2077
  },
 
2227
  ],
2228
  "events": [
2229
  {
2230
+ "id": "slap",
2231
  "modality": "sounding_action",
2232
  "actor": "person_A",
2233
  "action": "slapping_the_thigh",
 
2239
  "definition": "The person's left hand strikes the top of the left thigh, with visible contact and a sharp slap sound at the moment of impact."
2240
  },
2241
  {
2242
+ "id": "clap",
2243
  "modality": "sounding_action",
2244
  "actor": "person_A",
2245
  "action": "clapping_hands",
 
2252
  }
2253
  ],
2254
  "content": {
2255
+ "slap": {
2256
+ "actor": "person_A",
2257
+ "action": "slapping_the_thigh",
2258
+ "acting_body_side": "left",
2259
+ "acting_body_part": "hand",
2260
+ "target_body_side": "left",
2261
+ "target_body_part": "thigh",
2262
+ "target_sound": "sharp slap sound",
2263
+ "definition": "The person's left hand strikes the top of the left thigh, with visible contact and a sharp slap sound at the moment of impact."
2264
+ },
2265
+ "clap": {
2266
  "actor": "person_A",
2267
  "action": "clapping_hands",
2268
  "acting_body_side": "both",
 
2280
  "timing_type": "relative",
2281
  "value": {
2282
  "sequence": [
2283
+ "slap",
2284
+ "clap"
2285
  ]
2286
  }
2287
  },
 
2301
  ],
2302
  "events": [
2303
  {
2304
+ "id": "clap",
2305
  "modality": "sounding_action",
2306
  "actor": "person_A",
2307
  "action": "clapping_hands",
 
2313
  "definition": "The person brings both hands together in front of the torso to clap, with visible hand-to-hand contact and a single sharp clap sound at the moment of impact."
2314
  },
2315
  {
2316
+ "id": "slap",
2317
  "modality": "sounding_action",
2318
  "actor": "person_A",
2319
  "action": "slapping_the_thigh",
 
2326
  }
2327
  ],
2328
  "content": {
2329
+ "clap": {
2330
+ "actor": "person_A",
2331
+ "action": "clapping_hands",
2332
+ "acting_body_side": "both",
2333
+ "acting_body_part": "hand",
2334
+ "target_body_side": "both",
2335
+ "target_body_part": "hand",
2336
+ "target_sound": "sharp clap sound",
2337
+ "definition": "The person brings both hands together in front of the torso to clap, with visible hand-to-hand contact and a single sharp clap sound at the moment of impact."
2338
+ },
2339
+ "slap": {
2340
  "actor": "person_A",
2341
  "action": "slapping_the_thigh",
2342
  "acting_body_side": "left",
 
2354
  "timing_type": "relative",
2355
  "value": {
2356
  "sequence": [
2357
+ "clap",
2358
+ "slap"
2359
  ]
2360
  }
2361
  },
 
3769
  ],
3770
  "events": [
3771
  {
3772
+ "id": "speech_stop",
3773
  "modality": "speech",
3774
  "actor": "person_A",
3775
  "text": "stop",
3776
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3777
  },
3778
  {
3779
+ "id": "open_palm",
3780
  "modality": "silent_action",
3781
  "actor": "person_A",
3782
  "action": "raise_open_palm",
 
3785
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
3786
  },
3787
  {
3788
+ "id": "clap",
3789
  "modality": "sounding_action",
3790
  "actor": "person_A",
3791
  "action": "clapping_hands",
 
3796
  }
3797
  ],
3798
  "content": {
3799
+ "speech_stop": {
3800
  "actor": "person_A",
3801
  "text": "stop",
3802
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
3803
  },
3804
+ "open_palm": {
3805
  "actor": "person_A",
3806
  "action": "raise_open_palm",
3807
  "body_side": "right",
3808
  "body_part": "hand",
3809
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
3810
  },
3811
+ "clap": {
3812
  "actor": "person_A",
3813
  "action": "clapping_hands",
3814
  "acting_body_side": "both",
 
4011
  ],
4012
  "events": [
4013
  {
4014
+ "id": "speech_stop",
4015
  "modality": "speech",
4016
  "actor": "person_A",
4017
  "text": "stop",
4018
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4019
  },
4020
  {
4021
+ "id": "peace_sign",
4022
  "modality": "silent_action",
4023
  "actor": "person_A",
4024
  "action": "peace_sign",
 
4027
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4028
  },
4029
  {
4030
+ "id": "clap",
4031
  "modality": "sounding_action",
4032
  "actor": "person_A",
4033
  "action": "clapping_hands",
 
4038
  }
4039
  ],
4040
  "content": {
4041
+ "speech_stop": {
4042
  "actor": "person_A",
4043
  "text": "stop",
4044
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4045
  },
4046
+ "peace_sign": {
4047
  "actor": "person_A",
4048
  "action": "peace_sign",
4049
  "body_side": "right",
4050
  "body_part": "hand",
4051
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4052
  },
4053
+ "clap": {
4054
  "actor": "person_A",
4055
  "action": "clapping_hands",
4056
  "acting_body_side": "both",
 
4176
  ],
4177
  "events": [
4178
  {
4179
+ "id": "speech_stop",
4180
  "modality": "speech",
4181
  "actor": "person_A",
4182
  "text": "stop",
4183
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4184
  },
4185
  {
4186
+ "id": "peace_sign",
4187
  "modality": "silent_action",
4188
  "actor": "person_A",
4189
  "action": "peace_sign",
 
4192
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4193
  },
4194
  {
4195
+ "id": "clap",
4196
  "modality": "sounding_action",
4197
  "actor": "person_A",
4198
  "action": "clapping_hands",
 
4203
  }
4204
  ],
4205
  "content": {
4206
+ "speech_stop": {
4207
  "actor": "person_A",
4208
  "text": "stop",
4209
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4210
  },
4211
+ "peace_sign": {
4212
  "actor": "person_A",
4213
  "action": "peace_sign",
4214
  "body_side": "right",
4215
  "body_part": "hand",
4216
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4217
  },
4218
+ "clap": {
4219
  "actor": "person_A",
4220
  "action": "clapping_hands",
4221
  "acting_body_side": "both",
 
4264
  ],
4265
  "events": [
4266
  {
4267
+ "id": "speech_stop",
4268
  "modality": "speech",
4269
  "actor": "person_A",
4270
  "text": "stop",
4271
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4272
  },
4273
  {
4274
+ "id": "peace_sign",
4275
  "modality": "silent_action",
4276
  "actor": "person_A",
4277
  "action": "peace_sign",
 
4280
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4281
  },
4282
  {
4283
+ "id": "clap",
4284
  "modality": "sounding_action",
4285
  "actor": "person_A",
4286
  "action": "clapping_hands",
 
4291
  }
4292
  ],
4293
  "content": {
4294
+ "speech_stop": {
4295
  "actor": "person_A",
4296
  "text": "stop",
4297
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4298
  },
4299
+ "peace_sign": {
4300
  "actor": "person_A",
4301
  "action": "peace_sign",
4302
  "body_side": "right",
4303
  "body_part": "hand",
4304
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4305
  },
4306
+ "clap": {
4307
  "actor": "person_A",
4308
  "action": "clapping_hands",
4309
  "acting_body_side": "both",
 
4429
  ],
4430
  "events": [
4431
  {
4432
+ "id": "speech_stop",
4433
  "modality": "speech",
4434
  "actor": "person_A",
4435
  "text": "stop",
4436
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4437
  },
4438
  {
4439
+ "id": "peace_sign",
4440
  "modality": "silent_action",
4441
  "actor": "person_A",
4442
  "action": "peace_sign",
 
4445
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4446
  },
4447
  {
4448
+ "id": "clap",
4449
  "modality": "sounding_action",
4450
  "actor": "person_A",
4451
  "action": "clapping_hands",
 
4456
  }
4457
  ],
4458
  "content": {
4459
+ "speech_stop": {
4460
  "actor": "person_A",
4461
  "text": "stop",
4462
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4463
  },
4464
+ "peace_sign": {
4465
  "actor": "person_A",
4466
  "action": "peace_sign",
4467
  "body_side": "right",
4468
  "body_part": "hand",
4469
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4470
  },
4471
+ "clap": {
4472
  "actor": "person_A",
4473
  "action": "clapping_hands",
4474
  "acting_body_side": "both",
 
4517
  ],
4518
  "events": [
4519
  {
4520
+ "id": "speech_stop",
4521
  "modality": "speech",
4522
  "actor": "person_A",
4523
  "text": "stop",
4524
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4525
  },
4526
  {
4527
+ "id": "peace_sign",
4528
  "modality": "silent_action",
4529
  "actor": "person_A",
4530
  "action": "peace_sign",
 
4533
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4534
  },
4535
  {
4536
+ "id": "clap",
4537
  "modality": "sounding_action",
4538
  "actor": "person_A",
4539
  "action": "clapping_hands",
 
4544
  }
4545
  ],
4546
  "content": {
4547
+ "speech_stop": {
4548
  "actor": "person_A",
4549
  "text": "stop",
4550
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4551
  },
4552
+ "peace_sign": {
4553
  "actor": "person_A",
4554
  "action": "peace_sign",
4555
  "body_side": "right",
4556
  "body_part": "hand",
4557
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4558
  },
4559
+ "clap": {
4560
  "actor": "person_A",
4561
  "action": "clapping_hands",
4562
  "acting_body_side": "both",
 
4605
  ],
4606
  "events": [
4607
  {
4608
+ "id": "speech_stop",
4609
  "modality": "speech",
4610
  "actor": "person_A",
4611
  "text": "stop",
4612
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4613
  },
4614
  {
4615
+ "id": "peace_sign",
4616
  "modality": "silent_action",
4617
  "actor": "person_A",
4618
  "action": "peace_sign",
 
4621
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4622
  },
4623
  {
4624
+ "id": "clap",
4625
  "modality": "sounding_action",
4626
  "actor": "person_A",
4627
  "action": "clapping_hands",
 
4632
  }
4633
  ],
4634
  "content": {
4635
+ "speech_stop": {
4636
  "actor": "person_A",
4637
  "text": "stop",
4638
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4639
  },
4640
+ "peace_sign": {
4641
  "actor": "person_A",
4642
  "action": "peace_sign",
4643
  "body_side": "right",
4644
  "body_part": "hand",
4645
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4646
  },
4647
+ "clap": {
4648
  "actor": "person_A",
4649
  "action": "clapping_hands",
4650
  "acting_body_side": "both",
 
4693
  ],
4694
  "events": [
4695
  {
4696
+ "id": "speech_stop",
4697
  "modality": "speech",
4698
  "actor": "person_A",
4699
  "text": "stop",
4700
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4701
  },
4702
  {
4703
+ "id": "peace_sign",
4704
  "modality": "silent_action",
4705
  "actor": "person_A",
4706
  "action": "peace_sign",
 
4709
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4710
  },
4711
  {
4712
+ "id": "clap",
4713
  "modality": "sounding_action",
4714
  "actor": "person_A",
4715
  "action": "clapping_hands",
 
4720
  }
4721
  ],
4722
  "content": {
4723
+ "speech_stop": {
4724
  "actor": "person_A",
4725
  "text": "stop",
4726
  "definition": "The person clearly says the single word \"stop\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
4727
  },
4728
+ "peace_sign": {
4729
  "actor": "person_A",
4730
  "action": "peace_sign",
4731
  "body_side": "right",
4732
  "body_part": "hand",
4733
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
4734
  },
4735
+ "clap": {
4736
  "actor": "person_A",
4737
  "action": "clapping_hands",
4738
  "acting_body_side": "both",
 
5166
  ],
5167
  "events": [
5168
  {
5169
+ "id": "speech_okay",
5170
  "modality": "speech",
5171
  "actor": "person_A",
5172
  "text": "okay",
5173
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5174
  },
5175
  {
5176
+ "id": "open_palm",
5177
  "modality": "silent_action",
5178
  "actor": "person_A",
5179
  "action": "raise_open_palm",
 
5182
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5183
  },
5184
  {
5185
+ "id": "clap",
5186
  "modality": "sounding_action",
5187
  "actor": "person_A",
5188
  "action": "clapping_hands",
 
5193
  }
5194
  ],
5195
  "content": {
5196
+ "speech_okay": {
5197
  "actor": "person_A",
5198
  "text": "okay",
5199
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5200
  },
5201
+ "open_palm": {
5202
  "actor": "person_A",
5203
  "action": "raise_open_palm",
5204
  "body_side": "right",
5205
  "body_part": "hand",
5206
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5207
  },
5208
+ "clap": {
5209
  "actor": "person_A",
5210
  "action": "clapping_hands",
5211
  "acting_body_side": "both",
 
5254
  ],
5255
  "events": [
5256
  {
5257
+ "id": "speech_okay",
5258
  "modality": "speech",
5259
  "actor": "person_A",
5260
  "text": "okay",
5261
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5262
  },
5263
  {
5264
+ "id": "open_palm",
5265
  "modality": "silent_action",
5266
  "actor": "person_A",
5267
  "action": "raise_open_palm",
 
5270
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5271
  },
5272
  {
5273
+ "id": "clap",
5274
  "modality": "sounding_action",
5275
  "actor": "person_A",
5276
  "action": "clapping_hands",
 
5281
  }
5282
  ],
5283
  "content": {
5284
+ "speech_okay": {
5285
  "actor": "person_A",
5286
  "text": "okay",
5287
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5288
  },
5289
+ "open_palm": {
5290
  "actor": "person_A",
5291
  "action": "raise_open_palm",
5292
  "body_side": "right",
5293
  "body_part": "hand",
5294
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5295
  },
5296
+ "clap": {
5297
  "actor": "person_A",
5298
  "action": "clapping_hands",
5299
  "acting_body_side": "both",
 
5419
  ],
5420
  "events": [
5421
  {
5422
+ "id": "speech_okay",
5423
  "modality": "speech",
5424
  "actor": "person_A",
5425
  "text": "okay",
5426
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5427
  },
5428
  {
5429
+ "id": "open_palm",
5430
  "modality": "silent_action",
5431
  "actor": "person_A",
5432
  "action": "raise_open_palm",
 
5435
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5436
  },
5437
  {
5438
+ "id": "clap",
5439
  "modality": "sounding_action",
5440
  "actor": "person_A",
5441
  "action": "clapping_hands",
 
5446
  }
5447
  ],
5448
  "content": {
5449
+ "speech_okay": {
5450
  "actor": "person_A",
5451
  "text": "okay",
5452
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5453
  },
5454
+ "open_palm": {
5455
  "actor": "person_A",
5456
  "action": "raise_open_palm",
5457
  "body_side": "right",
5458
  "body_part": "hand",
5459
  "definition": "The person's right hand is raised to about shoulder height with the palm open and facing the camera, fingers extended, and the pose held clearly enough to be recognized as an open-palm gesture."
5460
  },
5461
+ "clap": {
5462
  "actor": "person_A",
5463
  "action": "clapping_hands",
5464
  "acting_body_side": "both",
 
5584
  ],
5585
  "events": [
5586
  {
5587
+ "id": "speech_okay",
5588
  "modality": "speech",
5589
  "actor": "person_A",
5590
  "text": "okay",
5591
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5592
  },
5593
  {
5594
+ "id": "peace_sign",
5595
  "modality": "silent_action",
5596
  "actor": "person_A",
5597
  "action": "peace_sign",
 
5600
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5601
  },
5602
  {
5603
+ "id": "clap",
5604
  "modality": "sounding_action",
5605
  "actor": "person_A",
5606
  "action": "clapping_hands",
 
5611
  }
5612
  ],
5613
  "content": {
5614
+ "speech_okay": {
5615
  "actor": "person_A",
5616
  "text": "okay",
5617
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5618
  },
5619
+ "peace_sign": {
5620
  "actor": "person_A",
5621
  "action": "peace_sign",
5622
  "body_side": "right",
5623
  "body_part": "hand",
5624
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5625
  },
5626
+ "clap": {
5627
  "actor": "person_A",
5628
  "action": "clapping_hands",
5629
  "acting_body_side": "both",
 
5672
  ],
5673
  "events": [
5674
  {
5675
+ "id": "speech_okay",
5676
  "modality": "speech",
5677
  "actor": "person_A",
5678
  "text": "okay",
5679
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5680
  },
5681
  {
5682
+ "id": "peace_sign",
5683
  "modality": "silent_action",
5684
  "actor": "person_A",
5685
  "action": "peace_sign",
 
5688
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5689
  },
5690
  {
5691
+ "id": "clap",
5692
  "modality": "sounding_action",
5693
  "actor": "person_A",
5694
  "action": "clapping_hands",
 
5699
  }
5700
  ],
5701
  "content": {
5702
+ "speech_okay": {
5703
  "actor": "person_A",
5704
  "text": "okay",
5705
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5706
  },
5707
+ "peace_sign": {
5708
  "actor": "person_A",
5709
  "action": "peace_sign",
5710
  "body_side": "right",
5711
  "body_part": "hand",
5712
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5713
  },
5714
+ "clap": {
5715
  "actor": "person_A",
5716
  "action": "clapping_hands",
5717
  "acting_body_side": "both",
 
5837
  ],
5838
  "events": [
5839
  {
5840
+ "id": "speech_okay",
5841
  "modality": "speech",
5842
  "actor": "person_A",
5843
  "text": "okay",
5844
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5845
  },
5846
  {
5847
+ "id": "peace_sign",
5848
  "modality": "silent_action",
5849
  "actor": "person_A",
5850
  "action": "peace_sign",
 
5853
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5854
  },
5855
  {
5856
+ "id": "clap",
5857
  "modality": "sounding_action",
5858
  "actor": "person_A",
5859
  "action": "clapping_hands",
 
5864
  }
5865
  ],
5866
  "content": {
5867
+ "speech_okay": {
5868
  "actor": "person_A",
5869
  "text": "okay",
5870
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5871
  },
5872
+ "peace_sign": {
5873
  "actor": "person_A",
5874
  "action": "peace_sign",
5875
  "body_side": "right",
5876
  "body_part": "hand",
5877
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5878
  },
5879
+ "clap": {
5880
  "actor": "person_A",
5881
  "action": "clapping_hands",
5882
  "acting_body_side": "both",
 
5925
  ],
5926
  "events": [
5927
  {
5928
+ "id": "speech_okay",
5929
  "modality": "speech",
5930
  "actor": "person_A",
5931
  "text": "okay",
5932
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5933
  },
5934
  {
5935
+ "id": "peace_sign",
5936
  "modality": "silent_action",
5937
  "actor": "person_A",
5938
  "action": "peace_sign",
 
5941
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5942
  },
5943
  {
5944
+ "id": "clap",
5945
  "modality": "sounding_action",
5946
  "actor": "person_A",
5947
  "action": "clapping_hands",
 
5952
  }
5953
  ],
5954
  "content": {
5955
+ "speech_okay": {
5956
  "actor": "person_A",
5957
  "text": "okay",
5958
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
5959
  },
5960
+ "peace_sign": {
5961
  "actor": "person_A",
5962
  "action": "peace_sign",
5963
  "body_side": "right",
5964
  "body_part": "hand",
5965
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
5966
  },
5967
+ "clap": {
5968
  "actor": "person_A",
5969
  "action": "clapping_hands",
5970
  "acting_body_side": "both",
 
6013
  ],
6014
  "events": [
6015
  {
6016
+ "id": "speech_okay",
6017
  "modality": "speech",
6018
  "actor": "person_A",
6019
  "text": "okay",
6020
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6021
  },
6022
  {
6023
+ "id": "peace_sign",
6024
  "modality": "silent_action",
6025
  "actor": "person_A",
6026
  "action": "peace_sign",
 
6029
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6030
  },
6031
  {
6032
+ "id": "clap",
6033
  "modality": "sounding_action",
6034
  "actor": "person_A",
6035
  "action": "clapping_hands",
 
6040
  }
6041
  ],
6042
  "content": {
6043
+ "speech_okay": {
6044
  "actor": "person_A",
6045
  "text": "okay",
6046
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6047
  },
6048
+ "peace_sign": {
6049
  "actor": "person_A",
6050
  "action": "peace_sign",
6051
  "body_side": "right",
6052
  "body_part": "hand",
6053
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6054
  },
6055
+ "clap": {
6056
  "actor": "person_A",
6057
  "action": "clapping_hands",
6058
  "acting_body_side": "both",
 
6178
  ],
6179
  "events": [
6180
  {
6181
+ "id": "speech_okay",
6182
  "modality": "speech",
6183
  "actor": "person_A",
6184
  "text": "okay",
6185
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6186
  },
6187
  {
6188
+ "id": "peace_sign",
6189
  "modality": "silent_action",
6190
  "actor": "person_A",
6191
  "action": "peace_sign",
 
6194
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6195
  },
6196
  {
6197
+ "id": "clap",
6198
  "modality": "sounding_action",
6199
  "actor": "person_A",
6200
  "action": "clapping_hands",
 
6205
  }
6206
  ],
6207
  "content": {
6208
+ "speech_okay": {
6209
  "actor": "person_A",
6210
  "text": "okay",
6211
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6212
  },
6213
+ "peace_sign": {
6214
  "actor": "person_A",
6215
  "action": "peace_sign",
6216
  "body_side": "right",
6217
  "body_part": "hand",
6218
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6219
  },
6220
+ "clap": {
6221
  "actor": "person_A",
6222
  "action": "clapping_hands",
6223
  "acting_body_side": "both",
 
6266
  ],
6267
  "events": [
6268
  {
6269
+ "id": "speech_okay",
6270
  "modality": "speech",
6271
  "actor": "person_A",
6272
  "text": "okay",
6273
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6274
  },
6275
  {
6276
+ "id": "peace_sign",
6277
  "modality": "silent_action",
6278
  "actor": "person_A",
6279
  "action": "peace_sign",
 
6282
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6283
  },
6284
  {
6285
+ "id": "clap",
6286
  "modality": "sounding_action",
6287
  "actor": "person_A",
6288
  "action": "clapping_hands",
 
6293
  }
6294
  ],
6295
  "content": {
6296
+ "speech_okay": {
6297
  "actor": "person_A",
6298
  "text": "okay",
6299
  "definition": "The person clearly says the single word \"okay\". The speech is audible and easy to distinguish. No extra words are spoken unless explicitly required."
6300
  },
6301
+ "peace_sign": {
6302
  "actor": "person_A",
6303
  "action": "peace_sign",
6304
  "body_side": "right",
6305
  "body_part": "hand",
6306
  "definition": "The person's right hand forms and holds a clear peace sign: the index and middle fingers are extended and separated in a V shape while the remaining fingers are folded, clearly recognizable as a right-hand peace sign."
6307
  },
6308
+ "clap": {
6309
  "actor": "person_A",
6310
  "action": "clapping_hands",
6311
  "acting_body_side": "both",
frontend/src/pages/EvaluationPage.jsx CHANGED
@@ -4,6 +4,7 @@ import ReactPlayer from "react-player";
4
  import axios from "axios";
5
  import EventCard from "../components/EventCard";
6
  import VideoLevelAxes from "../components/VideoLevelAxes";
 
7
  import axisDefinitions from "../data/axisDefinitions";
8
  import { createEmptyAnnotations } from "../lib/promptSchema";
9
 
@@ -15,6 +16,7 @@ export default function EvaluationPage({ tasks, missingVideos, annotatorName, ap
15
  const [saveError, setSaveError] = useState(null);
16
  const [playbackRate, setPlaybackRate] = useState(1);
17
  const [allDone, setAllDone] = useState(false);
 
18
 
19
  const currentTask = tasks[currentIndex];
20
  const annotations = useMemo(
@@ -128,6 +130,8 @@ export default function EvaluationPage({ tasks, missingVideos, annotatorName, ap
128
 
129
  return (
130
  <div className="t2av-shell">
 
 
131
  <div className="g-main evaluation-page">
132
  {missingVideos.length > 0 && (
133
  <div className="callout missing-videos-banner">
@@ -138,7 +142,16 @@ export default function EvaluationPage({ tasks, missingVideos, annotatorName, ap
138
  )}
139
 
140
  <div className="eval-progress">
141
- Video {currentIndex + 1} of {tasks.length} · Annotator: {annotatorName}
 
 
 
 
 
 
 
 
 
142
  </div>
143
 
144
  <div className="container">
 
4
  import axios from "axios";
5
  import EventCard from "../components/EventCard";
6
  import VideoLevelAxes from "../components/VideoLevelAxes";
7
+ import GuidelineOverlay from "./GuidelineOverlay";
8
  import axisDefinitions from "../data/axisDefinitions";
9
  import { createEmptyAnnotations } from "../lib/promptSchema";
10
 
 
16
  const [saveError, setSaveError] = useState(null);
17
  const [playbackRate, setPlaybackRate] = useState(1);
18
  const [allDone, setAllDone] = useState(false);
19
+ const [showGuideline, setShowGuideline] = useState(false);
20
 
21
  const currentTask = tasks[currentIndex];
22
  const annotations = useMemo(
 
130
 
131
  return (
132
  <div className="t2av-shell">
133
+ {showGuideline && <GuidelineOverlay onClose={() => setShowGuideline(false)} />}
134
+
135
  <div className="g-main evaluation-page">
136
  {missingVideos.length > 0 && (
137
  <div className="callout missing-videos-banner">
 
142
  )}
143
 
144
  <div className="eval-progress">
145
+ <span>
146
+ Video {currentIndex + 1} of {tasks.length} · Annotator: {annotatorName}
147
+ </span>
148
+ <button
149
+ type="button"
150
+ className="guideline-toggle-btn"
151
+ onClick={() => setShowGuideline(true)}
152
+ >
153
+ View Guidelines
154
+ </button>
155
  </div>
156
 
157
  <div className="container">
frontend/src/pages/GuidelineContent.jsx ADDED
@@ -0,0 +1,551 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import React, { useEffect, useRef, useState } from "react";
3
+
4
+ // Transcribes T2AV_guideline_final_updated.html sections s0-s4 and s6
5
+ // (section s5, "Worked example", moves to the Training page instead).
6
+ //
7
+ // Pulled out of GuidelinePage so the same nav + section content can be
8
+ // reused read-only inside GuidelineOverlay (the in-evaluation "View
9
+ // Guidelines" popup) without duplicating this copy. `children` renders
10
+ // after the sections - GuidelinePage uses it for the name-entry start
11
+ // panel; GuidelineOverlay passes nothing.
12
+ const SECTIONS = [
13
+ { id: "s0", num: "00", label: "What you evaluate" },
14
+ { id: "s1", num: "01", label: "Events" },
15
+ { id: "s2", num: "02", label: "The six axes" },
16
+ { id: "s3", num: "03", label: "Hierarchy & order" },
17
+ { id: "s4", num: "04", label: "Axis rules" },
18
+ { id: "s6", num: "05", label: "Recording ratings" }
19
+ ];
20
+
21
+ export default function GuidelineContent({ children }) {
22
+ const [activeSection, setActiveSection] = useState("s0");
23
+ const sectionRefs = useRef({});
24
+
25
+ useEffect(() => {
26
+ const observer = new IntersectionObserver(
27
+ (entries) => {
28
+ entries.forEach((entry) => {
29
+ if (entry.isIntersecting) setActiveSection(entry.target.id);
30
+ });
31
+ },
32
+ { rootMargin: "-20% 0px -70% 0px" }
33
+ );
34
+ Object.values(sectionRefs.current).forEach((el) => el && observer.observe(el));
35
+ return () => observer.disconnect();
36
+ }, []);
37
+
38
+ return (
39
+ <div className="g-wrap">
40
+ <aside className="g-aside">
41
+ <div className="g-brand">
42
+ T2AV <span>Evaluation</span>
43
+ </div>
44
+ <div className="g-sub">Human annotation guideline</div>
45
+ <nav>
46
+ {SECTIONS.map((s) => (
47
+ <a
48
+ key={s.id}
49
+ href={`#${s.id}`}
50
+ className={activeSection === s.id ? "active" : ""}
51
+ onClick={(e) => {
52
+ e.preventDefault();
53
+ sectionRefs.current[s.id]?.scrollIntoView({ behavior: "smooth" });
54
+ }}
55
+ >
56
+ <span className="n">{s.num}</span>
57
+ {s.label}
58
+ </a>
59
+ ))}
60
+ </nav>
61
+ </aside>
62
+
63
+ <main className="g-main">
64
+ <header className="g-top">
65
+ <div className="eyebrow-g">Human annotation protocol</div>
66
+ <h1>
67
+ Does the generated video
68
+ <br />
69
+ do what the prompt says?
70
+ </h1>
71
+ <p className="g-lede">
72
+ You'll watch text-to-audio-video clips and judge each one along six axes. The
73
+ models are usually fine at <em>what</em> happens — the hard parts are temporal
74
+ order and counting.
75
+ </p>
76
+ <div className="g-meta">
77
+ <span className="tag-chip">100 videos</span>
78
+ <span className="tag-chip">~1–2 min each</span>
79
+ <span className="tag-chip">PASS / FAIL per axis</span>
80
+ </div>
81
+ </header>
82
+
83
+ <section id="s0" ref={(el) => (sectionRefs.current.s0 = el)} className="g-section">
84
+ <h2>
85
+ <span className="num">00</span>What you're evaluating
86
+ </h2>
87
+ <p>These generators reliably struggle with two things:</p>
88
+ <ul>
89
+ <li>
90
+ <strong>Temporal order</strong> — prompt: <em>"Say 'Hi', then wave your right
91
+ hand."</em> There's a required order (speech before gesture), but the video may
92
+ do them in the wrong order.
93
+ </li>
94
+ <li>
95
+ <strong>Counting</strong> — prompt: <em>"Clap exactly twice."</em> The model may
96
+ clap once or three times, failing the count requirement.
97
+ </li>
98
+ </ul>
99
+ <p>
100
+ For each clip, you decide <span className="pass">PASS</span> /{" "}
101
+ <span className="fail">FAIL</span> on six axes, following the rules below.
102
+ </p>
103
+ </section>
104
+
105
+ <section id="s1" ref={(el) => (sectionRefs.current.s1 = el)} className="g-section">
106
+ <h2>
107
+ <span className="num">01</span>Event and event types
108
+ </h2>
109
+ <p>
110
+ An <strong>event</strong> is a prompt-specified unit that may contain an audio
111
+ component, a visual action or state, or both. There are three types:
112
+ </p>
113
+ <table>
114
+ <thead>
115
+ <tr>
116
+ <th style={{ width: 150 }}>Type</th>
117
+ <th>Meaning</th>
118
+ <th style={{ width: 170 }}>Example</th>
119
+ </tr>
120
+ </thead>
121
+ <tbody>
122
+ <tr>
123
+ <td>
124
+ <strong>Speech</strong>
125
+ </td>
126
+ <td>spoken audio + the corresponding visible speaking behavior</td>
127
+ <td className="muted">saying "help"</td>
128
+ </tr>
129
+ <tr>
130
+ <td>
131
+ <strong>Silent action</strong>
132
+ </td>
133
+ <td>a visual action with no required sound</td>
134
+ <td className="muted">a thumbs-up</td>
135
+ </tr>
136
+ <tr>
137
+ <td>
138
+ <strong>Sounding action</strong>
139
+ </td>
140
+ <td>a visual action + its corresponding sound</td>
141
+ <td className="muted">slapping the thigh</td>
142
+ </tr>
143
+ </tbody>
144
+ </table>
145
+ </section>
146
+
147
+ <section id="s2" ref={(el) => (sectionRefs.current.s2 = el)} className="g-section">
148
+ <h2>
149
+ <span className="num">02</span>The six evaluation axes
150
+ </h2>
151
+ <table>
152
+ <thead>
153
+ <tr>
154
+ <th style={{ width: 130 }}>Axis</th>
155
+ <th>Definition</th>
156
+ </tr>
157
+ </thead>
158
+ <tbody>
159
+ <tr>
160
+ <td>
161
+ <span className="axis">A</span>
162
+ </td>
163
+ <td>
164
+ <strong>Audio Event Correctness.</strong> Whether the required speech or
165
+ sound event is present and correct in the audio.
166
+ </td>
167
+ </tr>
168
+ <tr>
169
+ <td>
170
+ <span className="axis">V</span>
171
+ </td>
172
+ <td>
173
+ <strong>Visual Event Correctness.</strong> Whether the required visual event
174
+ is present and correct. For speech events this evaluates visible speaking
175
+ behavior (mouth/lip motion), <em>not</em> the spoken content.
176
+ </td>
177
+ </tr>
178
+ <tr>
179
+ <td>
180
+ <span className="axis">AVB</span>
181
+ </td>
182
+ <td>
183
+ <strong>Audio–Visual Binding.</strong> Whether the audio and visual
184
+ components <em>within the same event</em> are correctly synchronized and
185
+ causally aligned.
186
+ </td>
187
+ </tr>
188
+ <tr>
189
+ <td>
190
+ <span className="axis">TC_REL</span>
191
+ </td>
192
+ <td>
193
+ <strong>Temporal Relation.</strong> Whether the specified relationship{" "}
194
+ <em>between events</em> holds — synchronization, order, and absolute timing.
195
+ </td>
196
+ </tr>
197
+ <tr>
198
+ <td>
199
+ <span className="axis">TC_COUNT</span>
200
+ </td>
201
+ <td>
202
+ <strong>Temporal Count.</strong> Whether each required event occurs the
203
+ specified number of times, with no missing or extra occurrences.
204
+ </td>
205
+ </tr>
206
+ <tr>
207
+ <td>
208
+ <span className="axis">CC</span>
209
+ </td>
210
+ <td>
211
+ <strong>Constraint Compliance.</strong> Non-core constraints: scene, camera,
212
+ subject count, no subtitles/BGM, no extra actions or sounds, post-event
213
+ stillness when required.
214
+ </td>
215
+ </tr>
216
+ </tbody>
217
+ </table>
218
+ </section>
219
+
220
+ <section id="s3" ref={(el) => (sectionRefs.current.s3 = el)} className="g-section">
221
+ <h2>
222
+ <span className="num">03</span>Hierarchy and order
223
+ </h2>
224
+ <div className="flow">
225
+ <b>A</b> / <b>V</b> &nbsp;→&nbsp; <b>AVB</b> &nbsp;→&nbsp; <b>TC_REL</b> and{" "}
226
+ <b>TC_COUNT</b>
227
+ </div>
228
+ <ul>
229
+ <li>
230
+ <span className="axis">A</span> and <span className="axis">V</span> are
231
+ evaluated first.
232
+ </li>
233
+ <li>
234
+ <span className="axis">AVB</span> applies only to events with{" "}
235
+ <strong>both</strong> audio and visual components; it{" "}
236
+ <span className="fail">FAILS</span> if either component fails.
237
+ </li>
238
+ <li>
239
+ If any event required for the judgment fails A, V, or its applicable AVB,{" "}
240
+ <span className="axis">TC_REL</span> <span className="fail">FAILS</span>, and{" "}
241
+ <span className="axis">TC_COUNT</span> is recorded as{" "}
242
+ <span className="fail">FAIL</span> with a count of <strong>0</strong> for that
243
+ failed event.
244
+ </li>
245
+ </ul>
246
+ <h3>Recommended order per video</h3>
247
+ <ul>
248
+ <li>Identify each required event from the prompt.</li>
249
+ <li>
250
+ Evaluate <span className="axis">A</span> and <span className="axis">V</span>{" "}
251
+ (per event).
252
+ </li>
253
+ <li>
254
+ Apply the hierarchy → <span className="axis">AVB</span> (per audio+visual event).
255
+ </li>
256
+ <li>
257
+ Evaluate <span className="axis">TC_REL</span>, then{" "}
258
+ <span className="axis">TC_COUNT</span>.
259
+ </li>
260
+ <li>
261
+ Evaluate <span className="axis">CC</span> for remaining constraints and any
262
+ unrelated extra events.
263
+ </li>
264
+ </ul>
265
+ </section>
266
+
267
+ <section id="s4" ref={(el) => (sectionRefs.current.s4 = el)} className="g-section">
268
+ <h2>
269
+ <span className="num">04</span>Axis-by-axis rules
270
+ </h2>
271
+
272
+ <h3>
273
+ <span className="axis">A</span> &nbsp;Audio event correctness
274
+ </h3>
275
+ <p>
276
+ <span className="pass">PASS</span> when every required speech/sound component is
277
+ present, clear, and correct. <span className="fail">FAIL</span> when a required
278
+ audio event is missing, the content or sound type is wrong, or the audio is too
279
+ unclear to identify.
280
+ </p>
281
+ <table>
282
+ <thead>
283
+ <tr>
284
+ <th>Situation</th>
285
+ <th style={{ width: 190 }}>Verdict</th>
286
+ </tr>
287
+ </thead>
288
+ <tbody>
289
+ <tr>
290
+ <td>Required speech is "help", but the person says "it helps"</td>
291
+ <td>
292
+ <span className="fail">A FAIL</span>
293
+ </td>
294
+ </tr>
295
+ <tr>
296
+ <td>Required speech correct, followed by a separate extra speech or cough</td>
297
+ <td>
298
+ <span className="pass">A PASS</span> &nbsp;<span className="fail">CC FAIL</span>
299
+ </td>
300
+ </tr>
301
+ <tr>
302
+ <td>A sounding action is visible, but its required sound is absent</td>
303
+ <td>
304
+ <span className="fail">A FAIL</span> &nbsp;<span className="pass">V PASS</span>
305
+ </td>
306
+ </tr>
307
+ </tbody>
308
+ </table>
309
+
310
+ <div className="callout">
311
+ <span className="k">A splits into two separate questions</span>
312
+ The A judgment answers two things at once. Keep them apart — they have different
313
+ bars.
314
+ <br />
315
+ <strong>(1) Audible?</strong> — is the sound perceptible at all? &nbsp;{" "}
316
+ <strong>(2) Correct identity?</strong> — is it the right <em>kind</em> of sound?
317
+ </div>
318
+
319
+ <h4>1&nbsp; Audibility — judge leniently</h4>
320
+ <p>
321
+ A sound counts as audible if it is{" "}
322
+ <strong>perceptible above the background at normal playback volume</strong>. Do
323
+ not <span className="fail">FAIL</span> a sound just because it is quiet, soft, or
324
+ faint. A soft clap, a light tap, or a muffled impact still counts as audible. Only
325
+ mark it missing when you cannot perceive the required sound at all.
326
+ </p>
327
+
328
+ <h4>2&nbsp; Identity — lenient inside a sound family, strict across families</h4>
329
+ <p>
330
+ Judge the sound <em>from the audio</em>. Percussive impact sounds — clap,
331
+ thigh-slap, tap, thud, pat — form <strong>one acoustic family</strong> that
332
+ genuinely overlaps and is heard differently by different people. Within that
333
+ family, judge <span className="pass">leniently</span>: if the sound is a plausible
334
+ instance of the requested impact, <span className="pass">A PASS</span>. Reserve{" "}
335
+ <span className="fail">FAIL</span> for a <strong>clear cross-family mismatch</strong>{" "}
336
+ — where the audio belongs to a different category than requested.
337
+ </p>
338
+ <table>
339
+ <thead>
340
+ <tr>
341
+ <th>Situation</th>
342
+ <th style={{ width: 190 }}>Verdict</th>
343
+ </tr>
344
+ </thead>
345
+ <tbody>
346
+ <tr>
347
+ <td>Required "clap", audio is a soft/ambiguous impact that could be a clap or a thigh-slap</td>
348
+ <td>
349
+ <span className="pass">A PASS</span>
350
+ </td>
351
+ </tr>
352
+ <tr>
353
+ <td>Required an impact sound (clap/slap), but the audio is speech, or silence</td>
354
+ <td>
355
+ <span className="fail">A FAIL</span>
356
+ </td>
357
+ </tr>
358
+ <tr>
359
+ <td>Required speech, but the audio is a non-vocal sound</td>
360
+ <td>
361
+ <span className="fail">A FAIL</span>
362
+ </td>
363
+ </tr>
364
+ </tbody>
365
+ </table>
366
+ <p className="muted">
367
+ Leniency inside the family is safe: a sound that is bound to the wrong visible
368
+ motion is still caught downstream by AVB, and a wrong action is caught by V. A does
369
+ not need to do their job.
370
+ </p>
371
+
372
+ <h3>
373
+ <span className="axis">V</span> &nbsp;Visual event correctness
374
+ </h3>
375
+ <p>
376
+ <span className="pass">PASS</span> when every required visual component is
377
+ present, visible, and correct in actor, action, side, body part, object, and
378
+ contact target. <span className="fail">FAIL</span> when it's missing; the wrong
379
+ actor/side/body part/object/action is used; occlusion, cropping, or blur prevents
380
+ verification; or (for speech) the mouth movement is absent or inconsistent with the
381
+ required utterance.
382
+ </p>
383
+ <table>
384
+ <thead>
385
+ <tr>
386
+ <th>Situation</th>
387
+ <th style={{ width: 190 }}>Verdict</th>
388
+ </tr>
389
+ </thead>
390
+ <tbody>
391
+ <tr>
392
+ <td>Required visual event correct and clearly visible, but an unrelated action is added</td>
393
+ <td>
394
+ <span className="pass">V PASS</span> &nbsp;<span className="fail">CC FAIL</span>
395
+ </td>
396
+ </tr>
397
+ <tr>
398
+ <td>The extra action disrupts, replaces, or hides the required visual event</td>
399
+ <td>
400
+ <span className="fail">V FAIL</span> &nbsp;<span className="fail">CC FAIL</span>
401
+ </td>
402
+ </tr>
403
+ <tr>
404
+ <td>Target action performed by the wrong actor or wrong body part</td>
405
+ <td>
406
+ <span className="fail">V FAIL</span>
407
+ </td>
408
+ </tr>
409
+ <tr>
410
+ <td>Actor appears to speak, but lip movement doesn't match the utterance</td>
411
+ <td>
412
+ <span className="fail">V FAIL</span>
413
+ </td>
414
+ </tr>
415
+ <tr>
416
+ <td>Lip movement matches, but the spoken audio is incorrect</td>
417
+ <td>
418
+ <span className="pass">V PASS</span> &nbsp;<span className="fail">A FAIL</span>
419
+ </td>
420
+ </tr>
421
+ </tbody>
422
+ </table>
423
+
424
+ <h3>
425
+ <span className="axis">AVB</span> &nbsp;Audio–visual binding
426
+ </h3>
427
+ <p>
428
+ Alignment of the audio and visual components <strong>within one event</strong>.{" "}
429
+ <span className="pass">PASS</span> when the sound is synchronized with the
430
+ corresponding visible action, impact, or mouth movement.{" "}
431
+ <span className="fail">FAIL</span> when A or V fails, or the two are clearly
432
+ misaligned in time.
433
+ </p>
434
+ <div className="callout">
435
+ <span className="k">Note</span>Temporal relations <em>between different events</em>{" "}
436
+ are handled under TC_REL, not AVB.
437
+ </div>
438
+
439
+ <h3>
440
+ <span className="axis">TC_REL</span> &nbsp;Temporal relation
441
+ </h3>
442
+ <p>
443
+ Compare the <strong>defined start times</strong> of the required events. If any
444
+ required event fails A, V, or AVB → <span className="fail">TC_REL FAIL</span>.
445
+ </p>
446
+ <table>
447
+ <thead>
448
+ <tr>
449
+ <th style={{ width: 230 }}>Event type</th>
450
+ <th>Start time</th>
451
+ </tr>
452
+ </thead>
453
+ <tbody>
454
+ <tr>
455
+ <td>Speech / sound</td>
456
+ <td>when the target audio begins</td>
457
+ </tr>
458
+ <tr>
459
+ <td>Held pose or state</td>
460
+ <td>when the pose/state first becomes clearly established</td>
461
+ </tr>
462
+ <tr>
463
+ <td>Contact or impact (e.g. a slap)</td>
464
+ <td>the actual contact/impact moment</td>
465
+ </tr>
466
+ <tr>
467
+ <td>Other action</td>
468
+ <td>when the required action visibly begins</td>
469
+ </tr>
470
+ </tbody>
471
+ </table>
472
+ <ul>
473
+ <li>
474
+ <strong>Synchronization</strong> — <span className="pass">PASS</span> when events
475
+ appear to begin at the same moment. Simple overlap is not enough.{" "}
476
+ <span className="muted">(Pose held for a while, speech begins later → Sync FAIL.)</span>
477
+ </li>
478
+ <li>
479
+ <strong>Order</strong> — <span className="pass">PASS</span> when events clearly
480
+ begin in the required order; overlap is allowed.{" "}
481
+ <span className="muted">(Simultaneous start, wrong order, or indistinguishable order → Order FAIL.)</span>
482
+ </li>
483
+ <li>
484
+ <strong>Absolute timing</strong> — <span className="pass">PASS</span> when the
485
+ event starts within about <strong>±0.3 s</strong> of the required timestamp.
486
+ </li>
487
+ </ul>
488
+
489
+ <h3>
490
+ <span className="axis">TC_COUNT</span> &nbsp;Temporal count
491
+ </h3>
492
+ <p>
493
+ <span className="pass">PASS</span> when every required event occurs exactly the
494
+ specified number of times. If no count is given, expect <strong>one</strong>. If
495
+ any required event fails A, V, or its AVB → <span className="fail">TC_COUNT FAIL</span>.
496
+ </p>
497
+ <ul>
498
+ <li>A continuously held pose counts as <strong>one</strong> occurrence.</li>
499
+ <li>
500
+ Releasing and forming the pose again creates <strong>another</strong> occurrence.
501
+ More generally, if the pose is visibly performed again as a distinct
502
+ repetition—even without a complete release—it counts as another occurrence.
503
+ </li>
504
+ <li>Each distinct utterance, sound, contact, or action repetition counts separately.</li>
505
+ </ul>
506
+ <div className="callout">
507
+ <span className="k">Don't double-count</span>The same repetition error should not
508
+ also be logged as an unrelated extra action under CC.
509
+ </div>
510
+
511
+ <h3>
512
+ <span className="axis">CC</span> &nbsp;Constraint compliance
513
+ </h3>
514
+ <p>
515
+ Everything not already covered above: scene and camera conditions; number and
516
+ identity of subjects; initial pose and required visibility; absence of subtitles,
517
+ on-screen text, or background music; absence of additional deliberate actions,
518
+ speech, or salient sounds; and post-event stillness <em>only when explicitly
519
+ required</em>.
520
+ </p>
521
+ <p className="muted">
522
+ Allowed natural motion: blinking, breathing, minor posture adjustment, necessary
523
+ preparation, and natural reset motion.
524
+ </p>
525
+ </section>
526
+
527
+ <section id="s6" ref={(el) => (sectionRefs.current.s6 = el)} className="g-section">
528
+ <h2>
529
+ <span className="num">05</span>Recording your ratings
530
+ </h2>
531
+ <ul>
532
+ <li>
533
+ <strong>Granularity:</strong> record <span className="axis">A</span> and{" "}
534
+ <span className="axis">V</span> per event; <span className="axis">AVB</span> per
535
+ audio+visual event; <span className="axis">TC_COUNT</span> per event;{" "}
536
+ <span className="axis">TC_REL</span> / <span className="axis">CC</span> per
537
+ video.
538
+ </li>
539
+ <li>
540
+ Mark each <span className="pass">PASS</span> / <span className="fail">FAIL</span>,
541
+ and add a one-line note whenever you FAIL something — especially <em>why</em>.
542
+ </li>
543
+ <li>Rate independently, and flag anything a rule here doesn't clearly cover.</li>
544
+ </ul>
545
+ </section>
546
+
547
+ {children}
548
+ </main>
549
+ </div>
550
+ );
551
+ }
frontend/src/pages/GuidelineOverlay.jsx ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import React, { useEffect } from "react";
3
+ import GuidelineContent from "./GuidelineContent";
4
+
5
+ // Read-only guideline reference, opened from EvaluationPage without leaving
6
+ // the annotation screen - EvaluationPage stays mounted underneath (its
7
+ // in-progress answers, current video, and playback state are untouched), so
8
+ // this is purely a full-screen overlay, not a stage/navigation change. No
9
+ // name field or "Continue" button here, unlike GuidelinePage - the annotator
10
+ // already passed training; this is just the same reference content on demand.
11
+ export default function GuidelineOverlay({ onClose }) {
12
+ useEffect(() => {
13
+ const previousOverflow = document.body.style.overflow;
14
+ document.body.style.overflow = "hidden";
15
+
16
+ const handleKeyDown = (e) => {
17
+ if (e.key === "Escape") onClose();
18
+ };
19
+ window.addEventListener("keydown", handleKeyDown);
20
+
21
+ return () => {
22
+ document.body.style.overflow = previousOverflow;
23
+ window.removeEventListener("keydown", handleKeyDown);
24
+ };
25
+ }, [onClose]);
26
+
27
+ return (
28
+ <div className="t2av-shell guideline-overlay" role="dialog" aria-modal="true" aria-label="Annotation guidelines">
29
+ <button
30
+ type="button"
31
+ className="guideline-overlay-close"
32
+ onClick={onClose}
33
+ aria-label="Close guidelines"
34
+ >
35
+ ×
36
+ </button>
37
+ <GuidelineContent />
38
+ </div>
39
+ );
40
+ }
frontend/src/pages/GuidelinePage.jsx CHANGED
@@ -1,34 +1,8 @@
1
 
2
- import React, { useEffect, useRef, useState } from "react";
3
-
4
- // Transcribes T2AV_guideline_final_updated.html sections s0-s4 and s6
5
- // (section s5, "Worked example", moves to the Training page instead).
6
- const SECTIONS = [
7
- { id: "s0", num: "00", label: "What you evaluate" },
8
- { id: "s1", num: "01", label: "Events" },
9
- { id: "s2", num: "02", label: "The six axes" },
10
- { id: "s3", num: "03", label: "Hierarchy & order" },
11
- { id: "s4", num: "04", label: "Axis rules" },
12
- { id: "s6", num: "05", label: "Recording ratings" }
13
- ];
14
 
15
  export default function GuidelinePage({ annotatorName, onChangeAnnotatorName, onContinue, apiBaseUrl }) {
16
- const [activeSection, setActiveSection] = useState("s0");
17
- const sectionRefs = useRef({});
18
-
19
- useEffect(() => {
20
- const observer = new IntersectionObserver(
21
- (entries) => {
22
- entries.forEach((entry) => {
23
- if (entry.isIntersecting) setActiveSection(entry.target.id);
24
- });
25
- },
26
- { rootMargin: "-20% 0px -70% 0px" }
27
- );
28
- Object.values(sectionRefs.current).forEach((el) => el && observer.observe(el));
29
- return () => observer.disconnect();
30
- }, []);
31
-
32
  const nameIsValid = annotatorName.trim().length > 0;
33
 
34
  // Lightweight name-collision guard: there's no login, so two different
@@ -71,557 +45,49 @@ export default function GuidelinePage({ annotatorName, onChangeAnnotatorName, on
71
 
72
  return (
73
  <div className="t2av-shell">
74
- <div className="g-wrap">
75
- <aside className="g-aside">
76
- <div className="g-brand">
77
- T2AV <span>Evaluation</span>
78
- </div>
79
- <div className="g-sub">Human annotation guideline</div>
80
- <nav>
81
- {SECTIONS.map((s) => (
82
- <a
83
- key={s.id}
84
- href={`#${s.id}`}
85
- className={activeSection === s.id ? "active" : ""}
86
- onClick={(e) => {
87
- e.preventDefault();
88
- sectionRefs.current[s.id]?.scrollIntoView({ behavior: "smooth" });
89
- }}
90
- >
91
- <span className="n">{s.num}</span>
92
- {s.label}
93
- </a>
94
- ))}
95
- </nav>
96
- </aside>
97
-
98
- <main className="g-main">
99
- <header className="g-top">
100
- <div className="eyebrow-g">Human annotation protocol</div>
101
- <h1>
102
- Does the generated video
103
- <br />
104
- do what the prompt says?
105
- </h1>
106
- <p className="g-lede">
107
- You'll watch text-to-audio-video clips and judge each one along six axes. The
108
- models are usually fine at <em>what</em> happens — the hard parts are temporal
109
- order and counting.
110
- </p>
111
- <div className="g-meta">
112
- <span className="tag-chip">100 videos</span>
113
- <span className="tag-chip">~1–2 min each</span>
114
- <span className="tag-chip">PASS / FAIL per axis</span>
115
- </div>
116
- </header>
117
-
118
- <section id="s0" ref={(el) => (sectionRefs.current.s0 = el)} className="g-section">
119
- <h2>
120
- <span className="num">00</span>What you're evaluating
121
- </h2>
122
- <p>These generators reliably struggle with two things:</p>
123
- <ul>
124
- <li>
125
- <strong>Temporal order</strong> — prompt: <em>"Say 'Hi', then wave your right
126
- hand."</em> There's a required order (speech before gesture), but the video may
127
- do them in the wrong order.
128
- </li>
129
- <li>
130
- <strong>Counting</strong> — prompt: <em>"Clap exactly twice."</em> The model may
131
- clap once or three times, failing the count requirement.
132
- </li>
133
- </ul>
134
- <p>
135
- For each clip, you decide <span className="pass">PASS</span> /{" "}
136
- <span className="fail">FAIL</span> on six axes, following the rules below.
137
- </p>
138
- </section>
139
-
140
- <section id="s1" ref={(el) => (sectionRefs.current.s1 = el)} className="g-section">
141
- <h2>
142
- <span className="num">01</span>Event and event types
143
- </h2>
144
- <p>
145
- An <strong>event</strong> is a prompt-specified unit that may contain an audio
146
- component, a visual action or state, or both. There are three types:
147
- </p>
148
- <table>
149
- <thead>
150
- <tr>
151
- <th style={{ width: 150 }}>Type</th>
152
- <th>Meaning</th>
153
- <th style={{ width: 170 }}>Example</th>
154
- </tr>
155
- </thead>
156
- <tbody>
157
- <tr>
158
- <td>
159
- <strong>Speech</strong>
160
- </td>
161
- <td>spoken audio + the corresponding visible speaking behavior</td>
162
- <td className="muted">saying "help"</td>
163
- </tr>
164
- <tr>
165
- <td>
166
- <strong>Silent action</strong>
167
- </td>
168
- <td>a visual action with no required sound</td>
169
- <td className="muted">a thumbs-up</td>
170
- </tr>
171
- <tr>
172
- <td>
173
- <strong>Sounding action</strong>
174
- </td>
175
- <td>a visual action + its corresponding sound</td>
176
- <td className="muted">slapping the thigh</td>
177
- </tr>
178
- </tbody>
179
- </table>
180
- </section>
181
-
182
- <section id="s2" ref={(el) => (sectionRefs.current.s2 = el)} className="g-section">
183
- <h2>
184
- <span className="num">02</span>The six evaluation axes
185
- </h2>
186
- <table>
187
- <thead>
188
- <tr>
189
- <th style={{ width: 130 }}>Axis</th>
190
- <th>Definition</th>
191
- </tr>
192
- </thead>
193
- <tbody>
194
- <tr>
195
- <td>
196
- <span className="axis">A</span>
197
- </td>
198
- <td>
199
- <strong>Audio Event Correctness.</strong> Whether the required speech or
200
- sound event is present and correct in the audio.
201
- </td>
202
- </tr>
203
- <tr>
204
- <td>
205
- <span className="axis">V</span>
206
- </td>
207
- <td>
208
- <strong>Visual Event Correctness.</strong> Whether the required visual event
209
- is present and correct. For speech events this evaluates visible speaking
210
- behavior (mouth/lip motion), <em>not</em> the spoken content.
211
- </td>
212
- </tr>
213
- <tr>
214
- <td>
215
- <span className="axis">AVB</span>
216
- </td>
217
- <td>
218
- <strong>Audio–Visual Binding.</strong> Whether the audio and visual
219
- components <em>within the same event</em> are correctly synchronized and
220
- causally aligned.
221
- </td>
222
- </tr>
223
- <tr>
224
- <td>
225
- <span className="axis">TC_REL</span>
226
- </td>
227
- <td>
228
- <strong>Temporal Relation.</strong> Whether the specified relationship{" "}
229
- <em>between events</em> holds — synchronization, order, and absolute timing.
230
- </td>
231
- </tr>
232
- <tr>
233
- <td>
234
- <span className="axis">TC_COUNT</span>
235
- </td>
236
- <td>
237
- <strong>Temporal Count.</strong> Whether each required event occurs the
238
- specified number of times, with no missing or extra occurrences.
239
- </td>
240
- </tr>
241
- <tr>
242
- <td>
243
- <span className="axis">CC</span>
244
- </td>
245
- <td>
246
- <strong>Constraint Compliance.</strong> Non-core constraints: scene, camera,
247
- subject count, no subtitles/BGM, no extra actions or sounds, post-event
248
- stillness when required.
249
- </td>
250
- </tr>
251
- </tbody>
252
- </table>
253
- </section>
254
-
255
- <section id="s3" ref={(el) => (sectionRefs.current.s3 = el)} className="g-section">
256
- <h2>
257
- <span className="num">03</span>Hierarchy and order
258
- </h2>
259
- <div className="flow">
260
- <b>A</b> / <b>V</b> &nbsp;→&nbsp; <b>AVB</b> &nbsp;→&nbsp; <b>TC_REL</b> and{" "}
261
- <b>TC_COUNT</b>
262
- </div>
263
- <ul>
264
- <li>
265
- <span className="axis">A</span> and <span className="axis">V</span> are
266
- evaluated first.
267
- </li>
268
- <li>
269
- <span className="axis">AVB</span> applies only to events with{" "}
270
- <strong>both</strong> audio and visual components; it{" "}
271
- <span className="fail">FAILS</span> if either component fails.
272
- </li>
273
- <li>
274
- If any event required for the judgment fails A, V, or its applicable AVB,{" "}
275
- <span className="axis">TC_REL</span> <span className="fail">FAILS</span>, and{" "}
276
- <span className="axis">TC_COUNT</span> is recorded as{" "}
277
- <span className="fail">FAIL</span> with a count of <strong>0</strong> for that
278
- failed event.
279
- </li>
280
- </ul>
281
- <h3>Recommended order per video</h3>
282
- <ul>
283
- <li>Identify each required event from the prompt.</li>
284
- <li>
285
- Evaluate <span className="axis">A</span> and <span className="axis">V</span>{" "}
286
- (per event).
287
- </li>
288
- <li>
289
- Apply the hierarchy → <span className="axis">AVB</span> (per audio+visual event).
290
- </li>
291
- <li>
292
- Evaluate <span className="axis">TC_REL</span>, then{" "}
293
- <span className="axis">TC_COUNT</span>.
294
- </li>
295
- <li>
296
- Evaluate <span className="axis">CC</span> for remaining constraints and any
297
- unrelated extra events.
298
- </li>
299
- </ul>
300
- </section>
301
-
302
- <section id="s4" ref={(el) => (sectionRefs.current.s4 = el)} className="g-section">
303
- <h2>
304
- <span className="num">04</span>Axis-by-axis rules
305
- </h2>
306
-
307
- <h3>
308
- <span className="axis">A</span> &nbsp;Audio event correctness
309
- </h3>
310
- <p>
311
- <span className="pass">PASS</span> when every required speech/sound component is
312
- present, clear, and correct. <span className="fail">FAIL</span> when a required
313
- audio event is missing, the content or sound type is wrong, or the audio is too
314
- unclear to identify.
315
- </p>
316
- <table>
317
- <thead>
318
- <tr>
319
- <th>Situation</th>
320
- <th style={{ width: 190 }}>Verdict</th>
321
- </tr>
322
- </thead>
323
- <tbody>
324
- <tr>
325
- <td>Required speech is "help", but the person says "it helps"</td>
326
- <td>
327
- <span className="fail">A FAIL</span>
328
- </td>
329
- </tr>
330
- <tr>
331
- <td>Required speech correct, followed by a separate extra speech or cough</td>
332
- <td>
333
- <span className="pass">A PASS</span> &nbsp;<span className="fail">CC FAIL</span>
334
- </td>
335
- </tr>
336
- <tr>
337
- <td>A sounding action is visible, but its required sound is absent</td>
338
- <td>
339
- <span className="fail">A FAIL</span> &nbsp;<span className="pass">V PASS</span>
340
- </td>
341
- </tr>
342
- </tbody>
343
- </table>
344
-
345
- <div className="callout">
346
- <span className="k">A splits into two separate questions</span>
347
- The A judgment answers two things at once. Keep them apart — they have different
348
- bars.
349
- <br />
350
- <strong>(1) Audible?</strong> — is the sound perceptible at all? &nbsp;{" "}
351
- <strong>(2) Correct identity?</strong> — is it the right <em>kind</em> of sound?
352
  </div>
353
-
354
- <h4>1&nbsp; Audibility — judge leniently</h4>
355
- <p>
356
- A sound counts as audible if it is{" "}
357
- <strong>perceptible above the background at normal playback volume</strong>. Do
358
- not <span className="fail">FAIL</span> a sound just because it is quiet, soft, or
359
- faint. A soft clap, a light tap, or a muffled impact still counts as audible. Only
360
- mark it missing when you cannot perceive the required sound at all.
361
- </p>
362
-
363
- <h4>2&nbsp; Identity — lenient inside a sound family, strict across families</h4>
364
- <p>
365
- Judge the sound <em>from the audio</em>. Percussive impact sounds — clap,
366
- thigh-slap, tap, thud, pat — form <strong>one acoustic family</strong> that
367
- genuinely overlaps and is heard differently by different people. Within that
368
- family, judge <span className="pass">leniently</span>: if the sound is a plausible
369
- instance of the requested impact, <span className="pass">A PASS</span>. Reserve{" "}
370
- <span className="fail">FAIL</span> for a <strong>clear cross-family mismatch</strong>{" "}
371
- — where the audio belongs to a different category than requested.
372
- </p>
373
- <table>
374
- <thead>
375
- <tr>
376
- <th>Situation</th>
377
- <th style={{ width: 190 }}>Verdict</th>
378
- </tr>
379
- </thead>
380
- <tbody>
381
- <tr>
382
- <td>Required "clap", audio is a soft/ambiguous impact that could be a clap or a thigh-slap</td>
383
- <td>
384
- <span className="pass">A PASS</span>
385
- </td>
386
- </tr>
387
- <tr>
388
- <td>Required an impact sound (clap/slap), but the audio is speech, or silence</td>
389
- <td>
390
- <span className="fail">A FAIL</span>
391
- </td>
392
- </tr>
393
- <tr>
394
- <td>Required speech, but the audio is a non-vocal sound</td>
395
- <td>
396
- <span className="fail">A FAIL</span>
397
- </td>
398
- </tr>
399
- </tbody>
400
- </table>
401
- <p className="muted">
402
- Leniency inside the family is safe: a sound that is bound to the wrong visible
403
- motion is still caught downstream by AVB, and a wrong action is caught by V. A does
404
- not need to do their job.
405
- </p>
406
-
407
- <h3>
408
- <span className="axis">V</span> &nbsp;Visual event correctness
409
- </h3>
410
- <p>
411
- <span className="pass">PASS</span> when every required visual component is
412
- present, visible, and correct in actor, action, side, body part, object, and
413
- contact target. <span className="fail">FAIL</span> when it's missing; the wrong
414
- actor/side/body part/object/action is used; occlusion, cropping, or blur prevents
415
- verification; or (for speech) the mouth movement is absent or inconsistent with the
416
- required utterance.
417
- </p>
418
- <table>
419
- <thead>
420
- <tr>
421
- <th>Situation</th>
422
- <th style={{ width: 190 }}>Verdict</th>
423
- </tr>
424
- </thead>
425
- <tbody>
426
- <tr>
427
- <td>Required visual event correct and clearly visible, but an unrelated action is added</td>
428
- <td>
429
- <span className="pass">V PASS</span> &nbsp;<span className="fail">CC FAIL</span>
430
- </td>
431
- </tr>
432
- <tr>
433
- <td>The extra action disrupts, replaces, or hides the required visual event</td>
434
- <td>
435
- <span className="fail">V FAIL</span> &nbsp;<span className="fail">CC FAIL</span>
436
- </td>
437
- </tr>
438
- <tr>
439
- <td>Target action performed by the wrong actor or wrong body part</td>
440
- <td>
441
- <span className="fail">V FAIL</span>
442
- </td>
443
- </tr>
444
- <tr>
445
- <td>Actor appears to speak, but lip movement doesn't match the utterance</td>
446
- <td>
447
- <span className="fail">V FAIL</span>
448
- </td>
449
- </tr>
450
- <tr>
451
- <td>Lip movement matches, but the spoken audio is incorrect</td>
452
- <td>
453
- <span className="pass">V PASS</span> &nbsp;<span className="fail">A FAIL</span>
454
- </td>
455
- </tr>
456
- </tbody>
457
- </table>
458
-
459
- <h3>
460
- <span className="axis">AVB</span> &nbsp;Audio–visual binding
461
- </h3>
462
- <p>
463
- Alignment of the audio and visual components <strong>within one event</strong>.{" "}
464
- <span className="pass">PASS</span> when the sound is synchronized with the
465
- corresponding visible action, impact, or mouth movement.{" "}
466
- <span className="fail">FAIL</span> when A or V fails, or the two are clearly
467
- misaligned in time.
468
- </p>
469
- <div className="callout">
470
- <span className="k">Note</span>Temporal relations <em>between different events</em>{" "}
471
- are handled under TC_REL, not AVB.
472
- </div>
473
-
474
- <h3>
475
- <span className="axis">TC_REL</span> &nbsp;Temporal relation
476
- </h3>
477
- <p>
478
- Compare the <strong>defined start times</strong> of the required events. If any
479
- required event fails A, V, or AVB → <span className="fail">TC_REL FAIL</span>.
480
- </p>
481
- <table>
482
- <thead>
483
- <tr>
484
- <th style={{ width: 230 }}>Event type</th>
485
- <th>Start time</th>
486
- </tr>
487
- </thead>
488
- <tbody>
489
- <tr>
490
- <td>Speech / sound</td>
491
- <td>when the target audio begins</td>
492
- </tr>
493
- <tr>
494
- <td>Held pose or state</td>
495
- <td>when the pose/state first becomes clearly established</td>
496
- </tr>
497
- <tr>
498
- <td>Contact or impact (e.g. a slap)</td>
499
- <td>the actual contact/impact moment</td>
500
- </tr>
501
- <tr>
502
- <td>Other action</td>
503
- <td>when the required action visibly begins</td>
504
- </tr>
505
- </tbody>
506
- </table>
507
- <ul>
508
- <li>
509
- <strong>Synchronization</strong> — <span className="pass">PASS</span> when events
510
- appear to begin at the same moment. Simple overlap is not enough.{" "}
511
- <span className="muted">(Pose held for a while, speech begins later → Sync FAIL.)</span>
512
- </li>
513
- <li>
514
- <strong>Order</strong> — <span className="pass">PASS</span> when events clearly
515
- begin in the required order; overlap is allowed.{" "}
516
- <span className="muted">(Simultaneous start, wrong order, or indistinguishable order → Order FAIL.)</span>
517
- </li>
518
- <li>
519
- <strong>Absolute timing</strong> — <span className="pass">PASS</span> when the
520
- event starts within about <strong>±0.3 s</strong> of the required timestamp.
521
- </li>
522
- </ul>
523
-
524
- <h3>
525
- <span className="axis">TC_COUNT</span> &nbsp;Temporal count
526
- </h3>
527
- <p>
528
- <span className="pass">PASS</span> when every required event occurs exactly the
529
- specified number of times. If no count is given, expect <strong>one</strong>. If
530
- any required event fails A, V, or its AVB → <span className="fail">TC_COUNT FAIL</span>.
531
- </p>
532
- <ul>
533
- <li>A continuously held pose counts as <strong>one</strong> occurrence.</li>
534
- <li>
535
- Releasing and forming the pose again creates <strong>another</strong> occurrence.
536
- More generally, if the pose is visibly performed again as a distinct
537
- repetition—even without a complete release—it counts as another occurrence.
538
- </li>
539
- <li>Each distinct utterance, sound, contact, or action repetition counts separately.</li>
540
- </ul>
541
- <div className="callout">
542
- <span className="k">Don't double-count</span>The same repetition error should not
543
- also be logged as an unrelated extra action under CC.
544
- </div>
545
-
546
- <h3>
547
- <span className="axis">CC</span> &nbsp;Constraint compliance
548
- </h3>
549
- <p>
550
- Everything not already covered above: scene and camera conditions; number and
551
- identity of subjects; initial pose and required visibility; absence of subtitles,
552
- on-screen text, or background music; absence of additional deliberate actions,
553
- speech, or salient sounds; and post-event stillness <em>only when explicitly
554
- required</em>.
555
- </p>
556
- <p className="muted">
557
- Allowed natural motion: blinking, breathing, minor posture adjustment, necessary
558
- preparation, and natural reset motion.
559
- </p>
560
- </section>
561
-
562
- <section id="s6" ref={(el) => (sectionRefs.current.s6 = el)} className="g-section">
563
- <h2>
564
- <span className="num">05</span>Recording your ratings
565
- </h2>
566
- <ul>
567
- <li>
568
- <strong>Granularity:</strong> record <span className="axis">A</span> and{" "}
569
- <span className="axis">V</span> per event; <span className="axis">AVB</span> per
570
- audio+visual event; <span className="axis">TC_COUNT</span> per event;{" "}
571
- <span className="axis">TC_REL</span> / <span className="axis">CC</span> per
572
- video.
573
- </li>
574
- <li>
575
- Mark each <span className="pass">PASS</span> / <span className="fail">FAIL</span>,
576
- and add a one-line note whenever you FAIL something — especially <em>why</em>.
577
- </li>
578
- <li>Rate independently, and flag anything a rule here doesn't clearly cover.</li>
579
- </ul>
580
- </section>
581
-
582
- <div className="start-panel">
583
- <label className="name-field">
584
- Annotator name
585
- <input
586
- value={annotatorName}
587
- onChange={(e) => onChangeAnnotatorName(e.target.value)}
588
- placeholder="Your name"
589
- />
590
- </label>
591
- {!nameIsValid && <p className="muted validation-hint">Enter your name to continue.</p>}
592
-
593
- {collisionInfo && (
594
- <div className="callout collision-warning">
595
- <span className="k">Name already in use</span>
596
- An assignment already exists for &ldquo;{annotatorName.trim()}&rdquo; (
597
- {collisionInfo.completed} of {collisionInfo.total} completed).
598
- <label className="confirmation-row">
599
- <input
600
- type="checkbox"
601
- checked={collisionAcknowledged}
602
- onChange={(e) => setCollisionAcknowledged(e.target.checked)}
603
- />
604
- <span>Yes, this is my existing assignment — I'm continuing my own work.</span>
605
- </label>
606
- <p className="muted validation-hint">
607
- If you're a different person, please use a more specific name (e.g. add a last
608
- initial), so your work isn't merged with theirs.
609
- </p>
610
- </div>
611
- )}
612
-
613
- <button
614
- className="save-btn start-btn"
615
- disabled={!nameIsValid || hasUnacknowledgedCollision}
616
- onClick={onContinue}
617
- >
618
- Continue to Training
619
- </button>
620
- </div>
621
-
622
- <footer className="g-footer">T2AV human evaluation · internal annotation reference</footer>
623
- </main>
624
- </div>
625
  </div>
626
  );
627
  }
 
1
 
2
+ import React, { useEffect, useState } from "react";
3
+ import GuidelineContent from "./GuidelineContent";
 
 
 
 
 
 
 
 
 
 
4
 
5
  export default function GuidelinePage({ annotatorName, onChangeAnnotatorName, onContinue, apiBaseUrl }) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  const nameIsValid = annotatorName.trim().length > 0;
7
 
8
  // Lightweight name-collision guard: there's no login, so two different
 
45
 
46
  return (
47
  <div className="t2av-shell">
48
+ <GuidelineContent>
49
+ <div className="start-panel">
50
+ <label className="name-field">
51
+ Annotator name
52
+ <input
53
+ value={annotatorName}
54
+ onChange={(e) => onChangeAnnotatorName(e.target.value)}
55
+ placeholder="Your name"
56
+ />
57
+ </label>
58
+ {!nameIsValid && <p className="muted validation-hint">Enter your name to continue.</p>}
59
+
60
+ {collisionInfo && (
61
+ <div className="callout collision-warning">
62
+ <span className="k">Name already in use</span>
63
+ An assignment already exists for &ldquo;{annotatorName.trim()}&rdquo; (
64
+ {collisionInfo.completed} of {collisionInfo.total} completed).
65
+ <label className="confirmation-row">
66
+ <input
67
+ type="checkbox"
68
+ checked={collisionAcknowledged}
69
+ onChange={(e) => setCollisionAcknowledged(e.target.checked)}
70
+ />
71
+ <span>Yes, this is my existing assignment — I'm continuing my own work.</span>
72
+ </label>
73
+ <p className="muted validation-hint">
74
+ If you're a different person, please use a more specific name (e.g. add a last
75
+ initial), so your work isn't merged with theirs.
76
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  </div>
78
+ )}
79
+
80
+ <button
81
+ className="save-btn start-btn"
82
+ disabled={!nameIsValid || hasUnacknowledgedCollision}
83
+ onClick={onContinue}
84
+ >
85
+ Continue to Training
86
+ </button>
87
+ </div>
88
+
89
+ <footer className="g-footer">T2AV human evaluation · internal annotation reference</footer>
90
+ </GuidelineContent>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  </div>
92
  );
93
  }
frontend/src/styles.css CHANGED
@@ -201,6 +201,25 @@ input {
201
  .eval-progress {
202
  font-weight: 600;
203
  margin-bottom: 12px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  }
205
 
206
  .missing-videos-banner,
 
201
  .eval-progress {
202
  font-weight: 600;
203
  margin-bottom: 12px;
204
+ display: flex;
205
+ align-items: center;
206
+ justify-content: space-between;
207
+ gap: 12px;
208
+ flex-wrap: wrap;
209
+ }
210
+
211
+ .guideline-toggle-btn {
212
+ font-weight: 600;
213
+ font-size: 13px;
214
+ padding: 7px 14px;
215
+ border: 1px solid var(--line, #d9e2ec);
216
+ background: var(--surface, #fff);
217
+ color: var(--ink, #1f2933);
218
+ white-space: nowrap;
219
+ }
220
+
221
+ .guideline-toggle-btn:hover {
222
+ background: var(--paper, #f4f4f1);
223
  }
224
 
225
  .missing-videos-banner,
frontend/src/styles/guideline.css CHANGED
@@ -489,6 +489,39 @@
489
  color: var(--ink);
490
  }
491
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
492
  @media (max-width: 900px) {
493
  .g-wrap {
494
  grid-template-columns: 1fr;
 
489
  color: var(--ink);
490
  }
491
 
492
+ /* ---- guideline overlay (opened from the Evaluation page) ---- */
493
+ .guideline-overlay {
494
+ position: fixed;
495
+ inset: 0;
496
+ z-index: 1000;
497
+ overflow-y: auto;
498
+ }
499
+
500
+ .guideline-overlay-close {
501
+ position: fixed;
502
+ top: 18px;
503
+ right: 28px;
504
+ z-index: 1001;
505
+ width: 40px;
506
+ height: 40px;
507
+ padding: 0;
508
+ border-radius: 50%;
509
+ border: 1px solid var(--line);
510
+ background: var(--surface);
511
+ color: var(--ink);
512
+ font-size: 22px;
513
+ line-height: 1;
514
+ cursor: pointer;
515
+ display: flex;
516
+ align-items: center;
517
+ justify-content: center;
518
+ box-shadow: 0 2px 10px rgba(22, 32, 44, 0.18);
519
+ }
520
+
521
+ .guideline-overlay-close:hover {
522
+ background: var(--paper);
523
+ }
524
+
525
  @media (max-width: 900px) {
526
  .g-wrap {
527
  grid-template-columns: 1fr;