vibe64 0.1.35 → 0.1.37

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.
Files changed (210) hide show
  1. package/bin/run.js +1984 -1685
  2. package/bin/server.js +158 -111
  3. package/bin/upgrade-state.js +5754 -5522
  4. package/dist/assets/GithubBrowserTabs-BykoCFfz.js +1 -0
  5. package/dist/assets/{StudioErrorNotice-sQfmeR-z.js → StudioErrorNotice-CSrUw1QV.js} +1 -1
  6. package/dist/assets/{Vibe64AsyncModuleState-Dx7YKRPp.js → Vibe64AsyncModuleState-Do9EqX3S.js} +1 -1
  7. package/dist/assets/Vibe64AuthSettingsButton-CIwtchKm.js +5 -0
  8. package/dist/assets/Vibe64AuthSettingsButton-M44SSmZ9.css +1 -0
  9. package/dist/assets/{Vibe64DashboardBackButton-yE6cyYg2.js → Vibe64DashboardBackButton-BH_8j_VR.js} +1 -1
  10. package/dist/assets/Vibe64DashboardShell-DXVDJUAY.js +1 -0
  11. package/dist/assets/{Vibe64DashboardShell-MBkUHjs-.css → Vibe64DashboardShell-De2mbdpI.css} +1 -1
  12. package/dist/assets/{Vibe64DatabaseWorkspace-BONJdxBS.js → Vibe64DatabaseWorkspace-Ca8IHSRq.js} +3 -3
  13. package/dist/assets/{Vibe64DatabaseWorkspace-CR4pzzcf.css → Vibe64DatabaseWorkspace-DPDMxhAW.css} +1 -1
  14. package/dist/assets/Vibe64OutputControls-Co5YzwcK.css +1 -0
  15. package/dist/assets/Vibe64OutputControls-DngQNTTt.js +8 -0
  16. package/dist/assets/{Vibe64RepositoryWorkspace-CVHcT93M.css → Vibe64RepositoryWorkspace-Agyt4O-V.css} +1 -1
  17. package/dist/assets/{Vibe64RepositoryWorkspace-ByQlZbyO.js → Vibe64RepositoryWorkspace-BfsZozSJ.js} +2 -2
  18. package/dist/assets/Vibe64SessionFiles-Bl8wJ5Sk.css +1 -0
  19. package/dist/assets/Vibe64SessionFiles-n87RqqY6.js +41 -0
  20. package/dist/assets/{Vibe64TemporaryAiFixAction-BGlcrq4d.js → Vibe64TemporaryAiFixAction-BiuIE9mC.js} +1 -1
  21. package/dist/assets/{Vibe64UiStoryboardView-Brlwdvqi.js → Vibe64UiStoryboardView-BhKRpL0N.js} +1 -1
  22. package/dist/assets/{Vibe64UnavailableSessions-zwlWlcZD.js → Vibe64UnavailableSessions-Ca5nC7KH.js} +1 -1
  23. package/dist/assets/{_sessionId_-CvOkQbVy.js → _sessionId_-B_TTRB4c.js} +1 -1
  24. package/dist/assets/{_sessionTool_-Dwod5ns9.js → _sessionTool_-1V-z6Pbp.js} +1 -1
  25. package/dist/assets/_slug_-Buxpw0T4.css +1 -0
  26. package/dist/assets/_slug_-DsqilUs_.js +24 -0
  27. package/dist/assets/{access-BVu5XYm2.js → access-tl4ht_d8.js} +1 -1
  28. package/dist/assets/app-CZu7oxUO.css +1 -0
  29. package/dist/assets/app-DT4_MliP.js +1 -0
  30. package/dist/assets/{assistantRouting-CwbwfkwB.js → assistantRouting-D4XpXcEf.js} +1 -1
  31. package/dist/assets/{changes-olY8cnFK.js → changes-DZWHZguL.js} +1 -1
  32. package/dist/assets/client-BWV84wi2.js +2 -0
  33. package/dist/assets/client-DGrP-2AJ.css +1 -0
  34. package/dist/assets/conversation-B90ERX9h.js +17 -0
  35. package/dist/assets/conversation-vxJGwmtW.css +1 -0
  36. package/dist/assets/{dashboard-BnXD-H4R.js → dashboard-iREwhGqv.js} +1 -1
  37. package/dist/assets/definitions-CNu5E87y.js +1 -0
  38. package/dist/assets/{env-DJhnLOH7.css → env-BzRtyO0w.css} +1 -1
  39. package/dist/assets/env-D5KpTEw7.js +1 -0
  40. package/dist/assets/health-BJvooRnJ.css +1 -0
  41. package/dist/assets/health-BhoO1d4h.js +1 -0
  42. package/dist/assets/{history-BxlpB-YH.js → history-DVURy45X.js} +1 -1
  43. package/dist/assets/{incoming-BOxRVlOM.js → incoming-DzADFGqp.js} +1 -1
  44. package/dist/assets/index-GBRpNZLy.js +138 -0
  45. package/dist/assets/index-irlMYzLh.css +1 -0
  46. package/dist/assets/{integrations-BFltGDVI.js → integrations-Dy5jIiJ5.js} +2 -2
  47. package/dist/assets/issues-lh7R775d.js +1 -0
  48. package/dist/assets/learning-_O1PEaam.js +1 -0
  49. package/dist/assets/mdi-CG9pWOSj.js +1 -0
  50. package/dist/assets/placement-BF-zIEhA.js +1 -0
  51. package/dist/assets/pull-requests-ByE-Dvk7.js +1 -0
  52. package/dist/assets/{repository-JWLVST3D.js → repository-BUfUAyS9.js} +1 -1
  53. package/dist/assets/roboto-latin-wght-normal-ccAYIvAh.woff2 +0 -0
  54. package/dist/assets/{session-C5Nj8Dlq.js → session-BdhKrcX4.js} +1 -1
  55. package/dist/assets/settings-CzhIcn9K.js +1 -0
  56. package/dist/assets/shared-DpMvYJO3.js +2 -0
  57. package/dist/assets/studioGateApi-DcCqiD9V.js +1 -0
  58. package/dist/assets/studioUrls-DmMMIScP.js +1 -0
  59. package/dist/assets/useArchivedVibe64Sessions-CLHJOyeW.js +1 -0
  60. package/dist/assets/useCommand-Bqxb-naz.js +1 -0
  61. package/dist/assets/useEndpointResource-DWoQ2keu.js +1 -0
  62. package/dist/assets/useRealtimeEvent-Bwapstla.js +1 -0
  63. package/dist/assets/{useUiFeedback-0FqKuZRP.js → useUiFeedback-BPBF_0bp.js} +1 -1
  64. package/dist/assets/useVibe64ConversationLog-B4JgmxUf.js +1 -0
  65. package/dist/assets/useVibe64DatabaseTools-4o6S8eXq.js +1 -0
  66. package/dist/assets/useVibe64Learning-DyqXkpLw.js +1 -0
  67. package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +1 -0
  68. package/dist/assets/useVibe64SessionData-YhhE_5pC.js +1 -0
  69. package/dist/assets/useVibe64SessionSelection-CuZCzAcY.js +1 -0
  70. package/dist/assets/useVibe64SystemGraph-B4RmsC9Y.js +1 -0
  71. package/dist/assets/{useVibe64Terminal-BPnN25WH.js → useVibe64Terminal-Cg3idMcy.js} +1 -1
  72. package/dist/assets/vibe64AssistantHost-CP6oxv5b.js +1 -0
  73. package/dist/assets/{vibe64SessionFocus-kqPOPaOH.js → vibe64SessionFocus-Cz5Vq1re.js} +1 -1
  74. package/dist/assets/{vibe64SessionInfo-BHxtTrLX.js → vibe64SessionInfo-BuBUdL-e.js} +1 -1
  75. package/dist/assets/{vibe64SessionPanelModel-BMf64fv7.js → vibe64SessionPanelModel-DDorOuiL.js} +1 -1
  76. package/dist/assets/{vibe64SessionToolDefinitions-NfLd1HZI.js → vibe64SessionToolDefinitions-BJaJH5LR.js} +1 -1
  77. package/dist/index.html +21 -20
  78. package/docs/colleague-usage/account-profile-and-appearance.md +8 -2
  79. package/docs/colleague-usage/ai-accounts-and-routing.md +127 -16
  80. package/docs/colleague-usage/ai-onboarding.md +229 -0
  81. package/docs/colleague-usage/coding-agent-goal-pause.md +5 -5
  82. package/docs/colleague-usage/coding-agents.md +21 -0
  83. package/docs/colleague-usage/colleague-watches.md +4 -23
  84. package/docs/colleague-usage/colleague.md +10 -2
  85. package/docs/colleague-usage/connected-projects.md +10 -2
  86. package/docs/colleague-usage/conversation-context.md +2 -0
  87. package/docs/colleague-usage/dashboard-navigation.md +19 -27
  88. package/docs/colleague-usage/database.md +6 -11
  89. package/docs/colleague-usage/development-copies.md +2 -1
  90. package/docs/colleague-usage/development-env.md +6 -0
  91. package/docs/colleague-usage/github-work.md +9 -0
  92. package/docs/colleague-usage/health-checks.md +11 -5
  93. package/docs/colleague-usage/integrations.md +3 -1
  94. package/docs/colleague-usage/learning-code-questions.md +23 -51
  95. package/docs/colleague-usage/learning-course-catalogue.md +8 -6
  96. package/docs/colleague-usage/learning-environment.md +337 -0
  97. package/docs/colleague-usage/learning-history.md +70 -101
  98. package/docs/colleague-usage/learning-mode-ui.md +129 -214
  99. package/docs/colleague-usage/learning-practice-projects.md +178 -78
  100. package/docs/colleague-usage/learning-teacher-guide.md +48 -26
  101. package/docs/colleague-usage/learning-with-colleague.md +195 -216
  102. package/docs/colleague-usage/lesson-authoring.md +41 -24
  103. package/docs/colleague-usage/lesson-step-bar.md +99 -0
  104. package/docs/colleague-usage/managed-app-access.md +7 -0
  105. package/docs/colleague-usage/message-delivery-recovery.md +7 -6
  106. package/docs/colleague-usage/preview-browser-checks.md +9 -1
  107. package/docs/colleague-usage/preview-starting-application.md +0 -1
  108. package/docs/colleague-usage/preview.md +12 -1
  109. package/docs/colleague-usage/project-messages.md +2 -2
  110. package/docs/colleague-usage/project-setup.md +9 -2
  111. package/docs/colleague-usage/running-vibe64-on-your-computer.md +61 -0
  112. package/docs/colleague-usage/sessions.md +25 -33
  113. package/docs/colleague-usage/teaching-content.md +14 -40
  114. package/docs/colleague-usage/temporary-chats.md +23 -2
  115. package/docs/colleague-usage/voice-chat.md +5 -10
  116. package/docs/colleague-usage/voice-face-and-speaking-voice.md +6 -8
  117. package/docs/colleague-usage/voice-recovery.md +3 -2
  118. package/docs/templates/learn-topic/README.md +6 -6
  119. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +28 -7
  120. package/docs/templates/learn-topic/training/lessons/TOPIC-01/notes.md +19 -0
  121. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/check-understanding.md +3 -0
  122. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/explain-idea.md +3 -0
  123. package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/try-it.md +3 -0
  124. package/docs/templates/learn-topic/training/outline.md +1 -1
  125. package/docs/training-content.md +319 -66
  126. package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
  127. package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
  128. package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md +3 -2
  129. package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/integrations.json +3 -2
  130. package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
  131. package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
  132. package/node_modules/@jskit-ai/connectors-catalog/patterns/ai-connections/PATTERN.md +4 -3
  133. package/node_modules/@jskit-ai/connectors-catalog/src/shared/ai-models.json +0 -1
  134. package/node_modules/@local/vibe64-accounts/package.json +1 -0
  135. package/node_modules/@local/vibe64-colleague/package.json +2 -1
  136. package/node_modules/@local/vibe64-core/package.json +3 -0
  137. package/node_modules/@local/vibe64-execution/package.json +1 -0
  138. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +171 -174
  139. package/node_modules/@local/vibe64-execution/src/server/engines/stdioBridge.js +9 -9
  140. package/node_modules/@local/vibe64-execution/src/server/hostProfile.js +12 -0
  141. package/node_modules/@local/vibe64-genesis/README.md +10 -37
  142. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +790 -779
  143. package/node_modules/@local/vibe64-genesis/package.json +1 -0
  144. package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +255 -0
  145. package/node_modules/@local/vibe64-genesis/src/server/index.js +473 -450
  146. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +148 -148
  147. package/node_modules/@local/vibe64-project/package.json +2 -1
  148. package/node_modules/@local/vibe64-runtime/package.json +1 -2
  149. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +526 -512
  150. package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +0 -1
  151. package/node_modules/@local/vibe64-source-editor/package.json +1 -0
  152. package/node_modules/@local/vibe64-terminals/package.json +2 -0
  153. package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +129 -131
  154. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1508 -1456
  155. package/node_modules/@local/vibe64-training/package.json +16 -27
  156. package/package.json +7 -7
  157. package/server.bundle.mjs +41339 -41635
  158. package/dist/assets/GithubBrowserTabs-DO5PHon-.js +0 -1
  159. package/dist/assets/GithubMarkdown-BQ6MfCDJ.js +0 -3
  160. package/dist/assets/GithubMarkdown-U7-j-qNI.css +0 -1
  161. package/dist/assets/Vibe64DashboardShell-CuCVMhOc.js +0 -1
  162. package/dist/assets/Vibe64OutputControls-DAAmA09l.js +0 -8
  163. package/dist/assets/Vibe64OutputControls-DPBsyDZM.css +0 -1
  164. package/dist/assets/Vibe64SessionFiles-B0u9HKdF.js +0 -107
  165. package/dist/assets/Vibe64SessionFiles-NjOMVwPR.css +0 -1
  166. package/dist/assets/_slug_-B31c15cc.css +0 -1
  167. package/dist/assets/_slug_-Dy35qLo1.js +0 -1
  168. package/dist/assets/app-DRXCcv05.css +0 -1
  169. package/dist/assets/app-zt7HwQKT.js +0 -1
  170. package/dist/assets/client-BrV4QPwG.js +0 -2
  171. package/dist/assets/client-C1bwIlu6.css +0 -1
  172. package/dist/assets/definitions-DaOPIkyB.js +0 -1
  173. package/dist/assets/env-DN0vW4EI.js +0 -1
  174. package/dist/assets/health-7oIQODer.css +0 -1
  175. package/dist/assets/health-Z6m96GDr.js +0 -1
  176. package/dist/assets/index-BUq-MczL.js +0 -86
  177. package/dist/assets/index-DtmBqE3h.css +0 -1
  178. package/dist/assets/issues-1iS5zoed.js +0 -1
  179. package/dist/assets/layout-BkWVNT37.js +0 -1
  180. package/dist/assets/mdi-C54lQ0i_.js +0 -1
  181. package/dist/assets/placement-DLsU3pCW.js +0 -1
  182. package/dist/assets/pull-requests-BJOwNL4k.js +0 -1
  183. package/dist/assets/settings-c273Ikrm.js +0 -1
  184. package/dist/assets/shared-YZb7ocaK.js +0 -2
  185. package/dist/assets/studioGateApi-DhA9IJGZ.js +0 -1
  186. package/dist/assets/studioUrls-Dj8rXeXO.js +0 -1
  187. package/dist/assets/useArchivedVibe64Sessions-CVZx2Rtm.js +0 -1
  188. package/dist/assets/useCommand-DWuxfAV0.js +0 -1
  189. package/dist/assets/useEndpointResource-MWVNfmMa.js +0 -1
  190. package/dist/assets/useVibe64ConversationLog-8cKh1eDm.js +0 -1
  191. package/dist/assets/useVibe64DatabaseTools-BcRG1s3i.js +0 -1
  192. package/dist/assets/useVibe64LearningMode-Bl0dGdCh.js +0 -28
  193. package/dist/assets/useVibe64LearningMode-C3PcXdVg.css +0 -1
  194. package/dist/assets/useVibe64ProjectScope-DOEVkBqX.js +0 -1
  195. package/dist/assets/useVibe64SessionData-DFTyLzci.js +0 -1
  196. package/dist/assets/useVibe64SessionSelection-j9lsllx4.js +0 -1
  197. package/dist/assets/useVibe64SystemGraph-tNkIwSBQ.js +0 -1
  198. package/dist/assets/vibe64AssistantHost-DdE_-lZF.js +0 -1
  199. package/dist/assets/vibe64LessonDashboard-DlKYjisq.js +0 -1
  200. package/dist/assets/vibe64ProjectScope.local-DqT6e5un.js +0 -1
  201. package/docs/colleague-usage/learning-chat-retention.md +0 -74
  202. package/docs/colleague-usage/learning-diagrams-and-voice.md +0 -97
  203. package/docs/colleague-usage/learning-lesson-watch.md +0 -95
  204. package/docs/colleague-usage/learning-native-session.md +0 -206
  205. package/docs/colleague-usage/learning-practical-exercises.md +0 -71
  206. package/docs/colleague-usage/learning-practical-gestures.md +0 -48
  207. package/docs/colleague-usage/learning-session-creation.md +0 -95
  208. package/docs/colleague-usage/lesson-practical-assessment.md +0 -54
  209. package/docs/colleague-usage/preview-lesson-presentation.md +0 -56
  210. package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.md +0 -44
