@plasius/learning 0.2.10 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -461,6 +461,12 @@ declare const BEACON_BOT_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
461
461
  * movement remain unavailable until the exact reference build is bench tested.
462
462
  */
463
463
  declare const SERVO_CREATURE_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
464
+ /**
465
+ * First Dance Rover robotics mission. Learners choreograph a bounded rover
466
+ * sequence in the private simulator. Motor power, firmware export and physical
467
+ * movement remain unavailable until the exact reference build is bench tested.
468
+ */
469
+ declare const DANCE_ROVER_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
464
470
  /**
465
471
  * Original first mission for Rescue Crew Commander. The learner arranges a
466
472
  * typed visual program and can inspect its synchronized JavaScript projection,
@@ -481,4 +487,4 @@ declare function validateLearningPath(path: LearningPathVersionV1): LearningVali
481
487
  /** Fail fast when a path is not safe to publish or consume. */
482
488
  declare function assertValidLearningPath(path: LearningPathVersionV1): void;
483
489
 
484
- export { type AssessmentCheckResultV1, type AssessmentCriterionV1, type AssessmentDimensionV1, type AssessmentResultV1, type AssessmentRubricV1, type AttemptEvidenceV1, BEACON_BOT_MISSION_ONE_AUTHORING_V1, type BadgeDefinitionV1, type CommercialStateV1, type CourseMaterialAudienceV1, type CourseMaterialKindV1, type CourseMaterialV1, type CourseMaterialsManifestV1, type FacilitatorMissionAuthoringV1, type GuardianAiConsentV1, type HardwareItemV1, type HardwareModeV1, type HardwareRequirementManifestV1, type HardwareVerificationStatusV1, JUNIOR_CODER_MISSION_STAGE_ORDER_V1, JUNIOR_CODER_MODULE_PRICE_V1_1, JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1, type LearnerMissionAuthoringV1, type LearningGoalV1, type LearningModuleVersionV1, type LearningPathVersionV1, type LearningValidationIssueV1, METEOR_SHIELD_MISSION_ONE_AUTHORING_V1, MISSION_AUTHORING_CONTRACT_VERSION_V1, type MissionAccessibilityAlternativeV1, type MissionArtifactKindV1, type MissionArtifactReferenceV1, type MissionAuthoringBundleV1, type MissionAuthoringGoalV1, type MissionAuthoringValidationIssueV1, type MissionEvidenceKindV1, type MissionEvidenceRequirementV1, type MissionEvidenceRetentionV1, type MissionFunctionParameterV1, type MissionFunctionReferenceV1, type MissionHardwareAcquisitionScopeV1, type MissionHardwareComponentDisclosureV1, type MissionHardwareDisclosureV1, type MissionInteractionModeV1, type MissionInteractionRequirementV1, type MissionPhysicalSafeguardsV1, type MissionReadinessCheckV1, type MissionRewardBindingV1, type MissionSideAdventureV1, type MissionStageCardV1, type MissionStageKindV1, type MissionV1, type ModuleAgentDefinitionV1, type ModuleAgentFeedbackV1, type ModuleAgentRoleV1, type ModuleCategoryV1, type ModuleEntitlementV1, type ModulePricingV1, type ModuleReferencePriceV1, PADDLE_PULSE_MISSION_ONE_AUTHORING_V1, PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1, type PublishedStaticProjectSnapshotV1, RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1, ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1, ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1, SERVO_CREATURE_MISSION_ONE_AUTHORING_V1, SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1, STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1, type ScoreBandV1, assertValidLearningPath, assertValidMissionAuthoringBundle, calculateAssessment, validateAssessmentRubric, validateLearningPath, validateMissionAuthoringBundle };
490
+ export { type AssessmentCheckResultV1, type AssessmentCriterionV1, type AssessmentDimensionV1, type AssessmentResultV1, type AssessmentRubricV1, type AttemptEvidenceV1, BEACON_BOT_MISSION_ONE_AUTHORING_V1, type BadgeDefinitionV1, type CommercialStateV1, type CourseMaterialAudienceV1, type CourseMaterialKindV1, type CourseMaterialV1, type CourseMaterialsManifestV1, DANCE_ROVER_MISSION_ONE_AUTHORING_V1, type FacilitatorMissionAuthoringV1, type GuardianAiConsentV1, type HardwareItemV1, type HardwareModeV1, type HardwareRequirementManifestV1, type HardwareVerificationStatusV1, JUNIOR_CODER_MISSION_STAGE_ORDER_V1, JUNIOR_CODER_MODULE_PRICE_V1_1, JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1, type LearnerMissionAuthoringV1, type LearningGoalV1, type LearningModuleVersionV1, type LearningPathVersionV1, type LearningValidationIssueV1, METEOR_SHIELD_MISSION_ONE_AUTHORING_V1, MISSION_AUTHORING_CONTRACT_VERSION_V1, type MissionAccessibilityAlternativeV1, type MissionArtifactKindV1, type MissionArtifactReferenceV1, type MissionAuthoringBundleV1, type MissionAuthoringGoalV1, type MissionAuthoringValidationIssueV1, type MissionEvidenceKindV1, type MissionEvidenceRequirementV1, type MissionEvidenceRetentionV1, type MissionFunctionParameterV1, type MissionFunctionReferenceV1, type MissionHardwareAcquisitionScopeV1, type MissionHardwareComponentDisclosureV1, type MissionHardwareDisclosureV1, type MissionInteractionModeV1, type MissionInteractionRequirementV1, type MissionPhysicalSafeguardsV1, type MissionReadinessCheckV1, type MissionRewardBindingV1, type MissionSideAdventureV1, type MissionStageCardV1, type MissionStageKindV1, type MissionV1, type ModuleAgentDefinitionV1, type ModuleAgentFeedbackV1, type ModuleAgentRoleV1, type ModuleCategoryV1, type ModuleEntitlementV1, type ModulePricingV1, type ModuleReferencePriceV1, PADDLE_PULSE_MISSION_ONE_AUTHORING_V1, PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1, type PublishedStaticProjectSnapshotV1, RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1, ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1, ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1, SERVO_CREATURE_MISSION_ONE_AUTHORING_V1, SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1, STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1, type ScoreBandV1, assertValidLearningPath, assertValidMissionAuthoringBundle, calculateAssessment, validateAssessmentRubric, validateLearningPath, validateMissionAuthoringBundle };
package/dist/index.d.ts CHANGED
@@ -461,6 +461,12 @@ declare const BEACON_BOT_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
461
461
  * movement remain unavailable until the exact reference build is bench tested.
