Skip to content

feat: scaffold Week 5 assignment — Containerize and Ship#1

Open
lassebenni wants to merge 4 commits into
mainfrom
feat/scaffold-week5-assignment
Open

feat: scaffold Week 5 assignment — Containerize and Ship#1
lassebenni wants to merge 4 commits into
mainfrom
feat/scaffold-week5-assignment

Conversation

@lassebenni
Copy link
Copy Markdown
Collaborator

Summary

  • Students containerize their Week 3 or Week 4 pipeline: write a cache-friendly Dockerfile, pin dependencies, build a CI workflow (ruff + pytest + docker build), and push to Azure Container Registry.
  • Autograder verified end-to-end: solution scores 75/75 (pass), scaffold scores 10/75 (fail).

Scoring ladder

Score Gate
10/75 Dockerfile has correct base image (python:3.11-slim)
0+10/75 requirements.txt has pinned versions
0+25/75 Dockerfile: requirements copied before source + CMD present
0+25/75 ci.yml: ruff lint + pytest + docker build steps present
0+15/75 AI_ASSIST.md: 3 sections filled with ≥500 characters
+25 Task 6 (ACR push): teacher verifies Azure Portal screenshot

Passing threshold: 60/100.

Test plan

  • Scaffold: 10/75, pass=false
  • Solution: 75/75, pass=true
  • Dockerfile layer order: requirements copied before source confirmed by grader
  • Code patterns: grep for ruff, pytest, docker build in ci.yml; == in requirements.txt; python:3.11-slim + CMD in Dockerfile
  • AI report: 3-section + 500-char threshold; template is 249 chars (below threshold)

🤖 Generated with Claude Code

Replace the stub test.sh (always-pass, score 0) with a 7-level static
analysis grader. Scaffold code has NotImplementedError stubs and TODO
placeholders that score 27/100 (fail); a complete solution scores 100/100.

Grader levels:
  1 (15 pts) - required files present
  2 (15 pts) - Dockerfile layer order and base image
  3 (15 pts) - pinned dependencies
  4 (20 pts) - CI triggers, ruff, pytest, docker build
  5 (15 pts) - env-var config, no NotImplementedError
  6 (10 pts) - ACR screenshot present and non-trivial
  7 (10 pts) - AI_ASSIST.md filled in, no TODO placeholders

Also adds: student README, devcontainer.json (Docker + Azure CLI),
src/pipeline.py starter, tests/test_pipeline.py, Dockerfile stub,
requirements.txt stub, ci.yml stub, AI_ASSIST.md template.
@lassebenni lassebenni force-pushed the feat/scaffold-week5-assignment branch from f731f85 to 0fa017b Compare May 22, 2026 10:21
Lasse Benninga added 3 commits May 22, 2026 13:13
Adds warn() helper to the autograder and a zero-point .gitignore check
that flags missing __pycache__/, *.pyc, and .env entries with a clear
message explaining why each matters.

Also adds Python-specific entries to the scaffold .gitignore (the
inherited template was Node.js only).
Replaces the inline pass/fail/warn helpers with a source of grader_lib.sh.
Adds check_no_print_statements and check_gitignore_python from the lib.
Scoring ladder and output unchanged (27/100 scaffold, 100/100 solution).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant