Release Notes — v0.1.0
TDES (Transport, Delivery, and Evaluation System)
Release Date: July 2025
Highlights
First release of TDES — a pluggable system for packaging, distributing, submitting, and automatically grading coding lab exercises. Ships with a fully end-to-end offline flash-drive workflow, an online registry server transport, Docker-sandboxed evaluation, encrypted submissions, and an embedded Web UI.
Student CLI
| Command |
Status |
euc2 init <id[@ver]> <dir> — Initialize workspace from local cache |
Complete |
euc2 fetch <id> --drive <path> — Fetch exercise from USB drive (offline) |
Complete |
euc2 fetch <id> --remote <url> — Fetch exercise from registry server (online) |
Complete |
euc2 run — Run public tests in Docker sandbox |
Complete |
euc2 run --local — Run public tests on host |
Complete |
euc2 submit --drive <path> — Encrypted submission to USB drive |
Complete |
euc2 submit --remote <url> — Submit to server with TOFU PIN auth |
Complete |
euc2 submit --update-pin <pin> — Rotate student PIN |
Complete |
euc2 evaluate <submission.tar> — Grade locally in Docker (auto-pulls private tests) |
Complete |
Drive-Based Admin CLI
| Command |
Status |
euc2 drive prepare <path> — Initialize drive directory structure |
Complete |
euc2 drive add-exercise <path> <id> <ver> — Copy exercise onto drive |
Complete |
euc2 drive prepare-submission <path> — Configure drive with X25519 recipient key |
Complete |
euc2 drive decrypt-submission <envelope> — Decrypt a single submission envelope |
Complete |
euc2 drive evaluate-batch <path> — Decrypt and grade all submissions, export CSV/JSON |
Complete |
Exercise Authoring CLI
| Command |
Status |
euc2 package <dir> — Validate reference solution, split public/private packages |
Complete |
euc2 publish <dir> --remote <url> — Package and upload to registry server |
Complete |
Server Admin CLI
| Command |
Status |
euc2 admin onboard-students <csv> — Upload student roster for TOFU activation |
Complete |
euc2 admin get-grades — Retrieve grades (stdout / --csv / --json) |
Complete |
Registry Server API
| Endpoint |
Status |
GET /healthz — Health check |
Complete |
POST /v1/exercises/publish — Upload exercise packages |
Complete |
GET /v1/exercises — List exercises (filterable) |
Complete |
GET /v1/exercises/{org}/{id}/versions — List versions |
Complete |
GET /v1/exercises/{org}/{id}/versions/{ver} — Version metadata |
Complete |
GET /v1/exercises/{org}/{id}/versions/{ver}/download — Download artifact |
Complete |
POST /v1/exercises/{org}/{id}/versions/{ver}/status — Update version status |
Complete |
DELETE /v1/exercises/{org}/{id}/versions/{ver} — Delete version |
Complete |
GET /v1/artifacts/{sha256} — Download by content hash |
Complete |
POST /v1/submissions — Student submission + sandbox evaluation |
Complete |
GET /v1/submissions — Query grades (JSON/CSV) |
Complete |
POST /v1/admin/onboard — Upload student roster |
Complete |
Web UI (euc2 ui)
| Feature |
Status |
| Monaco code editor with file tree |
Complete |
| Docker / local test runner with live output |
Complete |
| Multi-step submit wizard (drive + remote) |
Complete |
| Admin drive management & batch evaluator |
Complete |
| X25519 keypair generator |
Complete |
| CSV report export |
Complete |
Known Limitations
euc2 new-exercise (scaffold templates) — not yet implemented
- Server uses bearer token auth — role-based access control planned for future release