45 lines
2.9 KiB
Markdown
45 lines
2.9 KiB
Markdown
# ADR-005: Learning Uses A Curated Project Catalog
|
|
|
|
## Status
|
|
|
|
Accepted and implemented on 2026-08-20.
|
|
|
|
## Context
|
|
|
|
The integrated Learning module previously implemented course generation, an account-partitioned local course library, OpenMAIC playback, and Agent/ASR/classroom runtime bridges. The product direction changed to a simpler operations-curated catalog where users inspect a project's README and save its ZIP to their computer. Keeping the old runtime hidden would preserve substantial packaging, security, and maintenance cost without serving the new workflow.
|
|
|
|
## Decision
|
|
|
|
- Keep the existing authenticated Learning entry and `module_access.learning` policy.
|
|
- Replace the old course model completely with a server-driven project list and README detail page; do not retain a compatibility API or local-course read path.
|
|
- Works Square operations owns project name, cover, summary, tags, version, ordering, publication state, Markdown, ZIP, immutable size, and SHA-256 metadata.
|
|
- Publish-time processing mirrors acceptable remote HTTPS raster images and rewrites README image references to fixed project-media paths. Renderer disables raw Markdown HTML; Main fetches controlled media with authentication, MIME validation, and a 10 MiB limit.
|
|
- Electron Main owns Works credentials, the native save dialog, archive request, redirect/origin policy, temporary file, 512 MiB limit, declared size, SHA-256, ZIP signature, and atomic final rename. Renderer receives only bounded project DTOs, media data, and `saved` or `cancelled`.
|
|
- Remove course generation, progress, local library, OpenMAIC player, Agent, ASR, classroom runtime, Learning IPC channels, player packaging resources, and their tests.
|
|
- Do not automatically delete historical downloaded course data. The new client never reads or migrates it.
|
|
|
|
## Consequences
|
|
|
|
- The desktop client and package are substantially smaller and no longer depend on a production Stage player artifact.
|
|
- The external Works Square operations/admin/API contract must be implemented and deployed before the new client can provide real catalog data.
|
|
- Remote README images depend on successful publish-time mirroring; unsupported or failed images remain local display failures rather than arbitrary privileged network requests.
|
|
- A future historical-data cleanup must be an explicit, user-controlled maintenance feature.
|
|
|
|
## Supersedes
|
|
|
|
- The Learning course-generation, local-course, OpenMAIC playback, and classroom-runtime behavior introduced by integrated source `01bee31`.
|
|
|
|
## Evidence
|
|
|
|
- Product confirmation task: `20260819-ai-learning-project-catalog-8f3c2a91`
|
|
- Source task: `20260819-learning-project-catalog-impl-4e9c71a2`
|
|
- Source commit: `38db158`
|
|
- Integration merge: `d967b0f`
|
|
|
|
## Related
|
|
|
|
- `docs/learning-project-catalog-server-contract.md`
|
|
- `.project-docs/20-architecture/system-overview.md`
|
|
- `.project-docs/20-architecture/data-flow.md`
|
|
- `.project-docs/40-domain/business-rules.md`
|