462
462
  */
463
463
  declare const SERVO_CREATURE_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
464
+ /**
465
+ * First Dance Rover robotics mission. Learners choreograph a bounded rover
466
+ * sequence in the private simulator. Motor power, firmware export and physical
467
+ * movement remain unavailable until the exact reference build is bench tested.
468
+ */
469
+ declare const DANCE_ROVER_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
464
470
  /**
465
471
  * Original first mission for Rescue Crew Commander. The learner arranges a
466
472
  * typed visual program and can inspect its synchronized JavaScript projection,
@@ -481,4 +487,4 @@ declare function validateLearningPath(path: LearningPathVersionV1): LearningVali
481
487
  /** Fail fast when a path is not safe to publish or consume. */
482
488
  declare function assertValidLearningPath(path: LearningPathVersionV1): void;
483
489
 
484
- export { type AssessmentCheckResultV1, type AssessmentCriterionV1, type AssessmentDimensionV1, type AssessmentResultV1, type AssessmentRubricV1, type AttemptEvidenceV1, BEACON_BOT_MISSION_ONE_AUTHORING_V1, type BadgeDefinitionV1, type CommercialStateV1, type CourseMaterialAudienceV1, type CourseMaterialKindV1, type CourseMaterialV1, type CourseMaterialsManifestV1, type FacilitatorMissionAuthoringV1, type GuardianAiConsentV1, type HardwareItemV1, type HardwareModeV1, type HardwareRequirementManifestV1, type HardwareVerificationStatusV1, JUNIOR_CODER_MISSION_STAGE_ORDER_V1, JUNIOR_CODER_MODULE_PRICE_V1_1, JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1, type LearnerMissionAuthoringV1, type LearningGoalV1, type LearningModuleVersionV1, type LearningPathVersionV1, type LearningValidationIssueV1, METEOR_SHIELD_MISSION_ONE_AUTHORING_V1, MISSION_AUTHORING_CONTRACT_VERSION_V1, type MissionAccessibilityAlternativeV1, type MissionArtifactKindV1, type MissionArtifactReferenceV1, type MissionAuthoringBundleV1, type MissionAuthoringGoalV1, type MissionAuthoringValidationIssueV1, type MissionEvidenceKindV1, type MissionEvidenceRequirementV1, type MissionEvidenceRetentionV1, type MissionFunctionParameterV1, type MissionFunctionReferenceV1, type MissionHardwareAcquisitionScopeV1, type MissionHardwareComponentDisclosureV1, type MissionHardwareDisclosureV1, type MissionInteractionModeV1, type MissionInteractionRequirementV1, type MissionPhysicalSafeguardsV1, type MissionReadinessCheckV1, type MissionRewardBindingV1, type MissionSideAdventureV1, type MissionStageCardV1, type MissionStageKindV1, type MissionV1, type ModuleAgentDefinitionV1, type ModuleAgentFeedbackV1, type ModuleAgentRoleV1, type ModuleCategoryV1, type ModuleEntitlementV1, type ModulePricingV1, type ModuleReferencePriceV1, PADDLE_PULSE_MISSION_ONE_AUTHORING_V1, PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1, type PublishedStaticProjectSnapshotV1, RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1, ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1, ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1, SERVO_CREATURE_MISSION_ONE_AUTHORING_V1, SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1, STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1, type ScoreBandV1, assertValidLearningPath, assertValidMissionAuthoringBundle, calculateAssessment, validateAssessmentRubric, validateLearningPath, validateMissionAuthoringBundle };
490
+ export { type AssessmentCheckResultV1, type AssessmentCriterionV1, type AssessmentDimensionV1, type AssessmentResultV1, type AssessmentRubricV1, type AttemptEvidenceV1, BEACON_BOT_MISSION_ONE_AUTHORING_V1, type BadgeDefinitionV1, type CommercialStateV1, type CourseMaterialAudienceV1, type CourseMaterialKindV1, type CourseMaterialV1, type CourseMaterialsManifestV1, DANCE_ROVER_MISSION_ONE_AUTHORING_V1, type FacilitatorMissionAuthoringV1, type GuardianAiConsentV1, type HardwareItemV1, type HardwareModeV1, type HardwareRequirementManifestV1, type HardwareVerificationStatusV1, JUNIOR_CODER_MISSION_STAGE_ORDER_V1, JUNIOR_CODER_MODULE_PRICE_V1_1, JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1, type LearnerMissionAuthoringV1, type LearningGoalV1, type LearningModuleVersionV1, type LearningPathVersionV1, type LearningValidationIssueV1, METEOR_SHIELD_MISSION_ONE_AUTHORING_V1, MISSION_AUTHORING_CONTRACT_VERSION_V1, type MissionAccessibilityAlternativeV1, type MissionArtifactKindV1, type MissionArtifactReferenceV1, type MissionAuthoringBundleV1, type MissionAuthoringGoalV1, type MissionAuthoringValidationIssueV1, type MissionEvidenceKindV1, type MissionEvidenceRequirementV1, type MissionEvidenceRetentionV1, type MissionFunctionParameterV1, type MissionFunctionReferenceV1, type MissionHardwareAcquisitionScopeV1, type MissionHardwareComponentDisclosureV1, type MissionHardwareDisclosureV1, type MissionInteractionModeV1, type MissionInteractionRequirementV1, type MissionPhysicalSafeguardsV1, type MissionReadinessCheckV1, type MissionRewardBindingV1, type MissionSideAdventureV1, type MissionStageCardV1, type MissionStageKindV1, type MissionV1, type ModuleAgentDefinitionV1, type ModuleAgentFeedbackV1, type ModuleAgentRoleV1, type ModuleCategoryV1, type ModuleEntitlementV1, type ModulePricingV1, type ModuleReferencePriceV1, PADDLE_PULSE_MISSION_ONE_AUTHORING_V1, PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1, type PublishedStaticProjectSnapshotV1, RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1, ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1, ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1, SERVO_CREATURE_MISSION_ONE_AUTHORING_V1, SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1, STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1, type ScoreBandV1, assertValidLearningPath, assertValidMissionAuthoringBundle, calculateAssessment, validateAssessmentRubric, validateLearningPath, validateMissionAuthoringBundle };
package/dist/index.js CHANGED
@@ -3064,6 +3064,371 @@ var SERVO_CREATURE_MISSION_ONE_AUTHORING_V1 = {
3064
3064
  }
