Context: Decoupled Content Workflow

The ISMG-2050 course page generation workflow has been rearchitected from a fragile regex/sed approach to a structured YAML + Jinja2 template system. The goal was to replace ad-hoc text transformations with a maintainable content pipeline.

Three-Artifact Architecture

  1. Template (assignment_template.html): Shared HTML skeleton in /home/franklin/.openclaw/workspace-web/templates/. Uses dynamic data-title and data-module attributes on the header div, with /js/header.js mounting content at runtime. No static masthead — self-contained pages matching existing ISMG-2050 page patterns.
  2. Manifest (curriculum.yaml): Structured entries for Weeks 1-4 in /home/franklin/.openclaw/workspace-web/. Each assignment has: slug, output_path, title, type, due_date, description, requirements array, starter_file, and expected_submission.
  3. Compiler (bin/build.py): Reads the manifest, renders pages via Jinja2, runs quality gates (no static <h1> outside teal banner, required course-header div present, minimum 500 bytes output), then deploys via rsync.

Design Decisions

Web Root Conflict Identified

Two conflicting web roots exist on chonk:

The build pipeline correctly targets workspace-web as source and deploys to the live path via rsync. However, manual edits on either root without syncing will cause divergence. Franklin confirmed workspace-web is authoritative.

Build Results (October 1, ~07:33 MDT)

Open Items