# Course Repositories Didactopus can ingest a checked-out course repository as a local source bundle. ## Recommended default Use one repository per course-derived source set. That keeps: - license scope clear - `sources.yaml` course-specific - attribution and compliance artifacts isolated - Git history focused on one source set - removal or relicensing easier if a source needs to be withdrawn ## Recommended repository shape ```text didactopus-mit-ocw-6-050j/ didactopus-course.yaml course/ course-home.md syllabus.md unit-sequence.md sources.yaml README.md ``` ## Manifest file The root manifest is `didactopus-course.yaml`. Example: ```yaml course_id: mit-ocw-information-entropy display_name: MIT OCW Information and Entropy source_dir: course source_inventory: sources.yaml license_family: CC BY-NC-SA 4.0 generated_pack_dir: ../../domain-packs/mit-ocw-information-entropy generated_run_dir: ../../examples/ocw-information-entropy-run generated_skill_dir: ../../skills/ocw-information-entropy-agent ``` ## How Didactopus uses it Didactopus treats the repo as a normal local source directory. The manifest only resolves which paths to use. Run: ```bash python -m didactopus.ocw_information_entropy_demo \ --course-repo /path/to/didactopus-mit-ocw-6-050j ``` That command resolves: - the source directory - the source inventory - the generated pack directory - the generated run directory - the generated skill directory all relative to the checked-out repository. If you want Didactopus to create the repository structure and copy the current source bundle into it, use: ```bash python -m didactopus.ocw_information_entropy_demo \ --course-repo-target /path/to/new-course-repo ``` That bootstraps: - `didactopus-course.yaml` - `course/` - `sources.yaml` - `generated/pack/` - `generated/run/` - `generated/skill/` and then runs ingestion against that new course-repository directory. ## Multi-course repositories Do not use a multi-course repository as the default pattern. If you later need one, treat it only as a container of isolated per-course subtrees: ```text ocw-collection/ courses/ course-a/ didactopus-course.yaml course/ sources.yaml course-b/ didactopus-course.yaml course/ sources.yaml ``` Each course should still keep its own: - `didactopus-course.yaml` - `sources.yaml` - source tree - generated attribution/compliance outputs ## MIT OCW example The current in-repo reference example is: - [didactopus-course.yaml](/home/netuser/dev/Didactopustry1/examples/ocw-information-entropy/didactopus-course.yaml) - [course](/home/netuser/dev/Didactopustry1/examples/ocw-information-entropy/course) - [sources.yaml](/home/netuser/dev/Didactopustry1/examples/ocw-information-entropy/sources.yaml)