You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/COURSEPACK_REGISTRY_RFC.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,7 @@
2
2
3
3
## Status
4
4
5
+
- Closed for the current release line on `main` as of 2026-06-20.
5
6
- Local authoring/package tooling is live and should be treated as the shipped source-of-truth workflow.
6
7
- Live import/export flows are also real on `main`, including:
7
8
- local SDK validation/build/package via `scripts/coursepack_sdk.py`
@@ -22,11 +23,11 @@
22
23
-`/teach` now includes a filtered content/import audit surface for recent packaging and import operations,
23
24
- operators can deep-link into a selected audit row and inspect stored provenance metadata without leaving `/teach`,
24
25
- class dashboards now include shortcuts into the class-scoped audit feed.
25
-
- Remote registry service, signed discovery API, and desktop GUI authoring remain optional future work and should not be implied as active roadmap commitments without a concrete operator need.
26
+
- Remote registry service, signed discovery API, and desktop GUI authoring remain parked future work and should not be implied as active roadmap commitments without a concrete operator need.
26
27
27
-
## Closure recommendation
28
+
## Closure
28
29
29
-
Close this RFC as implemented for the current release line. Phase 1 and the bounded Phase 2 static-index slice are complete.
30
+
This RFC is implemented for the current release line. Phase 1 and the bounded Phase 2 static-index slice are complete.
30
31
31
32
Remaining items are deferred product/governance decisions, not active implementation commitments:
32
33
@@ -57,7 +58,7 @@ Implemented now:
57
58
-`package`: package only (skip validation)
58
59
-`docs/COURSE_AUTHORING.md` now documents SDK usage as the primary local workflow.
59
60
60
-
Still not implemented:
61
+
Parked future work:
61
62
- Remote registry service/API for signed discovery and sync orchestration.
62
63
- Desktop GUI app for drag-drop authoring/packaging.
63
64
- District-grade signed artifact verification and trust policy management.
Copy file name to clipboardExpand all lines: docs/CURRENT_STATE.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
## Summary
4
4
This page is the live snapshot of what ClassHub currently ships on `main`.
5
5
It is updated manually when shipped capabilities change.
6
-
Last reviewed: 2026-06-09
6
+
Last reviewed: 2026-06-20
7
7
8
8
## Current state at a glance
9
9
@@ -21,7 +21,7 @@ Last reviewed: 2026-06-09
21
21
### Teacher/program operations
22
22
- Teacher portal supports roster, lesson release controls, submissions, moderation, outcomes, certificates, and class closeout workflows.
23
23
- Superuser org, staff, class assignment, coursepack import, and content/import audit tools are live.
24
-
- Teacher day-of-class shell and top-task choreography are wired into `/teach`.
24
+
- Teacher day-of-class shell and top-task choreography are wired into `/teach`, with stabilized first-contact CTA wording for create/open class, join-card sharing, submission review, lessons, and summary export.
25
25
26
26
### Trust, privacy, and org boundaries
27
27
-`/trust`, `/student/my-data`, retention presets, student rename/export/delete controls, and privacy-safe support tags are live.
@@ -64,11 +64,11 @@ Last reviewed: 2026-06-09
64
64
- Repo now ships a narrow Headscale control-plane ops bundle for the Jetson_B/`hs.creatempls.org` role: bootstrap, Compose stack, backup, restore, and systemd timer artifacts live under `ops/headscale/`.
65
65
- Repo now also ships a Headscale replacement-host rehearsal wrapper (`bash scripts/headscale_restore_rehearsal_evidence.sh --backup ...`) that captures control-plane restore artifacts plus LMS/Thundercompute-side verification placeholders.
66
66
- Helper classroom-quality eval tooling is live (`scripts/run_helper_classroom_eval.sh` + classroom prompt pack in `services/homework_helper/tutor/fixtures/eval_prompts_classroom_realistic.jsonl`).
67
-
- Coursepack Authoring SDK is live via `scripts/coursepack_sdk.py` (validate/build/package local content artifacts, checksum sidecars, static registry index create/validate/list/fetch flows), and ClassHub can now import directly from a static registry index via `manage.py import_coursepack_registry` as well as superuser browser flows in `/teach` and `/admin`.
67
+
- Coursepack Authoring SDK is live via `scripts/coursepack_sdk.py` (validate/build/package local content artifacts, checksum sidecars, static registry index create/validate/list/fetch flows), and ClassHub can now import directly from a static registry index via `manage.py import_coursepack_registry` as well as superuser browser flows in `/teach` and `/admin`. The coursepack registry RFC is closed for the current release line; live operator workflow belongs in `COURSEPACK_REGISTRY_PUBLISHING.md` and `COURSE_AUTHORING.md`.
68
68
- Registry remote fetches are timeout-bounded and byte-capped for indexes, checksum sidecars, and artifact downloads; artifact verification streams SHA-256 calculation instead of loading the full remote payload into memory first.
69
69
-`/teach` now includes a filtered content/import audit feed for recent registry imports, upload imports, syllabus compilation, template generation, and syllabus export operations.
70
70
- Teacher syllabus zip import now maps session-prefixed support images into lesson assets.
71
-
- Organization boundaries and RBAC capability checks are live.
71
+
- Organization boundaries and RBAC capability checks are live. The RBAC capabilities RFC is closed for architecture; live operator guidance belongs in `RBAC_GUIDE.md` and rollout truth belongs in `FEATURE_MATURITY.md`.
72
72
- Scoped RBAC grants are live behind `CLASSHUB_RBAC_SCOPED_GRANTS_ENABLED`.
73
73
- RBAC simulation and policy bundle import/export endpoints are live for operators.
74
74
- RBAC custom roles are live (role definitions, capabilities, and staff assignments) in teacher RBAC tools and policy bundles.
@@ -84,7 +84,7 @@ Last reviewed: 2026-06-09
84
84
- Telemetry split Phase 1 Slice 0/1/2/3/4/5/6 scaffolding is live (validated telemetry mode envs, optional telemetry DB registration in settings, telemetry router + dedicated `hub_telemetry` schema app, centralized dual-write service seam for event/outcome emit paths, read abstraction for support/rollup/lifespan event queries, baseline split-write instrumentation counters/log fields, an idempotent `backfill_telemetry_events` command with dry-run/batch resume controls, and a strict `check_telemetry_parity` command for cutover gates). Slice 7 release-cycle evidence capture is complete at `artifacts/stability/2026-03-10/telemetry/` (parity + strict smoke + rollback drill).
85
85
- Telemetry evidence tooling now also renders machine-checked `slo_summary.md` artifacts from explicit metric inputs and can include telemetry DB backup/restore validation in restore rehearsal evidence when telemetry split is active.
86
86
- Superuser runtime policy lock checks are live in `/teach?advanced=1&portal_mode=admin` and in stability guardrails via `scripts/check_runtime_policy_lock.py`.
87
-
- Teacher top-task choreography and `Start Here Today` contract wiring are live in `/teach` and guarded by `scripts/check_teacher_top_tasks_contract.py`.
87
+
- Teacher top-task choreography and `Start Here Today` contract wiring are live in `/teach` and guarded by `scripts/check_teacher_top_tasks_contract.py`; the current wording baseline uses `Create class workspace`, `Print join card`, `Open class`, `Review submissions`, `Lessons`, and `Export summary CSV`.
88
88
- Registry-backed docs truth checks are live via `docs/_registry/runtime_contracts.json` and `scripts/check_docs_truth.py`.
- Keep `/teach` and `/teach/class/<id>` first-contact CTAs aligned to one small vocabulary:
4351
+
-`Create class workspace`
4352
+
-`Print join card`
4353
+
-`Open class`
4354
+
-`Review submissions`
4355
+
-`Lessons`
4356
+
-`Export summary CSV`
4357
+
- Keep operator/import/policy language below the classroom-first path when both are visible.
4358
+
- Treat destructive class-dashboard actions as copy-sensitive controls:
4359
+
- permanent roster/student deletion copy must say what is deleted and that it cannot be undone,
4360
+
- helper conversation reset copy should describe cache clearing and optional export, not imply the same permanence as roster deletion.
4361
+
4362
+
**Why this remains active:**
4363
+
- Reduces first-time teacher ambiguity without adding routes, models, or workflows.
4364
+
- Keeps copy/order stabilization tied to the top-task contract in `docs/TEACHER_TOP_TASKS.md`.
4365
+
- Makes irreversible actions easier to distinguish from reversible or cache-only maintenance actions.
4366
+
4367
+
## Implemented RFCs stay historical once live (2026-06-20)
4368
+
4369
+
**Current decision:**
4370
+
- Mark `docs/RBAC_CAPABILITIES_RFC.md` closed for architecture; use `docs/RBAC_GUIDE.md` and `docs/FEATURE_MATURITY.md` for live RBAC operation and rollout truth.
4371
+
- Mark `docs/COURSEPACK_REGISTRY_RFC.md` closed for the current release line; use `docs/COURSEPACK_REGISTRY_PUBLISHING.md` and `docs/COURSE_AUTHORING.md` for live workflow.
4372
+
- Keep the RFCs in the docs tree as historical rationale and bounded future-polish records, not active implementation backlogs.
4373
+
4374
+
**Why this remains active:**
4375
+
- Prevents shipped architecture from continuing to look speculative.
4376
+
- Points operators and future agents to the docs that describe current behavior.
4377
+
- Keeps optional future work parked until concrete operator need appears.
Copy file name to clipboardExpand all lines: docs/MAINTENANCE_RISK_REGISTER.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ Use this register as a pruning tool, not just a warning list.
24
24
- Evidence:
25
25
-`/teach` and related routes aggregate many staff workflows in one surface: [TEACHER_PORTAL.md](TEACHER_PORTAL.md)
26
26
-`teach_home` assembles class list, profile, teacher invites, org admin, submissions, and template generation in one view: `services/classhub/hub/views/teacher_parts/content_home.py`
27
-
- baseline shell sizes remain tracked: `services/classhub/templates/teach_home.html` is 81 lines; `services/classhub/templates/teach_class.html` is 82 lines; `services/classhub/hub/views/teacher_parts/roster_class.py` is 80 lines after split, with extracted endpoint logic in `services/classhub/hub/views/teacher_parts/roster_class_dashboard.py` (148 lines) and `services/classhub/hub/views/teacher_parts/roster_class_controls.py` (295 lines)
27
+
- baseline shell sizes remain tracked: `services/classhub/templates/teach_home.html` is 81 lines; `services/classhub/templates/teach_class.html` is 83 lines; `services/classhub/hub/views/teacher_parts/roster_class.py` is 80 lines after split, with extracted endpoint logic in `services/classhub/hub/views/teacher_parts/roster_class_dashboard.py` (148 lines) and `services/classhub/hub/views/teacher_parts/roster_class_controls.py` (295 lines)
28
28
- root templates are slimmed, but complexity now lives in bounded section partials/builders: `services/classhub/templates/includes/teach_class/class_setup_roster_student_row.html` is 83 lines; `services/classhub/templates/includes/teach_class/support_board_card.html` is 102 lines; `services/classhub/hub/services/teacher_dashboard_sections/facilitator_support_builders.py` is 213 lines
29
29
- size/function budgets are continuously guarded in CI via `scripts/check_view_size_budgets.py` and `scripts/check_view_function_budgets.py`
30
30
- section-level budgets and decomposition contracts are guarded via `scripts/check_teach_class_section_budgets.py`, `scripts/check_teach_class_template_contract.py`, and `scripts/check_teacher_roster_service_contract.py`
Copy file name to clipboardExpand all lines: docs/RBAC_CAPABILITIES_RFC.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,17 +2,17 @@
2
2
3
3
## Status
4
4
5
-
-This RFC is mostly implemented on `main`.
5
+
-Closed for architecture on `main` as of 2026-06-20.
6
6
- The evaluator, scoped grants, simulation tools, policy import/export, custom role persistence, and delegated approval queue foundation are all real.
7
7
- The remaining work is not core RBAC existence; it is operational polish for district-scale approval routing and higher-level administration UX.
8
8
9
-
## Closure recommendation
9
+
## Closure
10
10
11
-
Treat this RFC as effectively closed for architecture. Ongoing work should move under implementation docs and maturity tracking:
11
+
Treat this RFC as historical architecture rationale. Ongoing work should move under implementation docs and maturity tracking:
12
12
13
13
- keep [RBAC_GUIDE.md](RBAC_GUIDE.md) as the operator/how-to source,
14
14
- keep [FEATURE_MATURITY.md](FEATURE_MATURITY.md) as the rollout truth,
15
-
- reserve this RFC for historical architecture rationale plus the small list of remaining non-shipped items.
15
+
- reserve this RFC for the rationale that led to the shipped model plus the small list of remaining non-shipped polish items.
16
16
17
17
## Summary
18
18
ClassHub currently uses organization roles (`owner`, `admin`, `teacher`, `viewer`) with coarse permissions. This RFC defines a capability-driven RBAC model that supports district-grade policy needs while preserving current behavior during rollout.
@@ -67,7 +67,7 @@ Implemented on `main`:
67
67
-`CLASSHUB_RBAC_POLICY_APPROVAL_REQUIRED=1`
68
68
- policy mutations queue `RbacPolicyChangeRequest` and require separate reviewer approval.
| 1 | Create a class |`POST /teach/create-class` from `/teach`| New class row appears with join code and open status. |
22
29
| 2 | Share join access with students |`GET /teach/class/<id>/join-card`, copy class join code on `/teach` or `/teach/class/<id>`| Students can join via class code or printed join card. |
23
-
| 3 | Open class dashboard for live teaching |`GET /teach/class/<id>`| Class dashboard loads with roster, modules, and status controls. |
30
+
| 3 | Open class for live teaching |`GET /teach/class/<id>`| Class dashboard loads with roster, modules, and status controls. |
24
31
| 4 | Review submission queue and download work |`GET /teach/material/<material_id>/submissions`, `GET /submission/<id>/download`| Teacher can see missing/submitted rows and retrieve files. |
25
32
| 5 | Close/open class access at session boundaries |`POST /teach/class/<id>/toggle-lock` (and closeout lock action) | Class state pill changes (`Open`/`Locked`) and student join behavior changes accordingly. |
26
33
| 6 | Set lesson release schedule and helper scope |`POST /teach/lessons/release` from class lesson release grid | Release date/scope values persist and appear in lesson release table. |
27
-
| 7 | Export day-of-class outputs |`GET /teach/class/<id>/export-submissions-today`, `GET /teach/class/<id>/export-outcomes-csv`, `GET /teach/class/<id>/export-summary-csv`| Export downloads succeed and include current class data. |
34
+
| 7 | Export summary and day-of-class outputs |`GET /teach/class/<id>/export-submissions-today`, `GET /teach/class/<id>/export-outcomes-csv`, `GET /teach/class/<id>/export-summary-csv`| Export downloads succeed and include current class data. |
0 commit comments