@@ -1,218 +1,197 @@
1
- # Lessons: Main teaches, Colleague supervises
1
+ # Lessons: Colleague teaches
2
2
 
3
3
  For authoring and Git publication, read `lesson-authoring`. For pinned content
4
- and owner recovery, read `teaching-content`.
5
-
6
- ## Asking Colleague about lessons
7
-
8
- Ask Colleague to list available courses or read your saved lesson; these reads
9
- change no project or progress. A direct start request or accepted offer authorizes
10
- reservation of that exact lesson and preparation of its declared exercise.
11
- Resume after interruption to retain the saved attempt. If preparation is
12
- unsupported, ask the owner to configure it, then retry that attempt.
13
- The yellow **L** and session panel attach Learning mode; read `learning-mode-ui`
14
- for controls and retained Working selection. Main teaches the saved lesson.
15
- Colleague supervises selection, progress and authoring; its catalogue and execution
16
- refuse question preparation, quiz/practical grading and all five lesson visual
17
- operations, including old contracts. Missing Main support leaves teaching pending;
18
- start/resume does not prove its chat opened. An empty catalogue requires owner
19
- installation/enablement, never substitute content.
20
-
21
- Questions and diagrams continue in saved Main with Colleague's drawer closed.
22
- Opening Colleague grants no missing teacher/grading support. The return practical
23
- requires its actual drawer controls and your explanation to Main. Colleague can
24
- explain native observation facts/accepted steps from its context query; those facts
25
- are not a pass. Missing facts do not prove lost steps: ask Main to check the current
26
- question before repeating the practical.
27
-
28
- Colleague can start and control a watcher for the current learner task through its
29
- eye-button dialog while you continue using Main. Starting from a delivered question
30
- captures that exact question, attempt, content pin, project/session and initiating
31
- browser. For a task without a delivered question, name one bounded criterion. The
32
- separate Learning watcher is event-first and performs bounded code-only
33
- reconciliation; Colleague and Main do not check your activity, keep an AI turn
34
- open or repeatedly call a model. **Pause**, **Resume** and **Stop** remain explicit.
35
- Leaving the target or losing current authority pauses it, and Resume performs a
36
- fresh access check. Its allowlisted control/view/progress facts are status context
37
- only and cannot pass an assessment.
38
-
39
- A direct “Watch me while I do this” request lets Colleague start that same watch
40
- from the currently connected Learning task. A how-to question only explains the
41
- controls. Ask Colleague to read, pause, resume or stop it, or use the eye dialog;
42
- both paths update the same watch ID. Status includes the exact goal and target,
43
- latest observation time, last delivered-help receipt and any saved assessment
44
- outcome. Stop ends observation only, not Main, the lesson or the application.
45
- Polling grants no source, Git, publication, provider, account or other mutation
46
- permission. Unsupported in-app behavior must be reported as unobservable.
47
-
48
- After a confirmed relevant step or an explicit observed failure, polling can give
49
- the same saved Main teacher one bounded application update. Main waits if your
50
- current turn is still running, then may connect confirmed progress to the current
51
- criterion or offer one useful hint for the reported failure. The update is not
52
- shown as words authored by you, cannot answer a pending question, and cannot award
53
- a pass. Repeated identical evidence is coalesced, and merely being quiet or away
54
- does not trigger another teacher turn. Pause or Stop discards undelivered help.
55
-
56
- A no-exercise lesson stays reserved without a practice project or Workspace setup.
57
- Its Learning Main is a private teacher conversation; the fresh brief reports
58
- `lesson.exerciseRequired: false`. Supported Main quizzes assess accepted answers
59
- against the pinned rubric and save progress. Practicals require native observations;
60
- missing support leaves them incomplete. Keep practical/diagram readiness guards,
61
- and do not inspect/resume a nonexistent practice session. An unexpected exercise
62
- checkpoint requires explicit end/restart with progress retained, never silent repair.
63
-
64
- Saved `preparation.phase` is a checkpoint, not live setup status. If it remains
65
- `preparing`, finish the already-requested lesson with `lesson.resume` on that same
66
- attempt; rereading `learning.read` cannot advance it. `sessions.inspect` reports
67
- the reserved session's actual `workspaceSetupStatus`. Resume rechecks that setup
68
- and saves proven readiness before `question.prepare`. Do not claim still running
69
- or nothing broken from the checkpoint. Ready is not running App Preview.
70
-
71
- Before each start, read `vibe64.training.courses.list` in that supervisor turn
72
- and `vibe64.training.learning.read` for the current revision/attempt. Choose an
73
- enabled listed release/lesson; historical catalogue results may be obsolete.
74
- After refusal, reread both before explaining it. A disabled old release does not
75
- prove the current course unavailable. Never call rejection successful or reuse
76
- its request identity for another release.
77
-
78
- The catalogue's topic IDs identify pinned lesson content, not ordinary help
79
- topics. Do not pass them to `usage.guide.read`. After a successful start, read the
80
- exact returned attempt through `vibe64.training.teaching-brief.read`; that owner
81
- provides the teaching text, rubrics and diagrams. A missing help topic is not
82
- evidence that an installed course's content is missing. If the native brief or
83
- preparation actually fails, report that result and retain its exact saved target.
84
- Main receives the complete bounded teaching brief, including its rubric and saved
85
- results. It does not shorten a valid lesson to fit a smaller tool response. A brief
86
- that exceeds the teaching owner's 128 KiB bound is refused; retain the saved attempt
87
- and ask the content author to shorten the lesson rather than retrying an unchanged read.
88
-
89
- A host-enabled Main lesson diagram uses the existing Preview area's lesson
90
- **Presentation**. Read `learning-mode-ui` for its actual view choices; **App**
91
- requires a real prepared exercise. The application and diagram remain mounted
92
- while switching supported views.
93
- Hidden supported motion pauses; restoring a diagram does not automatically replay
94
- it. Diagram state and completion are display facts, not learner assessment evidence.
95
- A diagram component alone does not establish active teaching or completed
96
- narration. Require its actual Main/native and player receipts.
97
-
98
-
99
- For explicitly ending a lesson and continuing its retained pin in a fresh exercise, read
100
- [Lesson history and resume](learning-history.md).
101
- An explicitly started newer topic can retain passes for a lesson whose code and
102
- content hash are unchanged. Colleague reads the fresh brief's retained results and
103
- continues the remaining assessments; changed lesson content requires its own
104
- assessment. This never transfers another person's results or proves that a new
105
- practice project is running.
106
-
107
- Only the host-registered native assessment operation can save a pass, using the
108
- pinned rubric, admitted learner message and required observation. Colleague's
109
- agreement, diagram motion, opened views, provisional words and demonstrations
110
- are insufficient. Unavailable evaluation/cleanup leaves results unsaved for retry.
111
- After substantial help or demonstration, require an independent follow-up;
112
- there is no raw pass-writing control.
113
-
114
- Use host-registered **question.prepare** in the current interactive teaching
115
- turn after reading the exact brief/revision and finishing any diagram/audio cue.
116
- Record actual help; retries retain the same request ID. After success, the whole
117
- final reply must equal the returned question text without additions. **Prepared**
118
- is not delivered or passed: only that exact completed final reply in this chat
119
- establishes delivery, never progress text. No learner button is added.
120
-
121
- Failed preparation/staging retains the attempt and request for read/retry; never
122
- invent an ID to hide uncertainty. Historical questions without help/issued-revision
123
- provenance require explicit fresh preparation, not an assumption of no help.
124
- Later cue/pause checkpoints retain the question; replacement makes queued old
125
- answers stale. Saving/displaying a question neither accepts an answer nor grants
126
- evaluation/pass authority.
127
-
128
- A teaching cue binds one declared diagram transition to the actual final
129
- Main explanation, never a tool-progress sentence. Motion follows audible
130
- speech start; with sound off, **Continue** follows the finished transcript
131
- explanation. **Play diagram without sound** is an explicit recovery while sound
132
- has not started. The next cue/question waits for actual display and required audio
133
- completion. Hiding, stopping or reloading retires the cue; ask for an explicit
134
- repeat. These facts grant no assessment pass and do not start another assistant
135
- turn automatically. On phones the presentation opens in Preview with Colleague
136
- minimised, preserving its voice session and separate typed draft.
137
-
138
-
139
- When the host supplies the question owner, a typed Send captures the question
140
- actually delivered by the completed Main reply in that lesson chat. A saved lesson
141
- checkpoint or tool-progress sentence alone does not make a question available.
142
- Speech keeps the question captured when that utterance began, including while it waits behind a working reply or remains in review.
143
- Showing a newer question does not move those earlier words to it. A valid native
144
- admission retains the issued question and its recorded assistance with your
145
- actual message identity and the native question reply/output identity; this
146
- alone does not evaluate or pass the answer. A fresh chat does not reattach words
147
- to a question delivered in its archived history.
148
-
149
- You can keep talking or typing if that question was replaced or its pinned
150
- content is unavailable. The message remains an ordinary, ungraded conversation
151
- message; it is never assigned to the newer question automatically. An accepted
152
- message retry keeps its original receipt. Old questions without recorded issuance
153
- remain ungradable until the Main teacher explicitly prepares a new question.
154
- Operators apply required state upgrades with writers stopped before activation.
155
- Upgrades do not invent old question provenance or grade historical words.
156
-
157
- Native quiz evaluation uses only the accepted learner message in the current
158
- interactive Main teaching turn and its actually delivered question. Caller text,
159
- paraphrases, provisional words and unrelated history cannot substitute. The
160
- original restricted Helper evaluates the pinned rubric; the progress owner saves
161
- its feedback. Retrying the same submission reads its result before another
162
- inference; a new identity cannot bypass a consumed answer.
163
-
164
- Stopping the Main teacher or retiring its admitted turn cancels evaluation without a pass.
165
- Missing support, interruption, stale questions or failed saves remain unsaved
166
- and recoverable. Keep the attempt/question; practicals require observed evidence.
167
- A confirmed Helper setup failure needs its existing AI Accounts model routing
168
- configured before retrying. Unrelated history cannot be assessed; host support is required.
169
-
170
-
171
- ### Practising the native workspace controls
172
-
173
- For workspace observations, application checks and practical assessment, read
174
- [Practical Learning exercises](learning-practical-exercises.md).
175
-
176
- ## Course and lesson choices
177
-
178
- The prepared **Courses** pane displays the host's installed courses in their
179
- original order as cards with "N of M lessons complete" and a progress ring.
180
- **View course** shows each topic and its lessons in order, with readable lesson
181
- titles beside the exact lesson codes, course/topic releases and lesson hashes,
182
- and a **Completed**, **In progress** or **Not started** status read from saved
183
- progress. Opening a course does not install or enable content; the separate
184
- **Install a course** catalogue below the cards does, and Colleague may install or
185
- update an official catalogue course only on the person's direct request or
186
- accepted offer (see [Installing and updating Learning courses](learning-course-catalogue.md)).
187
- Disabled courses and draft lessons stay labelled and unavailable for a new start.
188
- A preview course can be started only by the workspace owner: `courses.list`
189
- reports `canTryPreviews`, the owner sees **Try preview**, and the server refuses
190
- anyone else's start (Colleague included, acting for that person) with **This
191
- preview course can be tried only by the workspace owner until it is released.**
192
- **Start** or **Try preview** on a card, **Start next lesson** or **Start lesson**
193
- on the course page requests that exact published lesson from an enabled release; opening a course alone never
194
- starts anything. A missing title reports **Lesson titles are unavailable**; use
195
- **Refresh courses**. This preserves the saved attempt and history and does not
196
- substitute an invented title or another lesson. The host's original lesson action
197
- must still authorize and admit it; unavailable support or a failed read is not a
198
- successful start. The owner's **New course** form is described in
199
- [Choosing lessons and Learning conversations](learning-mode-ui.md).
200
-
201
- **Resume saved lesson** requests only the displayed saved attempt. Its retained
202
- pin can be older than the currently enabled catalogue. This button is available
203
- only when the host actually supports resume, not merely because progress exists.
204
- Starting a different lesson requires explicitly ending the active saved attempt
205
- first: ask Colleague, which uses `lesson.end` and stops that lesson
206
- conversation's work while keeping its history (see
207
- [Lesson history and resume](learning-history.md)). The Courses pane has no End
208
- button and never ends a lesson for you.
209
- **Saved lesson history** remains read-only and visible independently of new-start
210
- or resume support. Ended history is not marked completed without an actual
211
- completion result.
212
-
213
- Assessment counts come from saved results, never chat, motion or selection.
214
- **Saved lesson identity** shows the saved commit/hash. **Refresh courses** rereads;
215
- loading/errors create or repair no state. Desktop/phone share wrapping, scrollable
216
- controls. Colleague can explain/offer supported start/resume; only a direct request
217
- or accepted offer authorizes it. Main teaches with supported Preview controls;
218
- if unavailable, retain the attempt and ask the owner. See `learning-mode-ui`.
4
+ and owner recovery, read `teaching-content`. For pointing and "show me", read
5
+ `learning-teacher-guide`.
6
+
7
+ ## Two conversations: Develop and Learn
8
+
9
+ Vibe64 has two modes, switched with **L**: **Develop** (your own projects) and
10
+ **Learn** (your practice projects). Colleague keeps a separate conversation for
11
+ each, and the one you see always follows the mode:
12
+
13
+ - **Develop** has your one Colleague conversation, with its read-only previous
14
+ conversations, watches and assignments, exactly as before. It does not teach:
15
+ ask it about lessons and it tells you to press **L** (it can switch for you
16
+ when you ask or accept its offer, with `learning-mode.set`).
17
+ - **Learn** gives each lesson attempt its own teacher conversation. Leaving the
18
+ lesson (pressing **L**, or reading another lesson) and coming back resumes
19
+ that same conversation. Learn mode with no lesson in progress has one
20
+ conversation of its own. Restarting a lesson starts a fresh teacher.
21
+ - Switching never interrupts Colleague: a reply it is writing finishes in its
22
+ own conversation, still on the projects of the mode it started in, which you
23
+ see again when you switch back. Watched agents
24
+ keep being followed while you are in Learn; their updates wait in Develop's
25
+ conversation until you return. **Start fresh** and **Previous conversations**
26
+ work within the conversation you are in.
27
+ - In Learn, Colleague does not create assignments or watches; in Develop it does
28
+ not teach, read lessons or your teacher notes.
29
+
30
+ ## Colleague as your teacher
31
+
32
+ In Learn mode, **Courses** (on the lesson step bar, or in the project menu beside **L**) is the catalogue
33
+ where you choose and start lessons; your current lesson is read on the Learn
34
+ page itself, in its **Lesson** tab beside Colleague (see `learning-environment`).
35
+ You can read lessons yourself without AI. Choose **Teach me** on a lesson step,
36
+ or ask Colleague about your lesson, and Colleague teaches the current step.
37
+ **Teach me** opens Colleague beside the step and sends "Teach me this step.";
38
+ the step stays on screen, so Colleague refers to it rather than repeating it.
39
+ **I'm stuck** (in the lesson step bar, see `lesson-step-bar`, on a *do* line or a step its own check
40
+ decides, and in the step beside **Teach me**, until the step passes) opens Colleague the same way and sends "I'm stuck on this
41
+ step."; Colleague looks at where you are and helps you get unstuck. It never
42
+ passes the step for you:
43
+
44
+ - It reads your lesson with `lesson.read` (the steps in order with their text,
45
+ diagram, guide and check kind, plus your saved results) and explains the step
46
+ in its own words, by text or voice. Reading changes nothing. Long lessons
47
+ arrive in pages; Colleague reads every page before claiming a step's text is
48
+ missing.
49
+ - It points at, or with "show me" opens, the real Vibe64 places the step uses,
50
+ replays the step's diagram, can show your current step in the **Lesson** tab,
51
+ and can open **Courses** or close it so you see the app. Courses keeps its
52
+ place while closed.
53
+ - In Learn mode with a lesson in progress, Colleague's header shows a small
54
+ yellow **Step N/M** button (a check once the step passed). Pressing it shows
55
+ that step in the page's **Lesson** tab (see `learning-environment`); on a
56
+ phone Colleague's full-screen chat also minimises so the step is visible, and
57
+ its avatar button brings Colleague back. It appears on the desktop panel, the
58
+ phone's full-screen chat and during voice chat. Develop shows no step button.
59
+ - Before asking you to press **Done**, answer a question or press **Check now**,
60
+ it looks at that step's saved result. A step that already passed is not asked
61
+ for again: Colleague says it passed and moves on to the next unpassed step.
62
+ - It tells you in plain words what it opened or highlighted, without receipt
63
+ fields or IDs. If it could not open or point at a step's place (for example the
64
+ control is hidden), it says so plainly and describes the path in words.
65
+
66
+ On a phone, Colleague's full-screen chat minimises itself when it opens Courses,
67
+ shows a lesson step or rings a control, so you can see it; reopen Colleague with
68
+ its avatar button. **Teach me** on a phone opens Colleague's full-screen chat
69
+ over the Lesson tab, which stays underneath.
70
+
71
+ ## Colleague never judges
72
+
73
+ A step passes only through your own action in the lesson:
74
+
75
+ - **Choice question**: only your own answer counts. Colleague never sees or
76
+ reveals the correct option, sees only whether your answer passed (not which
77
+ options you chose), and cannot answer for you; it helps you reason instead.
78
+ - **Self-check**: only your own **Done** records it.
79
+ - **Reading step**: optional; only your own **Mark as done** records it.
80
+ - **Automatic check**: when you say you have done a task, Colleague may run the
81
+ step's check (`step.check.run`) and tell you its actual result, but that run is
82
+ a diagnostic and is never saved. The step passes only when you press **Check
83
+ now**; a response check first needs your own press of the App's control in this
84
+ lesson's Preview.
85
+ - **Review check**: the step shows its rubric, what your finished work must
86
+ show. Only your own **Check my work** asks your own AI (your Helper route in
87
+ **AI Accounts → Model routing**) to review your practice work against it;
88
+ Colleague never runs a review for you. A review answers **Passed** (final) or
89
+ **Not yet** with a comment and a hint. While the coding agent is still
90
+ working it says "Wait until the agent finishes"; with nothing changed yet it
91
+ says "No changes yet" without asking your AI; pressing again without new
92
+ work shows the same review. When the review cannot finish (no Helper route,
93
+ the provider failed, or the reply was unusable) nothing is recorded: fix the
94
+ cause and press it again.
95
+ - **When you are stuck**: Colleague can read your practice work for the
96
+ current step (`step.evidence.read`): the files you changed since the lesson
97
+ started and their diff, the lesson's coding conversation when the step's
98
+ review uses it, the rubric and your last review. It uses this to help you
99
+ with the next move; reading it never passes a step.
100
+
101
+ Colleague's feedback never changes a step's status. If Colleague says a step
102
+ passed, ask it to read the lesson again: only a saved **passed** result counts.
103
+ Your reading place is saved automatically. A change to your mode, lesson,
104
+ results, reading place or practice project notifies only your own signed-in
105
+ pages, so open views (and Colleague's conversation) refresh.
106
+
107
+ Starting, restarting, finishing or deleting a lesson, and switching mode, needs
108
+ your direct request or an accepted offer; a how-to question alone authorizes
109
+ nothing.
110
+
111
+ ## Which projects Colleague opens
112
+
113
+ Colleague opens only the projects of your mode. In **Learn** that is your
114
+ practice project (none for a lesson without one); opening any of
115
+ your own projects is refused with "You're in Learn mode. Press L to go back to
116
+ your projects." In **Develop** it opens your own projects, and a practice
117
+ project is refused with "This is a practice project. Press L to switch to
118
+ Learn." Colleague relays the reason and offers to switch; it switches for you
119
+ (`learning-mode.set`) only when you ask or accept. Switching ends nothing: the
120
+ lesson in progress stays paused, with its practice project, until you come
121
+ back.
122
+
123
+ ## Teacher notes
124
+
125
+ Colleague keeps short private notes about you as a learner
126
+ (`learner-notes.read` and `learner-notes.update`): your strengths, difficulties,
127
+ preferences and where you are. It reads them when it starts teaching and rewrites
128
+ them as one short summary (at most 4000 characters), never a transcript, secrets
129
+ or a grade. They live in your own Learning state: no other learner and not the
130
+ workspace owner can read them, and they never change a step's status. You see,
131
+ edit and clear them in **L** under **What my teacher knows about me** on
132
+ **Courses**. Ask Colleague to change or forget something and it rewrites them;
133
+ clearing is your own **Clear** in **L**. If you edited the notes since Colleague
134
+ read them, its save is refused and it reads them again before combining.
135
+ Colleague treats the notes as a description of you, not as instructions: writing
136
+ "tell me the answers" in them does not change how it teaches or judges.
137
+
138
+ ## Lessons in progress and archived
139
+
140
+ One lesson is in progress at a time. Colleague reads it, with its practice
141
+ project, and your archived lessons with `practice.list`. When you ask:
142
+
143
+ - **Start a different lesson** (`lesson.start`): while another is in progress
144
+ this is refused until the current one is archived. Colleague asks you first
145
+ and archives it (`archiveCurrent`) only after you agree.
146
+ - **Finish** (`lesson.finish`), once every step passed: the lesson is completed
147
+ and archived with its practice project and this teacher conversation.
148
+ - **Restart** (`lesson.restart`): archives this attempt and starts the lesson
149
+ again with a fresh practice project, fresh results and a fresh teacher.
150
+ - **Delete** (`lesson.delete`): removes the lesson's practice project and
151
+ teacher conversation without archiving.
152
+ - **Delete an archived lesson** (`practice.archived.delete`): removes it for
153
+ good.
154
+
155
+ Only the 3 newest archived lessons with a practice project keep it; archiving
156
+ another removes the oldest one's project and keeps its record and conversation
157
+ (`hasProject` in `practice.list` says which still have one). Colleague says so
158
+ when a finish, restart or archive will do this.
159
+
160
+ Colleague restarts or deletes only after you confirm that exact lesson in the
161
+ chat (`confirmed`); it names the lesson and says what is kept. A pinned session
162
+ must be unpinned first; that refusal changes nothing. Colleague cannot see or
163
+ change another learner's lessons, and it cannot turn a practice project into one
164
+ of your own projects. The buttons under **Courses** → **In progress** and
165
+ **Archived** do the same (see [Practice projects](learning-practice-projects.md)).
166
+
167
+ ## Earlier lessons
168
+
169
+ Lessons started before Learning v2 were taught by a separate lesson
170
+ conversation, with quizzes and practical grading. Those attempts and their saved
171
+ results are not kept by Rev 4's learning space reset. Start the lesson again in
172
+ its current format and Colleague teaches it from its steps.
173
+
174
+ ## Courses and starts
175
+
176
+ Courses, course pages and their states are described in
177
+ [Choosing lessons and courses](learning-mode-ui.md). Opening a course does not
178
+ install or enable content. Colleague installs or updates an official catalogue
179
+ course only on your direct request or accepted offer (see
180
+ [Installing and updating Learning courses](learning-course-catalogue.md)).
181
+
182
+ A start requests that exact published lesson from an enabled release; the host's
183
+ lesson action must still authorize and admit it, and an unavailable host or a
184
+ failed read is not a successful start. A preview course can be started only by
185
+ the workspace owner: anyone else's start (Colleague included, acting for that
186
+ person) is refused with **This preview course can be tried only by the workspace
187
+ owner until it is released.** A missing title reports **Lesson titles are
188
+ unavailable**; use **Refresh courses**. Nothing substitutes an invented title or
189
+ another lesson.
190
+
191
+ **Open** on the lesson in progress returns to that attempt, whose pin can be
192
+ older than the enabled catalogue. Starting a different lesson first archives the
193
+ lesson in progress, after your confirmation (see
194
+ [Lesson history and resume](learning-history.md)). **Saved lesson history** stays read-only and visible
195
+ independently of start or resume support; ended history is not marked completed
196
+ without an actual completion result. **Saved lesson identity** shows the saved
197
+ commit and hash. Loading and errors create or repair no state.
@@ -4,7 +4,8 @@ Ask Colleague to coordinate a coding agent, review the lesson in the same sessio
4
4
  and publish its source through the existing Save or pull-request workflow.