3065
3065
  }
3066
3066
  };
3067
+ var DANCE_ROVER_MISSION_ONE_AUTHORING_V1 = {
3068
+ version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
3069
+ moduleId: "junior-coder.dance-rover",
3070
+ moduleVersion: "1.1.0",
3071
+ missionId: "dance-rover-mission-1",
3072
+ learner: {
3073
+ estimatedMinutes: 20,
3074
+ stages: [
3075
+ {
3076
+ kind: "learn",
3077
+ instruction: "Read what driveRover(), turnRover(), waitMs(), repeatDance() and emergencyStop() do in the private Dance Rover simulator.",
3078
+ artifactIds: ["dance-rover-m1-art"]
3079
+ },
3080
+ {
3081
+ kind: "predict",
3082
+ instruction: "Predict the rover's labelled direction, speed, turn, repeat count and final stopped state before the dance runs.",
3083
+ artifactIds: []
3084
+ },
3085
+ {
3086
+ kind: "build",
3087
+ instruction: "Adjust the five documented C++-style calls to create one bounded rover dance with an emergency stop.",
3088
+ artifactIds: ["dance-rover-m1-code"]
3089
+ },
3090
+ {
3091
+ kind: "run",
3092
+ instruction: "Use the Run action button to start the private Dance Rover simulator.",
3093
+ artifactIds: ["dance-rover-m1-code"]
3094
+ },
3095
+ {
3096
+ kind: "assess",
3097
+ instruction: "Run the visible and protected deterministic direction, speed, sequence and stop checks.",
3098
+ artifactIds: []
3099
+ },
3100
+ {
3101
+ kind: "inspect",
3102
+ instruction: "Compare the highlighted C++-style line with the first dance goal that did not pass.",
3103
+ artifactIds: []
3104
+ },
3105
+ {
3106
+ kind: "fix",
3107
+ instruction: "Change one bounded direction, speed, wait, repeat or stop call, then rerun and inspect the text telemetry.",
3108
+ artifactIds: ["dance-rover-m1-code"]
3109
+ },
3110
+ {
3111
+ kind: "explain",
3112
+ instruction: "Explain how reusable movement calls created the choreography and why every safe dance ends stopped.",
3113
+ artifactIds: []
3114
+ },
3115
+ {
3116
+ kind: "reward",
3117
+ instruction: "Collect the simulated badge when the score and fail-safe stop pass; physical completion remains adult-only.",
3118
+ artifactIds: []
3119
+ }
3120
+ ],
3121
+ readinessChecks: [
3122
+ {
3123
+ id: "dance-rover-m1-find-stop",
3124
+ prompt: "Find the emergencyStop() call and explain why it must finish every physical movement sequence.",
3125
+ scored: false
3126
+ }
3127
+ ],
3128
+ artifacts: [
3129
+ {
3130
+ id: "dance-rover-m1-code",
3131
+ kind: "starter-code",
3132
+ audience: "learner",
3133
+ solutionBearing: false
3134
+ },
3135
+ {
3136
+ id: "dance-rover-m1-art",
3137
+ kind: "starter-assets",
3138
+ audience: "learner",
3139
+ solutionBearing: false
3140
+ },
3141
+ {
3142
+ id: "dance-rover-m1-printable",
3143
+ kind: "printable",
3144
+ audience: "learner",
3145
+ solutionBearing: false
3146
+ }
3147
+ ],
3148
+ goals: [
3149
+ {
3150
+ id: "dance-rover-m1-starts",
3151
+ statement: "The documented C++-style settings are valid and the private simulator starts.",
3152
+ visibility: "visible",
3153
+ criterionIds: ["dance-rover-build"],
3154
+ completionRequired: true,
3155
+ aiRequired: false
3156
+ },
3157
+ {
3158
+ id: "dance-rover-m1-choreography",
3159
+ statement: "The rover completes a bounded direction, speed, turn and repeat sequence before stopping.",
3160
+ visibility: "visible",
3161
+ criterionIds: ["dance-rover-goal-one", "dance-rover-goal-two"],
3162
+ completionRequired: true,
3163
+ aiRequired: false
3164
+ },
3165
+ {
3166
+ id: "dance-rover-m1-private-runtime",
3167
+ statement: "The program stays inside the private simulator and never accesses physical motors, the network or browser storage.",
3168
+ visibility: "visible",
3169
+ criterionIds: ["dance-rover-safety"],
3170
+ completionRequired: true,
3171
+ aiRequired: false
3172
+ }
3173
+ ],
3174
+ interactions: [
3175
+ {
3176
+ id: "dance-rover-m1-run-control",
3177
+ description: "Start the private Dance Rover choreography simulation.",
3178
+ primaryMode: "pointer",
3179
+ alternativeIds: ["dance-rover-m1-keyboard-run"]
3180
+ },
3181
+ {
3182
+ id: "dance-rover-m1-code-control",
3183
+ description: "Edit the documented direction, speed, wait, repeat and stop calls.",
3184
+ primaryMode: "keyboard",
3185
+ alternativeIds: []
3186
+ },
3187
+ {
3188
+ id: "dance-rover-m1-motion-preview",
3189
+ description: "Observe the bounded rover route and stopped state.",
3190
+ primaryMode: "motion",
3191
+ alternativeIds: ["dance-rover-m1-telemetry"]
3192
+ }
3193
+ ],
3194
+ accessibilityAlternatives: [
3195
+ {
3196
+ id: "dance-rover-m1-keyboard-run",
3197
+ modes: ["keyboard"],
3198
+ equivalentOutcome: true,
3199
+ description: "Press Enter or Space on the play-icon Run button to start the same simulator."
3200
+ },
3201
+ {
3202
+ id: "dance-rover-m1-telemetry",
3203
+ modes: ["text", "shape", "symbol", "reduced-motion"],
3204
+ equivalentOutcome: true,
3205
+ description: "Read direction, speed, turn, repeat count, elapsed milliseconds and stopped state without animation."
3206
+ }
3207
+ ],
3208
+ evidenceRequirements: [
3209
+ {
3210
+ id: "dance-rover-m1-assessment",
3211
+ goalIds: [
3212
+ "dance-rover-m1-starts",
3213
+ "dance-rover-m1-choreography",
3214
+ "dance-rover-m1-private-runtime"
3215
+ ],
3216
+ kind: "assessment-result",
3217
+ retention: "entitlement",
3218
+ containsPersonalData: false
3219
+ },
3220
+ {
3221
+ id: "dance-rover-m1-explanation",
3222
+ goalIds: ["dance-rover-m1-choreography"],
3223
+ kind: "learner-explanation",
3224
+ retention: "attempt",
3225
+ containsPersonalData: false
3226
+ }
3227
+ ],
3228
+ sideAdventures: [
3229
+ {
3230
+ id: "dance-rover-m1-remix",
3231
+ prompt: "Invent an original rover dance and add a text or symbol route cue that makes it understandable without motion.",
3232
+ completionRequired: false
3233
+ }
3234
+ ],
3235
+ rewardBindings: [
3236
+ {
3237
+ id: "dance-rover-m1-simulated-badge",
3238
+ badgeId: "dance-rover-mission-complete",
3239
+ goalIds: [
3240
+ "dance-rover-m1-starts",
3241
+ "dance-rover-m1-choreography",
3242
+ "dance-rover-m1-private-runtime"
3243
+ ],
3244
+ deterministic: true,
3245
+ random: false,
3246
+ tokenConvertible: false
3247
+ }
3248
+ ],
3249
+ functionReference: [
3250
+ {
3251
+ id: "dance-rover-function-drive",
3252
+ signature: "driveRover(direction, speed)",
3253
+ summary: "Adds one straight movement to the private simulator route.",
3254
+ parameters: [
3255
+ {
3256
+ name: "direction",
3257
+ type: "string",
3258
+ description: "Use forward or backward."
3259
+ },
3260
+ {
3261
+ name: "speed",
3262
+ type: "whole number",
3263
+ description: "A bounded simulated speed from 0 to 60 percent."
3264
+ }
3265
+ ],
3266
+ effect: "Updates the simulator's labelled route without generating motor PWM or accessing a physical driver.",
3267
+ example: 'driveRover("forward", 40);'
3268
+ },
3269
+ {
3270
+ id: "dance-rover-function-turn",
3271
+ signature: "turnRover(direction, speed)",
3272
+ summary: "Adds one left or right turn to the private simulator route.",
3273
+ parameters: [
3274
+ {
3275
+ name: "direction",
3276
+ type: "string",
3277
+ description: "Use left or right."
3278
+ },
3279
+ {
3280
+ name: "speed",
3281
+ type: "whole number",
3282
+ description: "A bounded simulated turn speed from 0 to 60 percent."
3283
+ }
3284
+ ],
3285
+ effect: "Updates labelled simulator direction without energising motors or a driver.",
3286
+ example: 'turnRover("left", 30);'
3287
+ },
3288
+ {
3289
+ id: "dance-rover-function-wait",
3290
+ signature: "waitMs(duration)",
3291
+ summary: "Adds one bounded wait to the simulated dance timeline.",
3292
+ parameters: [
3293
+ {
3294
+ name: "duration",
3295
+ type: "whole number",
3296
+ description: "A bounded number of milliseconds from 100 to 1000."
3297
+ }
3298
+ ],
3299
+ effect: "Advances simulated elapsed time; it never blocks the website or holds physical motors under load.",
3300
+ example: "waitMs(300);"
3301
+ },
3302
+ {
3303
+ id: "dance-rover-function-repeat",
3304
+ signature: "repeatDance(count)",
3305
+ summary: "Repeats the current simulated dance a safe number of times.",
3306
+ parameters: [
3307
+ {
3308
+ name: "count",
3309
+ type: "whole number",
3310
+ description: "A bounded repeat count from 1 to 4."
3311
+ }
3312
+ ],
3313
+ effect: "Adds a fixed number of labelled route sequences to the private simulator.",
3314
+ example: "repeatDance(3);"
3315
+ },
3316
+ {
3317
+ id: "dance-rover-function-stop",
3318
+ signature: "emergencyStop()",
3319
+ summary: "Ends the simulated dance in a fail-safe stopped state.",
3320
+ parameters: [],
3321
+ effect: "Marks both motors stopped in the simulator; it cannot activate, stop or otherwise control physical hardware.",
3322
+ example: "emergencyStop();"
3323
+ }
3324
+ ]
3325
+ },
3326
+ facilitator: {
3327
+ artifacts: [
3328
+ {
3329
+ id: "dance-rover-m1-answer-key",
3330
+ kind: "answer-key",
3331
+ audience: "facilitator",
3332
+ solutionBearing: true
3333
+ },
3334
+ {
3335
+ id: "dance-rover-m1-protected-tests",
3336
+ kind: "protected-test",
3337
+ audience: "facilitator",
3338
+ solutionBearing: true
3339
+ },
3340
+ {
3341
+ id: "dance-rover-m1-adult-hardware-guide",
3342
+ kind: "facilitator-note",
3343
+ audience: "facilitator",
3344
+ solutionBearing: true
3345
+ }
3346
+ ],
3347
+ protectedGoals: [
3348
+ {
3349
+ id: "dance-rover-m1-protected-resilience",
3350
+ statement: "The simulator rejects unsupported directions, excessive speeds, waits, repeats, missing stop calls and physical-hardware requests.",
3351
+ visibility: "protected",
3352
+ criterionIds: ["dance-rover-edge-one", "dance-rover-edge-two"],
3353
+ completionRequired: false,
3354
+ aiRequired: false
3355
+ }
3356
+ ],
3357
+ prompts: [
3358
+ "Ask the learner to predict the labelled route and final stopped state before suggesting one bounded change.",
3359
+ "Use the function reference and visible telemetry; never provide motor wiring, power or movement advice to a learner.",
3360
+ "Physical export stays unavailable until an adult acknowledges the exact manifest and every driver, motor and power component has verified bench-test evidence."
3361
+ ]
3362
+ },
3363
+ hardware: {
3364
+ requirementsVersion: "1.0.0",
3365
+ hardwareIncluded: false,
3366
+ completePathItemIds: [
3367
+ "pico-2-w",
3368
+ "breadboard",
3369
+ "usb-data-cable",
3370
+ "jumper-wires",
3371
+ "dual-motor-driver",
3372
+ "geared-motors",
3373
+ "rover-chassis",
3374
+ "motor-power"
3375
+ ],
3376
+ incrementalItemIds: [
3377
+ "dual-motor-driver",
3378
+ "geared-motors",
3379
+ "rover-chassis",
3380
+ "motor-power"
3381
+ ],
3382
+ components: [
3383
+ { itemId: "pico-2-w", quantity: 1, acquisitionScope: "complete-path", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
3384
+ { itemId: "breadboard", quantity: 1, acquisitionScope: "complete-path", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
3385
+ { itemId: "usb-data-cable", quantity: 1, acquisitionScope: "complete-path", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
3386
+ { itemId: "jumper-wires", quantity: 12, acquisitionScope: "complete-path", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
3387
+ { itemId: "dual-motor-driver", quantity: 1, acquisitionScope: "incremental", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
3388
+ { itemId: "geared-motors", quantity: 2, acquisitionScope: "incremental", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
3389
+ { itemId: "rover-chassis", quantity: 1, acquisitionScope: "incremental", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
3390
+ { itemId: "motor-power", quantity: 1, acquisitionScope: "incremental", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false }
3391
+ ],
3392
+ safeguards: {
3393
+ adultAssemblyRequired: true,
3394
+ adultAcknowledgementRequiredForExport: true,
3395
+ websiteMayControlHardware: false,
3396
+ simulatorCompletionAvailable: true,
3397
+ simulatedBadgeId: "dance-rover-mission-complete",
3398
+ physicalBadgeId: "dance-rover-physical-builder",
3399
+ physicalBadgeRequiresAdultSignoff: true,
3400
+ adultAssemblySteps: [
3401
+ "Confirm the exact driver, motors, chassis and switched power identities against the requirements manifest.",
3402
+ "Assemble and inspect all wiring with motor power disconnected and secure every moving or pinch-point part.",
3403
+ "Complete the first direction and emergency-stop bench test with the wheels lifted clear of the surface."
3404
+ ],
3405
+ powerRequirements: [
3406
+ "Use a switched protected motor supply within the verified driver and motor ratings; never power motors from a Pico GPIO pin.",
3407
+ "Connect one common signal ground between the verified motor supply, driver and Pico only as shown in the adult guide.",
3408
+ "Keep the power switch accessible and disconnect every source before changing wiring, wheels or chassis parts."
3409
+ ],
3410
+ cableRequirements: [
3411
+ "One known data-capable USB cable compatible with the Pico 2 W.",
3412
+ "Insulated jumper leads and verified motor, driver and power connectors documented by the adult guide."
3413
+ ],
3414
+ softwarePrerequisites: [
3415
+ "Supported Pico SDK toolchain on Raspberry Pi OS or a documented desktop environment.",
3416
+ "Known-good Dance Rover recovery firmware with adult-owned watchdog and emergency-stop behaviour."
3417
+ ],
3418
+ warnings: [
3419
+ "Hardware is not included with the module.",
3420
+ "No listed driver, motor, chassis or power arrangement currently claims compatibility or physical-completion eligibility.",
3421
+ "Moving wheels, pinch points, stalled motors and unsuitable supplies can cause injury or heat; adult assembly and testing are mandatory.",
3422
+ "The simulator and simulated badge remain available without physical equipment."
3423
+ ],
3424
+ unrelatedHardwareNotRequired: [
3425
+ "Camera Module 3 or Raspberry Pi Zero 2 W",
3426
+ "obstacle or colour sensors",
3427
+ "servo, LED or infrared beacon parts"
3428
+ ]
3429
+ }
3430
+ }
3431
+ };
3067
3432
  var RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1 = {
3068
3433
  version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
3069
3434
  moduleId: "junior-coder.rescue-crew-commander",
@@ -3859,6 +4224,7 @@ ${summary}`);
3859
4224
  }
3860
4225
  export {
3861
4226
  BEACON_BOT_MISSION_ONE_AUTHORING_V1,
4227
+ DANCE_ROVER_MISSION_ONE_AUTHORING_V1,
3862
4228
  JUNIOR_CODER_MISSION_STAGE_ORDER_V1,
3863
4229
  JUNIOR_CODER_MODULE_PRICE_V1_1,
3864
4230
  JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT,