@plasius/learning 0.2.11 → 0.2.12
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/README.md +15 -2
- package/dist/index.cjs +356 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +355 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -467,6 +467,13 @@ declare const SERVO_CREATURE_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
|
467
467
|
* movement remain unavailable until the exact reference build is bench tested.
|
|
468
468
|
*/
|
|
469
469
|
declare const DANCE_ROVER_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
470
|
+
/**
|
|
471
|
+
* First Obstacle Explorer robotics mission. Learners use bounded simulated IR
|
|
472
|
+
* readings, Boolean decisions, recovery state and a watchdog to plan a safe
|
|
473
|
+
* route. Sensor input, firmware export and physical movement remain unavailable
|
|
474
|
+
* until the exact reference build is calibrated and bench tested by an adult.
|
|
475
|
+
*/
|
|
476
|
+
declare const OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
470
477
|
/**
|
|
471
478
|
* Original first mission for Rescue Crew Commander. The learner arranges a
|
|
472
479
|
* typed visual program and can inspect its synchronized JavaScript projection,
|
|
@@ -487,4 +494,4 @@ declare function validateLearningPath(path: LearningPathVersionV1): LearningVali
|
|
|
487
494
|
/** Fail fast when a path is not safe to publish or consume. */
|
|
488
495
|
declare function assertValidLearningPath(path: LearningPathVersionV1): void;
|
|
489
496
|
|
|
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 };
|
|
497
|
+
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, OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1, 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
|
@@ -467,6 +467,13 @@ declare const SERVO_CREATURE_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
|
467
467
|
* movement remain unavailable until the exact reference build is bench tested.
|
|
468
468
|
*/
|
|
469
469
|
declare const DANCE_ROVER_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
470
|
+
/**
|
|
471
|
+
* First Obstacle Explorer robotics mission. Learners use bounded simulated IR
|
|
472
|
+
* readings, Boolean decisions, recovery state and a watchdog to plan a safe
|
|
473
|
+
* route. Sensor input, firmware export and physical movement remain unavailable
|
|
474
|
+
* until the exact reference build is calibrated and bench tested by an adult.
|
|
475
|
+
*/
|
|
476
|
+
declare const OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
470
477
|
/**
|
|
471
478
|
* Original first mission for Rescue Crew Commander. The learner arranges a
|
|
472
479
|
* typed visual program and can inspect its synchronized JavaScript projection,
|
|
@@ -487,4 +494,4 @@ declare function validateLearningPath(path: LearningPathVersionV1): LearningVali
|
|
|
487
494
|
/** Fail fast when a path is not safe to publish or consume. */
|
|
488
495
|
declare function assertValidLearningPath(path: LearningPathVersionV1): void;
|
|
489
496
|
|
|
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 };
|
|
497
|
+
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, OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1, 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
|
@@ -3429,6 +3429,360 @@ var DANCE_ROVER_MISSION_ONE_AUTHORING_V1 = {
|
|
|
3429
3429
|
}
|
|
3430
3430
|
}
|
|
3431
3431
|
};
|
|
3432
|
+
var OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1 = {
|
|
3433
|
+
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
3434
|
+
moduleId: "junior-coder.obstacle-explorer",
|
|
3435
|
+
moduleVersion: "1.1.0",
|
|
3436
|
+
missionId: "obstacle-explorer-mission-1",
|
|
3437
|
+
learner: {
|
|
3438
|
+
estimatedMinutes: 20,
|
|
3439
|
+
stages: [
|
|
3440
|
+
{
|
|
3441
|
+
kind: "learn",
|
|
3442
|
+
instruction: "Read what readObstacle(), chooseSafeRoute(), setRecoveryAttempts(), armWatchdog() and failSafeStop() do in the private Obstacle Explorer simulator.",
|
|
3443
|
+
artifactIds: ["obstacle-explorer-m1-art"]
|
|
3444
|
+
},
|
|
3445
|
+
{
|
|
3446
|
+
kind: "predict",
|
|
3447
|
+
instruction: "Predict the simulated obstacle reading, safe route, recovery count, watchdog time and final stopped state before the explorer runs.",
|
|
3448
|
+
artifactIds: []
|
|
3449
|
+
},
|
|
3450
|
+
{
|
|
3451
|
+
kind: "build",
|
|
3452
|
+
instruction: "Adjust the five documented C++-style calls to make one bounded obstacle decision with a watchdog and fail-safe stop.",
|
|
3453
|
+
artifactIds: ["obstacle-explorer-m1-code"]
|
|
3454
|
+
},
|
|
3455
|
+
{
|
|
3456
|
+
kind: "run",
|
|
3457
|
+
instruction: "Use the Run action button to start the private Obstacle Explorer simulator.",
|
|
3458
|
+
artifactIds: ["obstacle-explorer-m1-code"]
|
|
3459
|
+
},
|
|
3460
|
+
{
|
|
3461
|
+
kind: "assess",
|
|
3462
|
+
instruction: "Run the visible and protected deterministic sensor, route, recovery, watchdog and stop checks.",
|
|
3463
|
+
artifactIds: []
|
|
3464
|
+
},
|
|
3465
|
+
{
|
|
3466
|
+
kind: "inspect",
|
|
3467
|
+
instruction: "Compare the highlighted C++-style line with the first explorer goal that did not pass.",
|
|
3468
|
+
artifactIds: []
|
|
3469
|
+
},
|
|
3470
|
+
{
|
|
3471
|
+
kind: "fix",
|
|
3472
|
+
instruction: "Change one bounded sensor side, route, recovery count, watchdog or stop call, then rerun and inspect the text telemetry.",
|
|
3473
|
+
artifactIds: ["obstacle-explorer-m1-code"]
|
|
3474
|
+
},
|
|
3475
|
+
{
|
|
3476
|
+
kind: "explain",
|
|
3477
|
+
instruction: "Explain how a Boolean obstacle reading selected a route and why the watchdog and fail-safe stop protect every explorer state.",
|
|
3478
|
+
artifactIds: []
|
|
3479
|
+
},
|
|
3480
|
+
{
|
|
3481
|
+
kind: "reward",
|
|
3482
|
+
instruction: "Collect the simulated badge when the score and mandatory safety checks pass; physical completion remains adult-only.",
|
|
3483
|
+
artifactIds: []
|
|
3484
|
+
}
|
|
3485
|
+
],
|
|
3486
|
+
readinessChecks: [
|
|
3487
|
+
{
|
|
3488
|
+
id: "obstacle-explorer-m1-find-stop",
|
|
3489
|
+
prompt: "Find failSafeStop() and explain why the explorer must stop when a sensor or watchdog result is uncertain.",
|
|
3490
|
+
scored: false
|
|
3491
|
+
}
|
|
3492
|
+
],
|
|
3493
|
+
artifacts: [
|
|
3494
|
+
{
|
|
3495
|
+
id: "obstacle-explorer-m1-code",
|
|
3496
|
+
kind: "starter-code",
|
|
3497
|
+
audience: "learner",
|
|
3498
|
+
solutionBearing: false
|
|
3499
|
+
},
|
|
3500
|
+
{
|
|
3501
|
+
id: "obstacle-explorer-m1-art",
|
|
3502
|
+
kind: "starter-assets",
|
|
3503
|
+
audience: "learner",
|
|
3504
|
+
solutionBearing: false
|
|
3505
|
+
},
|
|
3506
|
+
{
|
|
3507
|
+
id: "obstacle-explorer-m1-printable",
|
|
3508
|
+
kind: "printable",
|
|
3509
|
+
audience: "learner",
|
|
3510
|
+
solutionBearing: false
|
|
3511
|
+
}
|
|
3512
|
+
],
|
|
3513
|
+
goals: [
|
|
3514
|
+
{
|
|
3515
|
+
id: "obstacle-explorer-m1-starts",
|
|
3516
|
+
statement: "The documented C++-style settings are valid and the private simulator starts.",
|
|
3517
|
+
visibility: "visible",
|
|
3518
|
+
criterionIds: ["obstacle-explorer-build"],
|
|
3519
|
+
completionRequired: true,
|
|
3520
|
+
aiRequired: false
|
|
3521
|
+
},
|
|
3522
|
+
{
|
|
3523
|
+
id: "obstacle-explorer-m1-navigation",
|
|
3524
|
+
statement: "The explorer reads one simulated obstacle and chooses a bounded route with three recovery attempts.",
|
|
3525
|
+
visibility: "visible",
|
|
3526
|
+
criterionIds: ["obstacle-explorer-goal-one", "obstacle-explorer-goal-two"],
|
|
3527
|
+
completionRequired: true,
|
|
3528
|
+
aiRequired: false
|
|
3529
|
+
},
|
|
3530
|
+
{
|
|
3531
|
+
id: "obstacle-explorer-m1-private-runtime",
|
|
3532
|
+
statement: "The program arms a watchdog, ends fail-safe stopped and never accesses sensors, motors, the network or browser storage.",
|
|
3533
|
+
visibility: "visible",
|
|
3534
|
+
criterionIds: ["obstacle-explorer-safety"],
|
|
3535
|
+
completionRequired: true,
|
|
3536
|
+
aiRequired: false
|
|
3537
|
+
}
|
|
3538
|
+
],
|
|
3539
|
+
interactions: [
|
|
3540
|
+
{
|
|
3541
|
+
id: "obstacle-explorer-m1-run-control",
|
|
3542
|
+
description: "Start the private Obstacle Explorer navigation simulation.",
|
|
3543
|
+
primaryMode: "pointer",
|
|
3544
|
+
alternativeIds: ["obstacle-explorer-m1-keyboard-run"]
|
|
3545
|
+
},
|
|
3546
|
+
{
|
|
3547
|
+
id: "obstacle-explorer-m1-code-control",
|
|
3548
|
+
description: "Edit the documented sensor, route, recovery, watchdog and stop calls.",
|
|
3549
|
+
primaryMode: "keyboard",
|
|
3550
|
+
alternativeIds: []
|
|
3551
|
+
},
|
|
3552
|
+
{
|
|
3553
|
+
id: "obstacle-explorer-m1-route-preview",
|
|
3554
|
+
description: "Observe the bounded obstacle decision, route and stopped state.",
|
|
3555
|
+
primaryMode: "motion",
|
|
3556
|
+
alternativeIds: ["obstacle-explorer-m1-telemetry"]
|
|
3557
|
+
}
|
|
3558
|
+
],
|
|
3559
|
+
accessibilityAlternatives: [
|
|
3560
|
+
{
|
|
3561
|
+
id: "obstacle-explorer-m1-keyboard-run",
|
|
3562
|
+
modes: ["keyboard"],
|
|
3563
|
+
equivalentOutcome: true,
|
|
3564
|
+
description: "Press Enter or Space on the play-icon Run button to start the same simulator."
|
|
3565
|
+
},
|
|
3566
|
+
{
|
|
3567
|
+
id: "obstacle-explorer-m1-telemetry",
|
|
3568
|
+
modes: ["text", "shape", "symbol", "reduced-motion"],
|
|
3569
|
+
equivalentOutcome: true,
|
|
3570
|
+
description: "Read sensor side, blocked state, route, recovery count, watchdog milliseconds and stopped state without animation or colour alone."
|
|
3571
|
+
}
|
|
3572
|
+
],
|
|
3573
|
+
evidenceRequirements: [
|
|
3574
|
+
{
|
|
3575
|
+
id: "obstacle-explorer-m1-assessment",
|
|
3576
|
+
goalIds: [
|
|
3577
|
+
"obstacle-explorer-m1-starts",
|
|
3578
|
+
"obstacle-explorer-m1-navigation",
|
|
3579
|
+
"obstacle-explorer-m1-private-runtime"
|
|
3580
|
+
],
|
|
3581
|
+
kind: "assessment-result",
|
|
3582
|
+
retention: "entitlement",
|
|
3583
|
+
containsPersonalData: false
|
|
3584
|
+
},
|
|
3585
|
+
{
|
|
3586
|
+
id: "obstacle-explorer-m1-explanation",
|
|
3587
|
+
goalIds: ["obstacle-explorer-m1-navigation"],
|
|
3588
|
+
kind: "learner-explanation",
|
|
3589
|
+
retention: "attempt",
|
|
3590
|
+
containsPersonalData: false
|
|
3591
|
+
}
|
|
3592
|
+
],
|
|
3593
|
+
sideAdventures: [
|
|
3594
|
+
{
|
|
3595
|
+
id: "obstacle-explorer-m1-remix",
|
|
3596
|
+
prompt: "Invent an original maze response and add a text or symbol cue that explains the Boolean decision without motion or colour alone.",
|
|
3597
|
+
completionRequired: false
|
|
3598
|
+
}
|
|
3599
|
+
],
|
|
3600
|
+
rewardBindings: [
|
|
3601
|
+
{
|
|
3602
|
+
id: "obstacle-explorer-m1-simulated-badge",
|
|
3603
|
+
badgeId: "obstacle-explorer-mission-complete",
|
|
3604
|
+
goalIds: [
|
|
3605
|
+
"obstacle-explorer-m1-starts",
|
|
3606
|
+
"obstacle-explorer-m1-navigation",
|
|
3607
|
+
"obstacle-explorer-m1-private-runtime"
|
|
3608
|
+
],
|
|
3609
|
+
deterministic: true,
|
|
3610
|
+
random: false,
|
|
3611
|
+
tokenConvertible: false
|
|
3612
|
+
}
|
|
3613
|
+
],
|
|
3614
|
+
functionReference: [
|
|
3615
|
+
{
|
|
3616
|
+
id: "obstacle-explorer-function-read",
|
|
3617
|
+
signature: "readObstacle(side)",
|
|
3618
|
+
summary: "Reads one labelled obstacle state from the private simulator.",
|
|
3619
|
+
parameters: [
|
|
3620
|
+
{
|
|
3621
|
+
name: "side",
|
|
3622
|
+
type: "string",
|
|
3623
|
+
description: "Use front, left or right."
|
|
3624
|
+
}
|
|
3625
|
+
],
|
|
3626
|
+
effect: "Returns a simulator Boolean blocked or clear reading and never accesses an IR sensor or GPIO pin.",
|
|
3627
|
+
example: 'readObstacle("front");'
|
|
3628
|
+
},
|
|
3629
|
+
{
|
|
3630
|
+
id: "obstacle-explorer-function-route",
|
|
3631
|
+
signature: "chooseSafeRoute(blockedAction, clearAction)",
|
|
3632
|
+
summary: "Chooses one bounded route for blocked and clear simulated states.",
|
|
3633
|
+
parameters: [
|
|
3634
|
+
{
|
|
3635
|
+
name: "blockedAction",
|
|
3636
|
+
type: "string",
|
|
3637
|
+
description: "Use turn-left, turn-right, back-up or stop."
|
|
3638
|
+
},
|
|
3639
|
+
{
|
|
3640
|
+
name: "clearAction",
|
|
3641
|
+
type: "string",
|
|
3642
|
+
description: "Use forward or stop."
|
|
3643
|
+
}
|
|
3644
|
+
],
|
|
3645
|
+
effect: "Updates labelled simulator navigation state without energising motors or a driver.",
|
|
3646
|
+
example: 'chooseSafeRoute("turn-left", "forward");'
|
|
3647
|
+
},
|
|
3648
|
+
{
|
|
3649
|
+
id: "obstacle-explorer-function-recovery",
|
|
3650
|
+
signature: "setRecoveryAttempts(count)",
|
|
3651
|
+
summary: "Sets a bounded number of simulated recovery attempts.",
|
|
3652
|
+
parameters: [
|
|
3653
|
+
{
|
|
3654
|
+
name: "count",
|
|
3655
|
+
type: "whole number",
|
|
3656
|
+
description: "A bounded recovery count from 1 to 3."
|
|
3657
|
+
}
|
|
3658
|
+
],
|
|
3659
|
+
effect: "Limits the private simulator recovery state so an uncertain route cannot loop forever.",
|
|
3660
|
+
example: "setRecoveryAttempts(3);"
|
|
3661
|
+
},
|
|
3662
|
+
{
|
|
3663
|
+
id: "obstacle-explorer-function-watchdog",
|
|
3664
|
+
signature: "armWatchdog(duration)",
|
|
3665
|
+
summary: "Arms a bounded simulated watchdog timer.",
|
|
3666
|
+
parameters: [
|
|
3667
|
+
{
|
|
3668
|
+
name: "duration",
|
|
3669
|
+
type: "whole number",
|
|
3670
|
+
description: "A bounded timeout from 250 to 1000 milliseconds."
|
|
3671
|
+
}
|
|
3672
|
+
],
|
|
3673
|
+
effect: "Records simulator timeout telemetry and cannot hold or control physical movement.",
|
|
3674
|
+
example: "armWatchdog(500);"
|
|
3675
|
+
},
|
|
3676
|
+
{
|
|
3677
|
+
id: "obstacle-explorer-function-stop",
|
|
3678
|
+
signature: "failSafeStop()",
|
|
3679
|
+
summary: "Ends the navigation simulation in a fail-safe stopped state.",
|
|
3680
|
+
parameters: [],
|
|
3681
|
+
effect: "Marks the private simulator stopped on completion or uncertainty; it cannot activate, stop or otherwise control physical hardware.",
|
|
3682
|
+
example: "failSafeStop();"
|
|
3683
|
+
}
|
|
3684
|
+
]
|
|
3685
|
+
},
|
|
3686
|
+
facilitator: {
|
|
3687
|
+
artifacts: [
|
|
3688
|
+
{
|
|
3689
|
+
id: "obstacle-explorer-m1-answer-key",
|
|
3690
|
+
kind: "answer-key",
|
|
3691
|
+
audience: "facilitator",
|
|
3692
|
+
solutionBearing: true
|
|
3693
|
+
},
|
|
3694
|
+
{
|
|
3695
|
+
id: "obstacle-explorer-m1-protected-tests",
|
|
3696
|
+
kind: "protected-test",
|
|
3697
|
+
audience: "facilitator",
|
|
3698
|
+
solutionBearing: true
|
|
3699
|
+
},
|
|
3700
|
+
{
|
|
3701
|
+
id: "obstacle-explorer-m1-adult-hardware-guide",
|
|
3702
|
+
kind: "facilitator-note",
|
|
3703
|
+
audience: "facilitator",
|
|
3704
|
+
solutionBearing: true
|
|
3705
|
+
}
|
|
3706
|
+
],
|
|
3707
|
+
protectedGoals: [
|
|
3708
|
+
{
|
|
3709
|
+
id: "obstacle-explorer-m1-protected-resilience",
|
|
3710
|
+
statement: "The simulator rejects unsupported sensor sides, unsafe routes, excessive recovery attempts, invalid watchdogs, missing stop calls and physical-hardware requests.",
|
|
3711
|
+
visibility: "protected",
|
|
3712
|
+
criterionIds: ["obstacle-explorer-edge-one", "obstacle-explorer-edge-two"],
|
|
3713
|
+
completionRequired: false,
|
|
3714
|
+
aiRequired: false
|
|
3715
|
+
}
|
|
3716
|
+
],
|
|
3717
|
+
prompts: [
|
|
3718
|
+
"Ask the learner to predict the Boolean blocked state, labelled route and final stopped state before suggesting one bounded change.",
|
|
3719
|
+
"Use the function reference and visible telemetry; never provide sensor wiring, motor power or movement advice to a learner.",
|
|
3720
|
+
"Physical export stays unavailable until an adult acknowledges the exact manifest and every rover and sensor component has calibration and bench-test evidence."
|
|
3721
|
+
]
|
|
3722
|
+
},
|
|
3723
|
+
hardware: {
|
|
3724
|
+
requirementsVersion: "1.0.0",
|
|
3725
|
+
hardwareIncluded: false,
|
|
3726
|
+
completePathItemIds: [
|
|
3727
|
+
"pico-2-w",
|
|
3728
|
+
"breadboard",
|
|
3729
|
+
"usb-data-cable",
|
|
3730
|
+
"jumper-wires",
|
|
3731
|
+
"verified-rover",
|
|
3732
|
+
"obstacle-sensors"
|
|
3733
|
+
],
|
|
3734
|
+
incrementalItemIds: [
|
|
3735
|
+
"verified-rover",
|
|
3736
|
+
"obstacle-sensors"
|
|
3737
|
+
],
|
|
3738
|
+
components: [
|
|
3739
|
+
{ itemId: "pico-2-w", quantity: 1, acquisitionScope: "complete-path", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
|
|
3740
|
+
{ itemId: "breadboard", quantity: 1, acquisitionScope: "complete-path", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
|
|
3741
|
+
{ itemId: "usb-data-cable", quantity: 1, acquisitionScope: "complete-path", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
|
|
3742
|
+
{ itemId: "jumper-wires", quantity: 12, acquisitionScope: "complete-path", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
|
|
3743
|
+
{ itemId: "verified-rover", quantity: 1, acquisitionScope: "incremental", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false },
|
|
3744
|
+
{ itemId: "obstacle-sensors", quantity: 2, acquisitionScope: "incremental", verificationStatus: "pending-bench-test", compatibilityClaimed: false, physicalCompletionEligible: false }
|
|
3745
|
+
],
|
|
3746
|
+
safeguards: {
|
|
3747
|
+
adultAssemblyRequired: true,
|
|
3748
|
+
adultAcknowledgementRequiredForExport: true,
|
|
3749
|
+
websiteMayControlHardware: false,
|
|
3750
|
+
simulatorCompletionAvailable: true,
|
|
3751
|
+
simulatedBadgeId: "obstacle-explorer-mission-complete",
|
|
3752
|
+
physicalBadgeId: "obstacle-explorer-physical-builder",
|
|
3753
|
+
physicalBadgeRequiresAdultSignoff: true,
|
|
3754
|
+
adultAssemblySteps: [
|
|
3755
|
+
"Confirm the exact bench-signed rover and IR sensor identities against the requirements manifest.",
|
|
3756
|
+
"Assemble and inspect all disconnected sensor wiring, then complete the adult sensor calibration record for clear and blocked surfaces.",
|
|
3757
|
+
"Complete direction, obstacle recovery, watchdog and fail-safe-stop tests with the wheels lifted clear of the surface."
|
|
3758
|
+
],
|
|
3759
|
+
powerRequirements: [
|
|
3760
|
+
"Use the verified switched protected motor supply and sensor voltage; never power motors or unsuitable sensors from a Pico GPIO pin.",
|
|
3761
|
+
"Connect one common signal ground between the verified sensor, motor supply, driver and Pico only as shown in the adult guide.",
|
|
3762
|
+
"Keep the power switch accessible and disconnect every source before changing wiring, sensors, wheels or chassis parts."
|
|
3763
|
+
],
|
|
3764
|
+
cableRequirements: [
|
|
3765
|
+
"One known data-capable USB cable compatible with the Pico 2 W.",
|
|
3766
|
+
"Insulated jumper leads and verified sensor, motor, driver and power connectors documented by the adult guide."
|
|
3767
|
+
],
|
|
3768
|
+
softwarePrerequisites: [
|
|
3769
|
+
"Supported Pico SDK toolchain on Raspberry Pi OS or a documented desktop environment.",
|
|
3770
|
+
"Known-good Obstacle Explorer recovery firmware with adult-owned watchdog, sensor-failure and emergency-stop behaviour."
|
|
3771
|
+
],
|
|
3772
|
+
warnings: [
|
|
3773
|
+
"Hardware is not included with the module.",
|
|
3774
|
+
"No listed rover or sensor currently claims compatibility or physical-completion eligibility for this module.",
|
|
3775
|
+
"Moving wheels, pinch points, stalled motors, reflective sensor errors and unsuitable supplies can cause unsafe movement or heat; adult assembly, calibration and testing are mandatory.",
|
|
3776
|
+
"The simulator and simulated badge remain available without physical equipment."
|
|
3777
|
+
],
|
|
3778
|
+
unrelatedHardwareNotRequired: [
|
|
3779
|
+
"Camera Module 3 or Raspberry Pi Zero 2 W",
|
|
3780
|
+
"colour targets or camera ribbon",
|
|
3781
|
+
"servo, LED or infrared beacon parts"
|
|
3782
|
+
]
|
|
3783
|
+
}
|
|
3784
|
+
}
|
|
3785
|
+
};
|
|
3432
3786
|
var RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1 = {
|
|
3433
3787
|
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
3434
3788
|
moduleId: "junior-coder.rescue-crew-commander",
|
|
@@ -4232,6 +4586,7 @@ export {
|
|
|
4232
4586
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
|
|
4233
4587
|
METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
|
|
4234
4588
|
MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
4589
|
+
OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1,
|
|
4235
4590
|
PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
|
|
4236
4591
|
PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1,
|
|
4237
4592
|
RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1,
|