5
5
  Colleague can operate those controls when requested; it does not edit files or
6
6
  run a shell itself. Git publication, pinned course material and installation are
7
- separate results. The current learner offering remains one introductory lesson.
7
+ separate results. The current Getting started course has four step-based lessons
8
+ (V64-START-00 to V64-START-03).
8
9
 
9
10
  ## Choose the authoring target
10
11
 
@@ -15,24 +16,22 @@ connection, repository access and Git author identity remain the person's normal
15
16
  account steps. Opening, creating or importing a new GitHub project uses the
16
17
  existing hosted UI; Colleague must not invent an import or source-access tool.
17
18
 
18
- For the current introduction, revise the existing V64-START-01 topic rather than
19
- exposing a second lesson. Preserve its permanent IDs, six assessments, actual App
20
- button/check correlation and declared SVG/controller protocol unless the person's
21
- request explicitly changes that content. New lesson content may be authored as
19
+ To improve an existing lesson, revise it in its topic rather than exposing a
20
+ duplicate lesson. Preserve its permanent lesson and step IDs, its declared checks
21
+ (including the actual App button/check correlation) and its SVG/controller
22
+ protocol unless the person's request explicitly changes that content. New lesson content may be authored as
22
23
  a draft using the existing template below; a draft is not another learner release.
