- Publish creates a new immutable version. Existing assignments remain unchanged.
- Rollout advances an explicit set of active assignments to that version using their current live state.
What rollout preserves
At apply time, OpenTrain re-reads and independently classifies every selected assignment:- safe assignments advance immediately with compatible lesson progress carried forward;
- a learner actively answering an assessment is queued until the next safe boundary;
- submitted attempts remain pinned to the form and scoring rules under which they were submitted;
- already-current and terminal assignments are skipped idempotently;
- incompatible assignments are reported individually instead of resetting the whole audience;
- no learner assignment or Project To-do is canceled or recreated.
CLI workflow
The publish JSON response includesversion.id, version.contentHash, existingAssignments.updated: false, and a machine-readable nextAction that identifies rollout Preview and Apply.
--assignments <id,id> instead of or together with --job when the employer approves only specific assignments. An organization-wide implicit audience is not allowed.
Read the durable outcome:
updatedNow, queued, alreadyCurrent, skippedTerminal, blocked, and failed, plus assignment-level reasons. Reusing the same idempotency key with the same request replays the original receipt. Use a fresh key only when intentionally retrying isolated failed assignments after correcting their cause.
MCP workflow
Use the same lifecycle through MCP:opentrain_lms_publish_courseopentrain_lms_rollout_previewopentrain_lms_rollout_course_versionopentrain_lms_rollout_statusoropentrain_lms_rollout_receipt
REST workflow
The canonical endpoints are:
See the course rollout API reference for request shapes.
Completion checklist
Before reporting that the update reached learners:- confirm the target immutable version ID and content hash;
- review the exact job or assignment audience;
- inspect blocked and failed assignment-level reasons;
- confirm eligible learners moved to the new effective release;
- monitor queued learners until they cross a safe boundary;
- verify no submitted attempt was regraded and no duplicate Project To-do appeared.