feat: scaffold Week 3 assignment — validated ingestion pipeline#1
Merged
Conversation
Adds all template files for the Week 3 assignment: - README.md with task table, repo layout, scoring ladder, local grader instructions - task-1/: 6 skeleton Python modules with TODO comments (models, ingest_api, ingest_files, validate, database, pipeline), messy weather_stations.csv, requirements.txt, .env.example, and azure_compare.md template in output/ - task-2/: AI_DEBUG.md template with 4 required sections - .hyf/test.sh: full autograder (100 pts, passing=60) with incremental scoring ladder for the pipeline (0→10→20→40→50→70), Task 7 Azure output checks (15 pts), and Task 8 AI debug report checks (15 pts) - .devcontainer/devcontainer.json: Python 3.11 + Azure CLI Codespace - AZURE_LOGIN.md: device-code login instructions for Codespaces and local - .gitignore: Python patterns + generated pipeline outputs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Nest code-pattern introspection inside idempotency gate so scores can't jump from 40 to 70 without passing the 50-point upsert check - Replace grep patterns that matched scaffold docstrings with patterns that only match actual code: execute(.*? for parameterised queries, time\.sleep for backoff (avoids the function name fetch_with_retry), ON CONFLICT check unchanged but removed from docstrings - Remove "ON CONFLICT" and "? placeholders" from database.py docstrings so they no longer satisfy the code-pattern greps on the unimplemented scaffold - Remove time.sleep hint comment from ingest_api.py for the same reason - Initialize score.json to 0/false at script start so a set -e crash before the final write does not leave a stale passing score - Raise azure_compare.md fill-in threshold from 600 to 1200 chars and shorten the committed template to 233 bytes so students must write actual prose to earn the 15-point tier - Fix pipeline.py example summary: invalid records 8 -> 6 (the duplicate Copenhagen row is valid and exercises upsert, not validation); add note that API count varies by time of day (up to 168 hourly records) - Move logging.basicConfig into the __main__ guard to avoid root-logger side effects on import - Add missing import os to .env.example code snippet
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
task 1 files/task 2 filesstubs with real skeleton code, dataset, autograder, and devcontainerWhat's included
README.mdtask-1/models.pyWeatherReadingskeleton with@field_validatorTODOtask-1/ingest_api.pyfetch_with_retry+fetch_api_recordsskeletonstask-1/ingest_files.pytask-1/validate.pytask-1/database.pytask-1/pipeline.pytask-1/data/weather_stations.csvtask-1/output/azure_compare.mdtask-1/requirements.txtpydantic>=2.0,requests>=2.28task-1/.env.exampletask-2/AI_DEBUG.md.hyf/test.sh.devcontainer/devcontainer.jsonAZURE_LOGIN.md.gitignoreTest plan
bash .hyf/test.shlocally against the template — should score 0 (all TODOs raise NotImplementedError)devcontainer.jsoninstalls dependencies correctly in a Codespace🤖 Generated with Claude Code