23
24
 
24
- For the revised Learning flow, Main teaches the lesson and Colleague stays the
25
- general supervisor. Keep the introduction’s original Colleague leave/restore task:
26
- the learner uses that real drawer and returns to its retained task while the Main
27
- lesson stays saved. Hiding Main does not replace that practical. Review genuine
28
- workspace, application and diagram evidence before calling the candidate ready;
29
- content validation does not supply missing teaching controls. Changed teaching
25
+ Colleague teaches every lesson from its steps in the Learning environment.
26
+ Review genuine workspace,
27
+ application and diagram evidence before calling the candidate ready; content
28
+ validation does not supply missing teaching controls. Changed teaching
30
29
  text needs a new immutable topic/course pin, keeping earlier learners’ versions.
31
30
 
32
31
  ## Delegate and review
33
32
 
34
33
  For example: “In this lesson-authoring project and session, improve the introduction's
35
- wording, keep its six assessments and App/diagram contracts, validate and bundle it,
34
+ wording, keep its step IDs, checks and App/diagram contracts, validate and bundle it,
36
35
  arrange a review, then publish the source as a draft PR. Do not install or enable it.”
37
36
  This is an example instruction, never authority to execute it without the person's
38
37
  actual request. A how-to question makes no edits, assignment or external write.
