Skip to content

Commit 9ecab57

Browse files
committed
After each accepted substep, the active interaction and or... (+12 more)
- After each accepted substep, the active interaction and ordinal are now the primary next-action message. The authored step goal remains visible. - Protocol interactions now have a closed six-key schema: `target`, `gesture`, non-empty authored `instruction` and `hint`, `validator`, and `response`. There is no generic run... - Layout compilation now serializes a validated 44px minimum interaction frame for every clickable placement. Renderer-owned hit surfaces provide the durable interaction envelo... - Desktop scenes now own scrolling within their declared frame, while narrow layouts use normal document flow so the protocol remains reachable without viewport clipping. Act... - Student progress now autosaves to one versioned browser-session store after each settled accepted interaction. Reload restores the exact next action, declared scientific sta... - Removed the desktop-editor text-outline wrapper, its process adapter, and their dedicated unit and E2E tests. The repository-native normalizer remains the canonical SVG ga... - Scoped the broader asset-ownership defect in which complete result screens, observation panels, and instructional labels are flattened into equipment SVGs. The scope audit s... - The real Trypan Blue first step covers all five visible interactions, including hint pointer and keyboard use. - The real viability choice proves generic hint non-disclosure while preserving post-rejection scientific feedback. - Generator and YAML validation now share the interaction allow-list, reject partial or empty guidance, and reject literal select-identity or typed-value answer leaks using a... - Connected Playwright acceptance now advances through visible controls, proves the real production save record, reloads and resumes, completes the protocol, resets through the ... - Generated `test-results/` browser artifacts are outside source-lint scope, and the glyph-render browser test now removes its temporary compiled bundle even when browser startup... - The SVG migration scope records source assets, current YAML owners, semantic
1 parent cc4e4b0 commit 9ecab57

139 files changed

Lines changed: 7514 additions & 1363 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

content/protocols/cell_culture/cell_seeding_plate_setup/protocol.yaml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ steps:
4343
sequence:
4444
- target: calculation_2_8_ml
4545
gesture: select
46+
instruction: "Choose the calculation card that matches the displayed dilution equation and target volume."
47+
hint: "Use the visible stock concentration, target concentration, and 12 mL final volume to identify the card whose V1 is in milliliters."
4648
validator:
4749
preset: correct_choice
4850
response:
@@ -71,6 +73,8 @@ steps:
7173
sequence:
7274
- target: serological_pipette_pack
7375
gesture: click
76+
instruction: "Fit a fresh serological pipette for the media transfer."
77+
hint: "Use a sterile graduated pipette to draw the measured media first."
7478
validator: { preset: correct_target }
7579
response:
7680
scene_operations:
@@ -79,12 +83,16 @@ steps:
7983
state: { freshness: sterile }
8084
- target: serological_pipette
8185
gesture: click
86+
instruction: "Attach the serological pipette for the next transfer."
87+
hint: "Use the attached tool to perform the following source draw or dispense."
8288
validator:
8389
preset: correct_target
8490
response:
8591
scene_operations: []
8692
- target: media_bottle
8793
gesture: click
94+
instruction: "Draw 9.2 mL of media from the bottle."
95+
hint: "Use the measured media load for the receiving tube, flask, or reservoir in the next action."
8896
validator:
8997
preset: correct_target
9098
response:
@@ -100,6 +108,8 @@ steps:
100108
held_material_volume: 9.2
101109
- target: conical_tube_for_dilution
102110
gesture: click
111+
instruction: "Deliver 9.2 mL complete media into the dilution tube."
112+
hint: "Use the fresh pipette to receive the measured media before adding cells."
103113
validator:
104114
preset: correct_target
105115
response:
@@ -117,6 +127,8 @@ steps:
117127
freshness: used
118128
- target: serological_pipette_pack
119129
gesture: click
130+
instruction: "Fit a new serological pipette for the cell-suspension transfer."
131+
hint: "Switch to a fresh sterile pipette before drawing the calculated stock-cell volume."
120132
validator: { preset: correct_target }
121133
response:
122134
scene_operations:
@@ -125,6 +137,8 @@ steps:
125137
state: { freshness: sterile }
126138
- target: conical_15ml
127139
gesture: click
140+
instruction: "Draw 2.8 mL of cell suspension from the conical 15ml."
141+
hint: "Use the conical 15ml as the source, then carry this measured load to conical tube for dilution."
128142
validator:
129143
preset: correct_target
130144
response:
@@ -140,6 +154,8 @@ steps:
140154
held_material_volume: 2.8
141155
- target: conical_tube_for_dilution
142156
gesture: click
157+
instruction: "Deliver the calculated 2.8 mL cell suspension into the dilution tube."
158+
hint: "Add the stock-cell volume to the media already in the tube."
143159
validator:
144160
preset: correct_target
145161
response:
@@ -157,6 +173,8 @@ steps:
157173
freshness: used
158174
- target: conical_tube_for_dilution
159175
gesture: click
176+
instruction: "Gently invert the 12 mL dilution tube to mix the suspension."
177+
hint: "The media and cells are combined; invert without creating bubbles."
160178
validator:
161179
preset: correct_target
162180
response:
@@ -181,12 +199,16 @@ steps:
181199
sequence:
182200
- target: multichannel_pipette
183201
gesture: click
202+
instruction: "Attach the multichannel pipette for the next transfer."
203+
hint: "Use the attached tool to perform the following source draw or dispense."
184204
validator:
185205
preset: correct_target
186206
response:
187207
scene_operations: []
188208
- target: micropipette_tip_box
189209
gesture: click
210+
instruction: "Fit a fresh tip on the multichannel pipette."
211+
hint: "Use the fresh tip before touching the next source or receiving vessel."
190212
validator:
191213
preset: correct_target
192214
response:
@@ -197,6 +219,8 @@ steps:
197219
tip_status: fresh
198220
- target: multichannel_pipette
199221
gesture: adjust
222+
instruction: "Set the multichannel pipette to 100 microL per channel for each plate column."
223+
hint: "The 100 microL set point delivers the required volume to every well in one 8-well column and keeps the seeding concentration consistent."
200224
validator:
201225
preset: target_with_value
202226
value:
@@ -209,6 +233,8 @@ steps:
209233
set_volume: 100
210234
- target: conical_tube_for_dilution
211235
gesture: click
236+
instruction: "Transfer the prepared cell suspension into the reagent reservoir."
237+
hint: "Empty the dilution tube completely so the reservoir can supply each plate column."
212238
validator:
213239
preset: correct_target
214240
response:
@@ -225,6 +251,8 @@ steps:
225251
material_volume: 12
226252
- target: reagent_reservoir
227253
gesture: click
254+
instruction: "Draw 100 microL of cell suspension for plate column 1."
255+
hint: "Use the reservoir as the source, then deliver this load into plate column 1."
228256
validator:
229257
preset: correct_target
230258
response:
@@ -240,6 +268,8 @@ steps:
240268
held_material_volume: 100
241269
- target: well_plate_96.col_1
242270
gesture: click
271+
instruction: "Dispense 100 microL of cell suspension into plate column 1."
272+
hint: "Align all eight tips with column 1; empty the loaded cell suspension into the wells."
243273
validator:
244274
preset: correct_target
245275
response:
@@ -256,6 +286,8 @@ steps:
256286
held_material_volume: 0
257287
- target: reagent_reservoir
258288
gesture: click
289+
instruction: "Draw 100 microL of cell suspension for plate column 2."
290+
hint: "Use the reservoir as the source, then deliver this load into plate column 2."
259291
validator:
260292
preset: correct_target
261293
response:
@@ -271,6 +303,8 @@ steps:
271303
held_material_volume: 100
272304
- target: well_plate_96.col_2
273305
gesture: click
306+
instruction: "Dispense 100 microL of cell suspension into plate column 2."
307+
hint: "Align all eight tips with column 2; empty the loaded cell suspension into the wells."
274308
validator:
275309
preset: correct_target
276310
response:
@@ -287,6 +321,8 @@ steps:
287321
held_material_volume: 0
288322
- target: reagent_reservoir
289323
gesture: click
324+
instruction: "Draw 100 microL of cell suspension for plate column 3."
325+
hint: "Use the reservoir as the source, then deliver this load into plate column 3."
290326
validator:
291327
preset: correct_target
292328
response:
@@ -302,6 +338,8 @@ steps:
302338
held_material_volume: 100
303339
- target: well_plate_96.col_3
304340
gesture: click
341+
instruction: "Dispense 100 microL of cell suspension into plate column 3."
342+
hint: "Align all eight tips with column 3; empty the loaded cell suspension into the wells."
305343
validator:
306344
preset: correct_target
307345
response:
@@ -318,6 +356,8 @@ steps:
318356
held_material_volume: 0
319357
- target: reagent_reservoir
320358
gesture: click
359+
instruction: "Draw 100 microL of cell suspension for plate column 4."
360+
hint: "Use the reservoir as the source, then deliver this load into plate column 4."
321361
validator:
322362
preset: correct_target
323363
response:
@@ -333,6 +373,8 @@ steps:
333373
held_material_volume: 100
334374
- target: well_plate_96.col_4
335375
gesture: click
376+
instruction: "Dispense 100 microL of cell suspension into plate column 4."
377+
hint: "Align all eight tips with column 4; empty the loaded cell suspension into the wells."
336378
validator:
337379
preset: correct_target
338380
response:
@@ -349,6 +391,8 @@ steps:
349391
held_material_volume: 0
350392
- target: reagent_reservoir
351393
gesture: click
394+
instruction: "Draw 100 microL of cell suspension for plate column 5."
395+
hint: "Use the reservoir as the source, then deliver this load into plate column 5."
352396
validator:
353397
preset: correct_target
354398
response:
@@ -364,6 +408,8 @@ steps:
364408
held_material_volume: 100
365409
- target: well_plate_96.col_5
366410
gesture: click
411+
instruction: "Dispense 100 microL of cell suspension into plate column 5."
412+
hint: "Align all eight tips with column 5; empty the loaded cell suspension into the wells."
367413
validator:
368414
preset: correct_target
369415
response:
@@ -380,6 +426,8 @@ steps:
380426
held_material_volume: 0
381427
- target: reagent_reservoir
382428
gesture: click
429+
instruction: "Draw 100 microL of cell suspension for plate column 6."
430+
hint: "Use the reservoir as the source, then deliver this load into plate column 6."
383431
validator:
384432
preset: correct_target
385433
response:
@@ -395,6 +443,8 @@ steps:
395443
held_material_volume: 100
396444
- target: well_plate_96.col_6
397445
gesture: click
446+
instruction: "Dispense 100 microL of cell suspension into plate column 6."
447+
hint: "Align all eight tips with column 6; empty the loaded cell suspension into the wells."
398448
validator:
399449
preset: correct_target
400450
response:
@@ -411,6 +461,8 @@ steps:
411461
held_material_volume: 0
412462
- target: reagent_reservoir
413463
gesture: click
464+
instruction: "Draw 100 microL of cell suspension for plate column 7."
465+
hint: "Use the reservoir as the source, then deliver this load into plate column 7."
414466
validator:
415467
preset: correct_target
416468
response:
@@ -426,6 +478,8 @@ steps:
426478
held_material_volume: 100
427479
- target: well_plate_96.col_7
428480
gesture: click
481+
instruction: "Dispense 100 microL of cell suspension into plate column 7."
482+
hint: "Align all eight tips with column 7; empty the loaded cell suspension into the wells."
429483
validator:
430484
preset: correct_target
431485
response:
@@ -442,6 +496,8 @@ steps:
442496
held_material_volume: 0
443497
- target: reagent_reservoir
444498
gesture: click
499+
instruction: "Draw 100 microL of cell suspension for plate column 8."
500+
hint: "Use the reservoir as the source, then deliver this load into plate column 8."
445501
validator:
446502
preset: correct_target
447503
response:
@@ -457,6 +513,8 @@ steps:
457513
held_material_volume: 100
458514
- target: well_plate_96.col_8
459515
gesture: click
516+
instruction: "Dispense 100 microL of cell suspension into plate column 8."
517+
hint: "Align all eight tips with column 8; empty the loaded cell suspension into the wells."
460518
validator:
461519
preset: correct_target
462520
response:
@@ -473,6 +531,8 @@ steps:
473531
held_material_volume: 0
474532
- target: reagent_reservoir
475533
gesture: click
534+
instruction: "Draw 100 microL of cell suspension for plate column 9."
535+
hint: "Use the reservoir as the source, then deliver this load into plate column 9."
476536
validator:
477537
preset: correct_target
478538
response:
@@ -488,6 +548,8 @@ steps:
488548
held_material_volume: 100
489549
- target: well_plate_96.col_9
490550
gesture: click
551+
instruction: "Dispense 100 microL of cell suspension into plate column 9."
552+
hint: "Align all eight tips with column 9; empty the loaded cell suspension into the wells."
491553
validator:
492554
preset: correct_target
493555
response:
@@ -504,6 +566,8 @@ steps:
504566
held_material_volume: 0
505567
- target: reagent_reservoir
506568
gesture: click
569+
instruction: "Draw 100 microL of cell suspension for plate column 10."
570+
hint: "Use the reservoir as the source, then deliver this load into plate column 10."
507571
validator:
508572
preset: correct_target
509573
response:
@@ -519,6 +583,8 @@ steps:
519583
held_material_volume: 100
520584
- target: well_plate_96.col_10
521585
gesture: click
586+
instruction: "Dispense 100 microL of cell suspension into plate column 10."
587+
hint: "Align all eight tips with column 10; empty the loaded cell suspension into the wells."
522588
validator:
523589
preset: correct_target
524590
response:
@@ -535,6 +601,8 @@ steps:
535601
held_material_volume: 0
536602
- target: reagent_reservoir
537603
gesture: click
604+
instruction: "Draw 100 microL of cell suspension for plate column 11."
605+
hint: "Use the reservoir as the source, then deliver this load into plate column 11."
538606
validator:
539607
preset: correct_target
540608
response:
@@ -550,6 +618,8 @@ steps:
550618
held_material_volume: 100
551619
- target: well_plate_96.col_11
552620
gesture: click
621+
instruction: "Dispense 100 microL of cell suspension into plate column 11."
622+
hint: "Align all eight tips with column 11; empty the loaded cell suspension into the wells."
553623
validator:
554624
preset: correct_target
555625
response:
@@ -566,6 +636,8 @@ steps:
566636
held_material_volume: 0
567637
- target: reagent_reservoir
568638
gesture: click
639+
instruction: "Draw 100 microL of cell suspension for plate column 12."
640+
hint: "Use the reservoir as the source, then deliver this load into plate column 12."
569641
validator:
570642
preset: correct_target
571643
response:
@@ -581,6 +653,8 @@ steps:
581653
held_material_volume: 100
582654
- target: well_plate_96.col_12
583655
gesture: click
656+
instruction: "Dispense 100 microL of cell suspension into plate column 12."
657+
hint: "Align all eight tips with column 12; empty the loaded cell suspension into the wells."
584658
validator:
585659
preset: correct_target
586660
response:
@@ -610,12 +684,16 @@ steps:
610684
sequence:
611685
- target: well_plate_96
612686
gesture: click
687+
instruction: "Pick up the completed plate for incubation."
688+
hint: "Keep the treatment map level while moving the plate into the incubator."
613689
validator:
614690
preset: correct_target
615691
response:
616692
scene_operations: []
617693
- target: incubator
618694
gesture: click
695+
instruction: "Place the prepared vessel in the incubator and start the overnight incubation (24 hours)."
696+
hint: "Allow the authored overnight incubation (24 hours) to complete before continuing the culture workflow."
619697
validator:
620698
preset: correct_target
621699
response:

0 commit comments

Comments
 (0)