{"id":40232303,"url":"https://github.com/cloudpedagogy/cloudpedagogy-course-engine","last_synced_at":"2026-01-23T13:07:42.149Z","repository":{"id":332770675,"uuid":"1129759545","full_name":"cloudpedagogy/cloudpedagogy-course-engine","owner":"cloudpedagogy","description":"CloudPedagogy’s course-engine: a CLI for producing traceable, defensible course outputs from structured specifications using Quarto.","archived":false,"fork":false,"pushed_at":"2026-01-19T21:01:05.000Z","size":9365,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-20T02:47:15.807Z","etag":null,"topics":["ai-capability","cli-tool","course-design","curriculum","education","governance","higher-education","python","quality-assurance","quarto","reproducibility"],"latest_commit_sha":null,"homepage":"https://www.cloudpedagogy.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudpedagogy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-07T14:45:00.000Z","updated_at":"2026-01-19T20:57:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cloudpedagogy/cloudpedagogy-course-engine","commit_stats":null,"previous_names":["cloudpedagogy/cloudpedagogy-course-engine"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/cloudpedagogy/cloudpedagogy-course-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudpedagogy%2Fcloudpedagogy-course-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudpedagogy%2Fcloudpedagogy-course-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudpedagogy%2Fcloudpedagogy-course-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudpedagogy%2Fcloudpedagogy-course-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudpedagogy","download_url":"https://codeload.github.com/cloudpedagogy/cloudpedagogy-course-engine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudpedagogy%2Fcloudpedagogy-course-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28692794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T11:01:27.039Z","status":"ssl_error","status_checked_at":"2026-01-23T11:00:26.909Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-capability","cli-tool","course-design","curriculum","education","governance","higher-education","python","quality-assurance","quarto","reproducibility"],"created_at":"2026-01-19T23:00:20.905Z","updated_at":"2026-01-23T13:07:42.118Z","avatar_url":"https://github.com/cloudpedagogy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CloudPedagogy Course Engine (v1.11.0)\n\nA Python-first, Quarto-backed **course compiler** that generates consistent, auditable learning artefacts from a single `course.yml` source of truth.\n\nThe Course Engine is designed for **reproducible course production** in educator, learning design, quality assurance (QA), and academic governance contexts.\n\nIt prioritises **determinism, transparency, and explainability** over automation or enforcement.\n\n---\n\n## What it does\n\n- Treats `course.yml` as the **single source of truth**\n- Validates course structure and metadata\n- Compiles publishable artefacts via templates\n- Produces **auditable, reproducible outputs** with a machine-readable `manifest.json`\n- Defaults to **non-destructive builds** (explicit `--overwrite` required)\n- Supports optional **capability mapping metadata** for governance and audit (v1.1)\n- Supports **external lesson source files with provenance tracking** (v1.6)\n- Supports **explain-only policy resolution** (read-only) for CI, dashboards, and QA workflows via `validate --explain --json` (v1.10+)\n\n---\n\n## What’s new in v1.11\n\nv1.11 is a **governance adoption and documentation hardening** release.\n\nIt focuses on making policy validation and explainability **easy to operationalise** in QA, CI, and audit workflows without changing build behaviour.\n\n### Highlights\n\n- **Demo course includes defensible capability mapping**\n  - The scenario-planning demo now declares both `framework_alignment` (intent) and `capability_mapping` (coverage and evidence), enabling end-to-end QA demonstrations.\n\n- **Policy validation guidance clarified**\n  - `docs/POLICY_FILES.md` explicitly documents:\n    - what policy validation evaluates (structure only),\n    - the requirement for `capability_mapping`,\n    - and how profiles and thresholds are resolved.\n\n- **Explainability JSON contract documented**\n  - A stable, machine-readable contract for policy resolution output is now documented:\n    - `docs/explainability-json-contract.md`\n  - Intended for CI pipelines, dashboards, and governance tooling.\n\n---\n\n## Outputs\n\n- Multi-page Quarto websites\n- Single-page HTML handouts\n- Print-ready PDF handouts (via Quarto + TinyTeX/LaTeX)\n- Portable Markdown export packages\n\n---\n\n## Quickstart\n\nPreflight checks (recommended):\n\n```bash\ncourse-engine check\n```\n\nBuild a website:\n\n```bash\ncourse-engine build examples/sample-course/course.yml --out dist --overwrite\ncourse-engine render dist/sample-course\n```\n\nExplain resolved validation rules (no validation executed; read-only):\n\n```bash\ncourse-engine validate dist/\u003ccourse\u003e --policy preset:strict-ci --explain --json\n```\n\n---\n\n## CLI commands\n\n- **init** – Scaffold a new course project\n- **build** – Compile `course.yml` into an output package\n- **render** – Render outputs with Quarto\n- **inspect** – Summarise build metadata\n- **explain** – Explain course structure and provenance\n- **report** – Generate capability coverage reports\n- **validate** – Validate or explain policy resolution\n- **clean** – Remove generated artefacts safely\n- **check** – Run dependency preflight checks\n\n---\n\n## Capability mapping (v1.1)\n\nCourse Engine supports optional, **informational capability mapping metadata**.\n\nThis allows a course to declare how its content aligns to capability domains\n(e.g. an AI capability framework) without enforcing compliance at build time.\n\nCapability mapping is:\n\n- optional\n- non-enforced (informational only)\n- intended for governance, QA, and audit contexts\n\n---\n\n## Capability coverage reporting (v1.2)\n\nCapability coverage reporting provides a **defensible view of coverage and gaps**\nbased on declared capability mapping.\n\nThe reporting system:\n\n- reads capability mapping data from `manifest.json`\n- summarises coverage and evidence per domain\n- flags domains with no declared coverage or evidence\n- produces **human-readable**, **verbose**, or **JSON** output\n\nExamples:\n\n```bash\ncourse-engine report dist/sample-course\ncourse-engine report dist/sample-course --verbose\ncourse-engine report dist/sample-course --json\n```\n\n---\n\n## Capability validation (v1.3+)\n\nCapability validation checks declared capability mappings against **explicit, user-defined rules**.\n\nValidation:\n\n- operates on `manifest.json`\n- never modifies builds\n- evaluates declared structure only (not pedagogical quality)\n\nPolicies and profiles are documented in:\n\n- `docs/POLICY_FILES.md`\n\n---\n\n## Explain-only policy resolution (v1.5+)\n\nExplain mode resolves policies and profiles **without executing validation**.\n\nThis mode is:\n\n- read-only\n- safe for CI and automation\n- available as stable JSON output\n\n```bash\ncourse-engine validate dist/course \\\n  --policy policies/my-policy.yml \\\n  --profile strict-ci \\\n  --explain \\\n  --json\n```\n\nThe JSON contract is documented in:\n\n- `docs/explainability-json-contract.md`\n\n---\n\n## External lesson authoring (v1.6+)\n\nLessons may be authored **inline** or as **external source files**.\n\nEach lesson must define **exactly one of**:\n\n- `content_blocks` (inline YAML authoring), or\n- `source` (external Markdown or Quarto file)\n\nExample:\n\n```yaml\nlessons:\n  - id: lesson-01\n    title: \"Optional explicit title\"\n    source: content/lessons/lesson-01.md\n```\n\n---\n\n## Versioning and evolution\n\nThe Course Engine evolves conservatively through minor releases, prioritising:\n\n- backward compatibility\n- non-destructive defaults\n- governance safety\n\nDetailed history is maintained in `CHANGELOG.md`.\n\n---\n\n## Documentation\n\n- **Course Engine Handbook:** `docs/course-engine-handbook.md`\n- **Design \u0026 Rationale:** `docs/course-engine-design-rationale.md`\n- **Policy files guide:** `docs/POLICY_FILES.md`\n- **Explainability JSON contract:** `docs/explainability-json-contract.md`\n- **Release notes:** `docs/releases/`\n\nDerived Word and PDF artefacts (where available) are in:\n\n- `docs/handbook/`\n\n---\n\n## Disclaimer\n\nThe CloudPedagogy Course Engine is a technical tool for compiling, inspecting,\nand explaining course artefacts.\n\nIt does **not** evaluate pedagogical quality or replace institutional governance processes.\n\n---\n\n## Licensing\n\n- Course Engine code: **MIT License**\n- CloudPedagogy frameworks and models: licensed separately\n\n---\n\n## Attribution \u0026 citation (optional)\n\nIf you use the **CloudPedagogy Course Engine** in academic, institutional, or published work, you are encouraged (but not required) to acknowledge its use.\n\n**Suggested wording (optional):**\n\n\u003e “This work was produced using the CloudPedagogy Course Engine.”\n\n---\n\n## About CloudPedagogy\n\nCloudPedagogy develops governance-credible resources for building confident,\nresponsible AI capability across education, research, and public service.\n\n- Website: https://www.cloudpedagogy.com/\n- Framework repository: https://github.com/cloudpedagogy/cloudpedagogy-ai-capability-framework\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudpedagogy%2Fcloudpedagogy-course-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudpedagogy%2Fcloudpedagogy-course-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudpedagogy%2Fcloudpedagogy-course-engine/lists"}