Skip to content

docs+ci: add PR packaging template + enforce it in CI#11

Merged
lassebenni merged 2 commits into
mainfrom
docs/pr-packaging-template
Jul 14, 2026
Merged

docs+ci: add PR packaging template + enforce it in CI#11
lassebenni merged 2 commits into
mainfrom
docs/pr-packaging-template

Conversation

@lassebenni

Copy link
Copy Markdown
Collaborator

What I built

Adds a package-complete PR template plus CI enforcement to this assignment repo.

  • .github/PULL_REQUEST_TEMPLATE.md: tailored to this week's deliverables, with sections What I built / How to review / How to run / What reviewers should see (expected results) / Known limitations / Self-check. Gives a reviewing mentor a package-complete, reproducible submission.
  • .github/workflows/pr-body-check.yml: fails a PR whose description is missing the required headings. GitHub only auto-injects the template in the web compose form / gh pr create without --body; a PR opened via the REST API or --body "..." (the path most AI tools take) skips it silently. This check closes that gap. Editing the PR description re-runs the check automatically (no new commit needed).

How to review

Two added files (one edited on Week 11). Read the template top-to-bottom; the workflow greps case-insensitively for 5 headings.

How to run

No runtime. Verified locally: the filled template passes the check; an empty/free-form body fails and lists the missing headings.

What reviewers should see (expected results)

  • Filled template -> check passes (see this PR's own PR body check).
  • Blob body -> check fails, lists missing sections.

Self-check

  • Template + workflow validated locally against the check logic
  • Workflow uses pull_request (not pull_request_target) with contents: read only
  • No secrets introduced

🤖 Generated with Claude Code

Lasse Benninga and others added 2 commits July 14, 2026 10:55
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📝 HackYourFuture auto grade

Assignment Score: 48 / 100 ❌

Status: ❌ Not passed
Minimum score to pass: 60
🧪 The auto grade is experimental and still being improved

Test Details

=== Week 10 Autograder ===
  ✓ PASS  found dbt_project.yml
  ✓ PASS  found packages.yml
  ✓ PASS  found profiles.yml.example
  ✓ PASS  found macros/safe_divide.sql
  ✓ PASS  found models/staging/_sources.yml
  ✓ PASS  found models/staging/stg_trips.sql
  ✓ PASS  found models/staging/stg_zones.sql
  ✓ PASS  found models/marts/fct_daily_borough_stats.sql
  ✓ PASS  found reports/answers.md
  ✓ PASS  found AI_ASSIST.md
  ✓ PASS  found singular test in tests/
  ✗ FAIL  docs/lineage.png missing -- run dbt docs generate + serve and screenshot the lineage graph
  ✓ PASS  Level 1: required files (0/10 pts)
  ✓ PASS  .gitignore: profiles.yml excluded
  ✓ PASS  profiles.yml.example: uses env_var() -- no hardcoded password
  ✓ PASS  profiles.yml not committed (correctly git-ignored)
  ✓ PASS  Level 2: secrets hygiene (15/15 pts)
  ✓ PASS  stg_trips.sql: uses {{ source() }} reference
  ✗ FAIL  stg_trips.sql: must filter WHERE pickup_location_id IS NOT NULL
  ✗ FAIL  stg_trips.sql: must filter WHERE fare_amount >= 0
  ✗ FAIL  stg_trips.sql: tip_pct column missing -- add {{ safe_divide('tip_amount', 'fare_amount') }} AS tip_pct
  ✓ PASS  stg_zones.sql: uses {{ source() }} and is filled
  ✓ PASS  Level 3: staging models (8/20 pts)
  ✓ PASS  fct_daily_borough_stats.sql: file filled
  ✓ PASS  mart: ref() to both stg_trips and stg_zones
  ✗ FAIL  mart: no JOIN -- must join stg_trips to stg_zones on pickup_location_id = location_id
  ✗ FAIL  mart: no GROUP BY -- must aggregate to (pickup_borough, pickup_date) grain
  ✓ PASS  mart: all 6 required output columns present
  ✓ PASS  Level 4: mart model (12/20 pts)
  ✗ FAIL  mart YAML: missing dbt_utils.unique_combination_of_columns on (pickup_borough, pickup_date)
  ✓ PASS  staging YAML: not_null tests present
  ✓ PASS  singular test: filled (does not reference fct_daily_borough_stats -- check)
  ✓ PASS  Level 5: tests (8/15 pts)
  ✗ FAIL  mart YAML: grain mentioned but description still has TODO -- fill it in
  ✗ FAIL  mart YAML: column descriptions are empty -- explain meaning and units for each column
  ✓ PASS  Level 6: documentation (0/10 pts)
  ✓ PASS  reports/answers.md: 4 SQL blocks present and filled
  ✗ FAIL  AI_ASSIST.md: empty or still contains TODO stubs
  ✓ PASS  Level 7: business answers + AI log (5/10 pts)

Score: 48 / 100  (passing: 60)  pass=false

@lassebenni
lassebenni merged commit 18eb377 into main Jul 14, 2026
2 of 3 checks passed
@lassebenni
lassebenni deleted the docs/pr-packaging-template branch July 14, 2026 08:59
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