@plasius/learning 0.2.3 → 0.2.5
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 +17 -1
- package/dist/index.cjs +444 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.js +442 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -63,6 +63,8 @@ the exact catalog module that owns its rubric, mission and badges.
|
|
|
63
63
|
```ts
|
|
64
64
|
import {
|
|
65
65
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
|
|
66
|
+
METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
|
|
67
|
+
PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
|
|
66
68
|
ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
|
|
67
69
|
ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1,
|
|
68
70
|
SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1,
|
|
@@ -78,8 +80,14 @@ const robotMaze = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
|
|
|
78
80
|
const skywing = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
|
|
79
81
|
(module) => module.slug === "skywing-sprint",
|
|
80
82
|
);
|
|
83
|
+
const paddlePulse = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
|
|
84
|
+
(module) => module.slug === "paddle-pulse",
|
|
85
|
+
);
|
|
86
|
+
const meteorShield = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
|
|
87
|
+
(module) => module.slug === "meteor-shield",
|
|
88
|
+
);
|
|
81
89
|
|
|
82
|
-
if (!roadHopper || !robotMaze || !skywing) {
|
|
90
|
+
if (!roadHopper || !robotMaze || !skywing || !paddlePulse || !meteorShield) {
|
|
83
91
|
throw new Error("Junior Coder module is missing");
|
|
84
92
|
}
|
|
85
93
|
|
|
@@ -95,6 +103,14 @@ assertValidMissionAuthoringBundle(
|
|
|
95
103
|
SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1,
|
|
96
104
|
skywing,
|
|
97
105
|
);
|
|
106
|
+
assertValidMissionAuthoringBundle(
|
|
107
|
+
PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
|
|
108
|
+
paddlePulse,
|
|
109
|
+
);
|
|
110
|
+
assertValidMissionAuthoringBundle(
|
|
111
|
+
METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
|
|
112
|
+
meteorShield,
|
|
113
|
+
);
|
|
98
114
|
```
|
|
99
115
|
|
|
100
116
|
## Contract rules
|
package/dist/index.cjs
CHANGED
|
@@ -25,7 +25,9 @@ __export(index_exports, {
|
|
|
25
25
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT,
|
|
26
26
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1,
|
|
27
27
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
|
|
28
|
+
METEOR_SHIELD_MISSION_ONE_AUTHORING_V1: () => METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
|
|
28
29
|
MISSION_AUTHORING_CONTRACT_VERSION_V1: () => MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
30
|
+
PADDLE_PULSE_MISSION_ONE_AUTHORING_V1: () => PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
|
|
29
31
|
ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1: () => ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
|
|
30
32
|
ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1: () => ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1,
|
|
31
33
|
SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1: () => SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1,
|
|
@@ -1562,6 +1564,446 @@ var SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1 = {
|
|
|
1562
1564
|
]
|
|
1563
1565
|
}
|
|
1564
1566
|
};
|
|
1567
|
+
var PADDLE_PULSE_MISSION_ONE_AUTHORING_V1 = {
|
|
1568
|
+
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
1569
|
+
moduleId: "junior-coder.paddle-pulse",
|
|
1570
|
+
moduleVersion: "1.1.0",
|
|
1571
|
+
missionId: "paddle-pulse-mission-1",
|
|
1572
|
+
learner: {
|
|
1573
|
+
estimatedMinutes: 20,
|
|
1574
|
+
stages: [
|
|
1575
|
+
{
|
|
1576
|
+
kind: "learn",
|
|
1577
|
+
instruction: "Read how paddle width, ball speed and bounce angle change an energy-ball rally.",
|
|
1578
|
+
artifactIds: ["paddle-pulse-m1-art"]
|
|
1579
|
+
},
|
|
1580
|
+
{
|
|
1581
|
+
kind: "predict",
|
|
1582
|
+
instruction: "Predict which direction the energy ball will travel after it reaches the paddle.",
|
|
1583
|
+
artifactIds: []
|
|
1584
|
+
},
|
|
1585
|
+
{
|
|
1586
|
+
kind: "build",
|
|
1587
|
+
instruction: "Adjust the three documented settings in the starter JavaScript.",
|
|
1588
|
+
artifactIds: ["paddle-pulse-m1-code"]
|
|
1589
|
+
},
|
|
1590
|
+
{
|
|
1591
|
+
kind: "run",
|
|
1592
|
+
instruction: "Use the Run action button to start the private energy-court preview.",
|
|
1593
|
+
artifactIds: ["paddle-pulse-m1-code"]
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
kind: "assess",
|
|
1597
|
+
instruction: "Run the visible and protected deterministic rally checks.",
|
|
1598
|
+
artifactIds: []
|
|
1599
|
+
},
|
|
1600
|
+
{
|
|
1601
|
+
kind: "inspect",
|
|
1602
|
+
instruction: "Compare the highlighted setting with the first goal that did not pass.",
|
|
1603
|
+
artifactIds: []
|
|
1604
|
+
},
|
|
1605
|
+
{
|
|
1606
|
+
kind: "fix",
|
|
1607
|
+
instruction: "Change one setting, run again and observe the bounce telemetry.",
|
|
1608
|
+
artifactIds: ["paddle-pulse-m1-code"]
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
kind: "explain",
|
|
1612
|
+
instruction: "Explain how paddle width and bounce angle changed the energy ball path.",
|
|
1613
|
+
artifactIds: []
|
|
1614
|
+
},
|
|
1615
|
+
{
|
|
1616
|
+
kind: "reward",
|
|
1617
|
+
instruction: "Collect the evidence-bound badge when the score and safety check pass.",
|
|
1618
|
+
artifactIds: []
|
|
1619
|
+
}
|
|
1620
|
+
],
|
|
1621
|
+
readinessChecks: [
|
|
1622
|
+
{
|
|
1623
|
+
id: "paddle-pulse-m1-find-angle",
|
|
1624
|
+
prompt: "Point to the setting that changes the direction of the bounce.",
|
|
1625
|
+
scored: false
|
|
1626
|
+
}
|
|
1627
|
+
],
|
|
1628
|
+
artifacts: [
|
|
1629
|
+
{
|
|
1630
|
+
id: "paddle-pulse-m1-code",
|
|
1631
|
+
kind: "starter-code",
|
|
1632
|
+
audience: "learner",
|
|
1633
|
+
solutionBearing: false
|
|
1634
|
+
},
|
|
1635
|
+
{
|
|
1636
|
+
id: "paddle-pulse-m1-art",
|
|
1637
|
+
kind: "starter-assets",
|
|
1638
|
+
audience: "learner",
|
|
1639
|
+
solutionBearing: false
|
|
1640
|
+
},
|
|
1641
|
+
{
|
|
1642
|
+
id: "paddle-pulse-m1-printable",
|
|
1643
|
+
kind: "printable",
|
|
1644
|
+
audience: "learner",
|
|
1645
|
+
solutionBearing: false
|
|
1646
|
+
}
|
|
1647
|
+
],
|
|
1648
|
+
goals: [
|
|
1649
|
+
{
|
|
1650
|
+
id: "paddle-pulse-m1-starts",
|
|
1651
|
+
statement: "The JavaScript settings are valid and the private preview starts.",
|
|
1652
|
+
visibility: "visible",
|
|
1653
|
+
criterionIds: ["paddle-pulse-build"],
|
|
1654
|
+
completionRequired: true,
|
|
1655
|
+
aiRequired: false
|
|
1656
|
+
},
|
|
1657
|
+
{
|
|
1658
|
+
id: "paddle-pulse-m1-controlled-bounce",
|
|
1659
|
+
statement: "The paddle returns the energy ball toward the target wall with a controllable angle.",
|
|
1660
|
+
visibility: "visible",
|
|
1661
|
+
criterionIds: [
|
|
1662
|
+
"paddle-pulse-goal-one",
|
|
1663
|
+
"paddle-pulse-goal-two"
|
|
1664
|
+
],
|
|
1665
|
+
completionRequired: true,
|
|
1666
|
+
aiRequired: false
|
|
1667
|
+
},
|
|
1668
|
+
{
|
|
1669
|
+
id: "paddle-pulse-m1-private-runtime",
|
|
1670
|
+
statement: "The game stays inside the private educational preview boundary.",
|
|
1671
|
+
visibility: "visible",
|
|
1672
|
+
criterionIds: ["paddle-pulse-safety"],
|
|
1673
|
+
completionRequired: true,
|
|
1674
|
+
aiRequired: false
|
|
1675
|
+
}
|
|
1676
|
+
],
|
|
1677
|
+
interactions: [
|
|
1678
|
+
{
|
|
1679
|
+
id: "paddle-pulse-m1-run-control",
|
|
1680
|
+
description: "Start the private energy-court simulation.",
|
|
1681
|
+
primaryMode: "pointer",
|
|
1682
|
+
alternativeIds: ["paddle-pulse-m1-keyboard-run"]
|
|
1683
|
+
},
|
|
1684
|
+
{
|
|
1685
|
+
id: "paddle-pulse-m1-paddle-control",
|
|
1686
|
+
description: "Move the paddle left or right during practice.",
|
|
1687
|
+
primaryMode: "keyboard",
|
|
1688
|
+
alternativeIds: []
|
|
1689
|
+
},
|
|
1690
|
+
{
|
|
1691
|
+
id: "paddle-pulse-m1-ball-motion",
|
|
1692
|
+
description: "Observe the energy ball moving and bouncing across the court.",
|
|
1693
|
+
primaryMode: "motion",
|
|
1694
|
+
alternativeIds: ["paddle-pulse-m1-telemetry"]
|
|
1695
|
+
}
|
|
1696
|
+
],
|
|
1697
|
+
accessibilityAlternatives: [
|
|
1698
|
+
{
|
|
1699
|
+
id: "paddle-pulse-m1-keyboard-run",
|
|
1700
|
+
modes: ["keyboard"],
|
|
1701
|
+
equivalentOutcome: true,
|
|
1702
|
+
description: "Press Enter or Space on the play-icon Run button to start the same preview."
|
|
1703
|
+
},
|
|
1704
|
+
{
|
|
1705
|
+
id: "paddle-pulse-m1-telemetry",
|
|
1706
|
+
modes: ["text", "reduced-motion"],
|
|
1707
|
+
equivalentOutcome: true,
|
|
1708
|
+
description: "Use position, direction and target-status text instead of ball animation."
|
|
1709
|
+
}
|
|
1710
|
+
],
|
|
1711
|
+
evidenceRequirements: [
|
|
1712
|
+
{
|
|
1713
|
+
id: "paddle-pulse-m1-assessment",
|
|
1714
|
+
goalIds: [
|
|
1715
|
+
"paddle-pulse-m1-starts",
|
|
1716
|
+
"paddle-pulse-m1-controlled-bounce",
|
|
1717
|
+
"paddle-pulse-m1-private-runtime"
|
|
1718
|
+
],
|
|
1719
|
+
kind: "assessment-result",
|
|
1720
|
+
retention: "entitlement",
|
|
1721
|
+
containsPersonalData: false
|
|
1722
|
+
},
|
|
1723
|
+
{
|
|
1724
|
+
id: "paddle-pulse-m1-explanation",
|
|
1725
|
+
goalIds: ["paddle-pulse-m1-controlled-bounce"],
|
|
1726
|
+
kind: "learner-explanation",
|
|
1727
|
+
retention: "attempt",
|
|
1728
|
+
containsPersonalData: false
|
|
1729
|
+
}
|
|
1730
|
+
],
|
|
1731
|
+
sideAdventures: [
|
|
1732
|
+
{
|
|
1733
|
+
id: "paddle-pulse-m1-remix",
|
|
1734
|
+
prompt: "Invent an original energy power-up and describe one bounded setting it would change.",
|
|
1735
|
+
completionRequired: false
|
|
1736
|
+
}
|
|
1737
|
+
],
|
|
1738
|
+
rewardBindings: [
|
|
1739
|
+
{
|
|
1740
|
+
id: "paddle-pulse-m1-badge",
|
|
1741
|
+
badgeId: "paddle-pulse-mission-complete",
|
|
1742
|
+
goalIds: [
|
|
1743
|
+
"paddle-pulse-m1-starts",
|
|
1744
|
+
"paddle-pulse-m1-controlled-bounce",
|
|
1745
|
+
"paddle-pulse-m1-private-runtime"
|
|
1746
|
+
],
|
|
1747
|
+
deterministic: true,
|
|
1748
|
+
random: false,
|
|
1749
|
+
tokenConvertible: false
|
|
1750
|
+
}
|
|
1751
|
+
]
|
|
1752
|
+
},
|
|
1753
|
+
facilitator: {
|
|
1754
|
+
artifacts: [
|
|
1755
|
+
{
|
|
1756
|
+
id: "paddle-pulse-m1-answer-key",
|
|
1757
|
+
kind: "answer-key",
|
|
1758
|
+
audience: "facilitator",
|
|
1759
|
+
solutionBearing: true
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
id: "paddle-pulse-m1-protected-tests",
|
|
1763
|
+
kind: "protected-test",
|
|
1764
|
+
audience: "facilitator",
|
|
1765
|
+
solutionBearing: true
|
|
1766
|
+
}
|
|
1767
|
+
],
|
|
1768
|
+
protectedGoals: [
|
|
1769
|
+
{
|
|
1770
|
+
id: "paddle-pulse-m1-protected-resilience",
|
|
1771
|
+
statement: "The runtime clamps unsafe settings and terminates bounded collision simulations.",
|
|
1772
|
+
visibility: "protected",
|
|
1773
|
+
criterionIds: [
|
|
1774
|
+
"paddle-pulse-edge-one",
|
|
1775
|
+
"paddle-pulse-edge-two"
|
|
1776
|
+
],
|
|
1777
|
+
completionRequired: false,
|
|
1778
|
+
aiRequired: false
|
|
1779
|
+
}
|
|
1780
|
+
],
|
|
1781
|
+
prompts: [
|
|
1782
|
+
"Ask the learner which setting changes direction before suggesting a code edit.",
|
|
1783
|
+
"Use visible telemetry and the function reference; never reveal protected numeric targets or expected source fragments."
|
|
1784
|
+
]
|
|
1785
|
+
}
|
|
1786
|
+
};
|
|
1787
|
+
var METEOR_SHIELD_MISSION_ONE_AUTHORING_V1 = {
|
|
1788
|
+
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
1789
|
+
moduleId: "junior-coder.meteor-shield",
|
|
1790
|
+
moduleVersion: "1.1.0",
|
|
1791
|
+
missionId: "meteor-shield-mission-1",
|
|
1792
|
+
learner: {
|
|
1793
|
+
estimatedMinutes: 20,
|
|
1794
|
+
stages: [
|
|
1795
|
+
{
|
|
1796
|
+
kind: "learn",
|
|
1797
|
+
instruction: "Read how target column, shield energy and launch delay change a rescue defence.",
|
|
1798
|
+
artifactIds: ["meteor-shield-m1-art"]
|
|
1799
|
+
},
|
|
1800
|
+
{
|
|
1801
|
+
kind: "predict",
|
|
1802
|
+
instruction: "Predict which rescue base the shield will protect first.",
|
|
1803
|
+
artifactIds: []
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
kind: "build",
|
|
1807
|
+
instruction: "Adjust the three documented settings in the starter JavaScript.",
|
|
1808
|
+
artifactIds: ["meteor-shield-m1-code"]
|
|
1809
|
+
},
|
|
1810
|
+
{
|
|
1811
|
+
kind: "run",
|
|
1812
|
+
instruction: "Use the Run action button to start the private meteor-wave preview.",
|
|
1813
|
+
artifactIds: ["meteor-shield-m1-code"]
|
|
1814
|
+
},
|
|
1815
|
+
{
|
|
1816
|
+
kind: "assess",
|
|
1817
|
+
instruction: "Run the visible and protected deterministic defence checks.",
|
|
1818
|
+
artifactIds: []
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
kind: "inspect",
|
|
1822
|
+
instruction: "Compare the highlighted setting with the first goal that did not pass.",
|
|
1823
|
+
artifactIds: []
|
|
1824
|
+
},
|
|
1825
|
+
{
|
|
1826
|
+
kind: "fix",
|
|
1827
|
+
instruction: "Change one setting, run again and observe the energy and target telemetry.",
|
|
1828
|
+
artifactIds: ["meteor-shield-m1-code"]
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
kind: "explain",
|
|
1832
|
+
instruction: "Explain how targeting and launch timing affected the remaining shield energy.",
|
|
1833
|
+
artifactIds: []
|
|
1834
|
+
},
|
|
1835
|
+
{
|
|
1836
|
+
kind: "reward",
|
|
1837
|
+
instruction: "Collect the evidence-bound badge when the score and safety check pass.",
|
|
1838
|
+
artifactIds: []
|
|
1839
|
+
}
|
|
1840
|
+
],
|
|
1841
|
+
readinessChecks: [
|
|
1842
|
+
{
|
|
1843
|
+
id: "meteor-shield-m1-find-energy",
|
|
1844
|
+
prompt: "Point to the setting that limits how many shields can launch.",
|
|
1845
|
+
scored: false
|
|
1846
|
+
}
|
|
1847
|
+
],
|
|
1848
|
+
artifacts: [
|
|
1849
|
+
{
|
|
1850
|
+
id: "meteor-shield-m1-code",
|
|
1851
|
+
kind: "starter-code",
|
|
1852
|
+
audience: "learner",
|
|
1853
|
+
solutionBearing: false
|
|
1854
|
+
},
|
|
1855
|
+
{
|
|
1856
|
+
id: "meteor-shield-m1-art",
|
|
1857
|
+
kind: "starter-assets",
|
|
1858
|
+
audience: "learner",
|
|
1859
|
+
solutionBearing: false
|
|
1860
|
+
},
|
|
1861
|
+
{
|
|
1862
|
+
id: "meteor-shield-m1-printable",
|
|
1863
|
+
kind: "printable",
|
|
1864
|
+
audience: "learner",
|
|
1865
|
+
solutionBearing: false
|
|
1866
|
+
}
|
|
1867
|
+
],
|
|
1868
|
+
goals: [
|
|
1869
|
+
{
|
|
1870
|
+
id: "meteor-shield-m1-starts",
|
|
1871
|
+
statement: "The JavaScript settings are valid and the private preview starts.",
|
|
1872
|
+
visibility: "visible",
|
|
1873
|
+
criterionIds: ["meteor-shield-build"],
|
|
1874
|
+
completionRequired: true,
|
|
1875
|
+
aiRequired: false
|
|
1876
|
+
},
|
|
1877
|
+
{
|
|
1878
|
+
id: "meteor-shield-m1-resource-defence",
|
|
1879
|
+
statement: "A shield launches toward the selected meteor while keeping enough energy for the next wave.",
|
|
1880
|
+
visibility: "visible",
|
|
1881
|
+
criterionIds: [
|
|
1882
|
+
"meteor-shield-goal-one",
|
|
1883
|
+
"meteor-shield-goal-two"
|
|
1884
|
+
],
|
|
1885
|
+
completionRequired: true,
|
|
1886
|
+
aiRequired: false
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
id: "meteor-shield-m1-private-runtime",
|
|
1890
|
+
statement: "The game stays inside the private educational preview boundary.",
|
|
1891
|
+
visibility: "visible",
|
|
1892
|
+
criterionIds: ["meteor-shield-safety"],
|
|
1893
|
+
completionRequired: true,
|
|
1894
|
+
aiRequired: false
|
|
1895
|
+
}
|
|
1896
|
+
],
|
|
1897
|
+
interactions: [
|
|
1898
|
+
{
|
|
1899
|
+
id: "meteor-shield-m1-run-control",
|
|
1900
|
+
description: "Start the private meteor-wave simulation.",
|
|
1901
|
+
primaryMode: "pointer",
|
|
1902
|
+
alternativeIds: ["meteor-shield-m1-keyboard-run"]
|
|
1903
|
+
},
|
|
1904
|
+
{
|
|
1905
|
+
id: "meteor-shield-m1-target-control",
|
|
1906
|
+
description: "Move the targeting reticle between rescue columns and launch a shield.",
|
|
1907
|
+
primaryMode: "keyboard",
|
|
1908
|
+
alternativeIds: []
|
|
1909
|
+
},
|
|
1910
|
+
{
|
|
1911
|
+
id: "meteor-shield-m1-wave-motion",
|
|
1912
|
+
description: "Observe meteors and shield pulses crossing the rescue zone.",
|
|
1913
|
+
primaryMode: "motion",
|
|
1914
|
+
alternativeIds: ["meteor-shield-m1-telemetry"]
|
|
1915
|
+
}
|
|
1916
|
+
],
|
|
1917
|
+
accessibilityAlternatives: [
|
|
1918
|
+
{
|
|
1919
|
+
id: "meteor-shield-m1-keyboard-run",
|
|
1920
|
+
modes: ["keyboard"],
|
|
1921
|
+
equivalentOutcome: true,
|
|
1922
|
+
description: "Press Enter or Space on the play-icon Run button to start the same preview."
|
|
1923
|
+
},
|
|
1924
|
+
{
|
|
1925
|
+
id: "meteor-shield-m1-telemetry",
|
|
1926
|
+
modes: ["text", "reduced-motion"],
|
|
1927
|
+
equivalentOutcome: true,
|
|
1928
|
+
description: "Use target column, wave, distance and energy text instead of projectile animation."
|
|
1929
|
+
}
|
|
1930
|
+
],
|
|
1931
|
+
evidenceRequirements: [
|
|
1932
|
+
{
|
|
1933
|
+
id: "meteor-shield-m1-assessment",
|
|
1934
|
+
goalIds: [
|
|
1935
|
+
"meteor-shield-m1-starts",
|
|
1936
|
+
"meteor-shield-m1-resource-defence",
|
|
1937
|
+
"meteor-shield-m1-private-runtime"
|
|
1938
|
+
],
|
|
1939
|
+
kind: "assessment-result",
|
|
1940
|
+
retention: "entitlement",
|
|
1941
|
+
containsPersonalData: false
|
|
1942
|
+
},
|
|
1943
|
+
{
|
|
1944
|
+
id: "meteor-shield-m1-explanation",
|
|
1945
|
+
goalIds: ["meteor-shield-m1-resource-defence"],
|
|
1946
|
+
kind: "learner-explanation",
|
|
1947
|
+
retention: "attempt",
|
|
1948
|
+
containsPersonalData: false
|
|
1949
|
+
}
|
|
1950
|
+
],
|
|
1951
|
+
sideAdventures: [
|
|
1952
|
+
{
|
|
1953
|
+
id: "meteor-shield-m1-remix",
|
|
1954
|
+
prompt: "Invent an original rescue-base signal and describe the safe game event that activates it.",
|
|
1955
|
+
completionRequired: false
|
|
1956
|
+
}
|
|
1957
|
+
],
|
|
1958
|
+
rewardBindings: [
|
|
1959
|
+
{
|
|
1960
|
+
id: "meteor-shield-m1-badge",
|
|
1961
|
+
badgeId: "meteor-shield-mission-complete",
|
|
1962
|
+
goalIds: [
|
|
1963
|
+
"meteor-shield-m1-starts",
|
|
1964
|
+
"meteor-shield-m1-resource-defence",
|
|
1965
|
+
"meteor-shield-m1-private-runtime"
|
|
1966
|
+
],
|
|
1967
|
+
deterministic: true,
|
|
1968
|
+
random: false,
|
|
1969
|
+
tokenConvertible: false
|
|
1970
|
+
}
|
|
1971
|
+
]
|
|
1972
|
+
},
|
|
1973
|
+
facilitator: {
|
|
1974
|
+
artifacts: [
|
|
1975
|
+
{
|
|
1976
|
+
id: "meteor-shield-m1-answer-key",
|
|
1977
|
+
kind: "answer-key",
|
|
1978
|
+
audience: "facilitator",
|
|
1979
|
+
solutionBearing: true
|
|
1980
|
+
},
|
|
1981
|
+
{
|
|
1982
|
+
id: "meteor-shield-m1-protected-tests",
|
|
1983
|
+
kind: "protected-test",
|
|
1984
|
+
audience: "facilitator",
|
|
1985
|
+
solutionBearing: true
|
|
1986
|
+
}
|
|
1987
|
+
],
|
|
1988
|
+
protectedGoals: [
|
|
1989
|
+
{
|
|
1990
|
+
id: "meteor-shield-m1-protected-resilience",
|
|
1991
|
+
statement: "The runtime clamps unsafe resources and terminates bounded projectile simulations.",
|
|
1992
|
+
visibility: "protected",
|
|
1993
|
+
criterionIds: [
|
|
1994
|
+
"meteor-shield-edge-one",
|
|
1995
|
+
"meteor-shield-edge-two"
|
|
1996
|
+
],
|
|
1997
|
+
completionRequired: false,
|
|
1998
|
+
aiRequired: false
|
|
1999
|
+
}
|
|
2000
|
+
],
|
|
2001
|
+
prompts: [
|
|
2002
|
+
"Ask the learner which setting controls a limited resource before suggesting a code edit.",
|
|
2003
|
+
"Use visible telemetry and the function reference; never reveal protected numeric targets or expected source fragments."
|
|
2004
|
+
]
|
|
2005
|
+
}
|
|
2006
|
+
};
|
|
1565
2007
|
var ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1 = {
|
|
1566
2008
|
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
1567
2009
|
moduleId: "junior-coder.road-hopper-rally",
|
|
@@ -1916,7 +2358,9 @@ ${summary}`);
|
|
|
1916
2358
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT,
|
|
1917
2359
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1,
|
|
1918
2360
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
|
|
2361
|
+
METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
|
|
1919
2362
|
MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
2363
|
+
PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
|
|
1920
2364
|
ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
|
|
1921
2365
|
ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1,
|
|
1922
2366
|
SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1,
|