@@ -94,8 +93,28 @@ Vibe64 command. These authoring commands do not by themselves expose a learner c
94
93
  install a topic or start a lesson. Do not offer to start a course merely because
95
94
  its files validate.
96
95
 
97
- Use a topic repository whose name begins with `learn-`. Keep the teaching document,
98
- assessment rubrics, SVG descriptors and runnable exercise in that repository.
96
+ Use a topic repository whose name begins with `learn-`. Keep the lesson
97
+ descriptors, step texts, SVG descriptors, checks and runnable exercise in that
98
+ repository. An exercise needs no `.gitignore` for Vibe64's agent guidance
99
+ folders (`.agents`, `.claude`, `.codex`, `.opencode`): practice projects keep
100
+ them out of the learner's changes by themselves. New lessons use lesson format v2 (`schemaVersion: 2`): optional
101
+ notes and 1–32 ordered steps. Each step has a Markdown body a learner can read
102
+ without AI, an optional diagram to play, and either an optional guide that
103
+ points at a real Vibe64 place or a short `beats` block at the end of its text
104
+ that the lesson step bar plays (show a place, wait for the learner to do
105
+ something, offer the step's check; see "Beats" in `docs/training-content.md`),
106
+ and one check: `auto` (a declared check against the
107
+ learner's own exercise work), `choice` (multiple choice with an answer kept on
108
+ the server), `review` (the learner presses **Check my work** and their own AI
109
+ reviews their practice work against the author's rubric; it needs the
110
+ exercise, and `evidence` may add the lesson's coding conversation to the
111
+ changes), `self` (the learner presses **Done**) or `none` (reading only, never
112
+ required; the learner may still press **Mark as done**). Check verdicts come
113
+ from the declared check and are final; a review may pass a required step.
114
+ Prefer an `auto` check where a deterministic check can decide, and write the
115
+ rubric as what the finished work shows. Colleague never passes a step and
116
+ never runs a review. Older v1 lessons (teaching document plus
117
+ assessments) still validate for history but cannot be started.
99
118
  The installed `docs/templates/learn-topic/` directory supplies a copyable whole
100
119
  topic. The author copies it to a new directory, follows its README to choose
101
120
  permanent identifiers and replace placeholder content, then validates it. Its
@@ -113,7 +132,7 @@ These commands use that session's existing filesystem and Git access. Keep the
113
132
  inputs and outputs within the authorised authoring assignment. They do not grant
114
133
  Colleague source access or permit a coding agent to install or enable courses.
115
134
  Success lists ordered lesson hashes and distinguishes published lessons from drafts.
116
- A failure means the author must correct the reported schema, reference, rubric or
135
+ A failure means the author must correct the reported schema, step, check, reference or
117
136
  path problem; it does not change their project or learning history.
118
137
 
119
138
  To produce local release material, the author runs
@@ -168,9 +187,9 @@ operator steps below remain for content outside that catalogue, for an author's
168
187
  own snapshots, and for disabling a release.
169
188
 
170
189
  In supported hosted installations, ask Colleague to admit your exact clean
171
- committed snapshot from the authorized authoring session. Then turn on Learning
172
- mode in that project view and use **Resume author trial** under **Courses** to
173
- open its same Main teacher. This saved trial has isolated progress; it is not an
190
+ committed snapshot from the authorized authoring session. Then open Learning with
191
+ **L**; on its **Courses** tab the **Author trial** card shows the snapshot's lesson
192
+ and release, and **Resume author trial** opens it in the ordinary lesson reader, the page's **Lesson** tab. This saved trial has isolated progress; it is not an
174
193
  enabled learner course. Ordinary **Start** still requires a published lesson in
175
194
  an enabled release. Local validation/bundling alone admits no trial. Do not change
176
195
  a draft's status to bypass that guard or report a trial as published progress.
@@ -199,13 +218,11 @@ then reads the fresh installed catalogue before changing enablement. Colleague c
199
218
  list the resulting enabled course through its normal learning query after the
200
219
  operator completes this step; absence is not permission to fabricate a substitute.
201
220
  Existing attempts keep their saved pins. Source publication alone does not prove
202
- installation, learner delivery, assessment completion or pilot acceptance.
221
+ installation, learner delivery, step completion or pilot acceptance.
203
222
 
204
- Question delivery keeps its exact lesson attempt attached to your answer. An
205
- unfinished question or one retained from an earlier fresh conversation does not
206
- become a new assessment. Switching the displayed Preview is not permission to
207
- move an answer or a diagram checkpoint into another lesson's progress. The
208
- saved trial control uses the original snapshot admission and explicit refresh
223
+ Each step result stays attached to its exact lesson attempt. Switching the
224
+ displayed Preview or project is not permission to move an answer or a check
225
+ result into another lesson's progress. The saved trial control uses the original snapshot admission and explicit refresh
209
226
  operations described above. Edited source requires a deliberately ended old trial
210
227
  and a newly admitted committed snapshot; Resume keeps the existing pin.
211
228