Skip to content

Fix two Level 2 scoring holes and the PR template's deploy command - #1

Merged
lassebenni merged 1 commit into
mainfrom
fix/grader-scoring-holes
Jul 31, 2026
Merged

Fix two Level 2 scoring holes and the PR template's deploy command#1
lassebenni merged 1 commit into
mainfrom
fix/grader-scoring-holes

Conversation

@lassebenni

Copy link
Copy Markdown
Contributor

What I built

Two grader scoring holes and three PR-template errors, all reproduced against real trees before and after the fix.

Grader (.hyf/test.sh)

  • Level 2 awarded 40 raw points into a 35-point cap, so any single baseline miss cost nothing. Rebalanced to 20 baseline + 15 extensions = 35 exactly, cap removed.
  • The curated check passed on the string alone. Now requires a second container resource and the name.

PR template

  • dummySecret= did not exist; the starter declares dbAdminPassword. Also added environment=, with a note that it only applies after Task 1.
  • Described one container although Task 2 requires raw + curated.
  • Self-check now references the teardown record.

Scaffold

  • docs/portal_confirm.md prompts for the teardown line the assignment chapter now asks for.

How to review

  • Read the rebalanced point comment at the top of Level 2 in .hyf/test.sh, then the curated block.
  • Confirm the cap (if [[ "$l2" -gt 35 ]]) is gone and the raw sum is exactly 35.
  • Skim the PR template diff for the parameter names.

How to run

git switch fix/grader-scoring-holes
bash .hyf/test.sh          # fresh starter: 40/100, Level 2 20/35

To reproduce the holes on main: delete the @secure() block from a solved tree and run the grader (scores 100/100 before this PR, 95 after); or append // TODO: add a container named 'curated' to a fresh modules/storage.bicep (awards the extension before, not after).

What reviewers should see (expected results)

Tree Before After
Fresh starter 40/100, L2 20/35 40/100, L2 20/35 (unchanged)
Solved 100/100 100/100
Solved, @secure() deleted 100/100 95/100
Solved, @secure() + module deleted 95/100 90/100
Starter + 'curated' in a comment L2 30/35 L2 20/35

The fresh-starter number is deliberately unchanged, because the assignment chapter publishes it.

Known limitations / out of scope

  • Grading still runs from lassebenni/github-actions-fork@fix/allow-unsafe-pr-checkout-for-autograde, a personal fork at a non-default ref, whose upstream PR was closed without merge. Not touched here, but it is a single point of failure for cohort grading.
  • The grader stays static; it cannot verify the live Azure deploy or the teardown, only that the teardown line was written.

Self-check

  • bash .hyf/test.sh passes on a solved tree (100/100) and fails a fresh starter (40/100)
  • All five scenarios above re-run against the patched grader
  • bash -n .hyf/test.sh clean
  • PR template deploy command verified against a real deploy into rg-hyf-students
  • No secrets added

…rated container

Two scoring holes, both reproduced against real trees:

1. Level 2 awarded 40 raw points into a 35-point cap, so dropping any single
   baseline check cost nothing. A solved tree with the @secure() parameter
   deleted printed the FAIL and still scored 35/35 and 100/100, which made
   the assignment's own "Starter hygiene: @secure() still present" criterion
   unenforceable. Rebalanced to 20 baseline + 15 extensions = 35 exactly and
   removed the cap. That same tree now scores 95.

2. The curated check passed on the string alone, so a fresh starter plus a
   comment reading `// TODO: add a container named 'curated'` collected the
   full extension while the grader simultaneously warned "only 1 nested
   container resource(s)". Now requires a second container resource AND the
   name.

Fresh starter still scores 40/100 with Level 2 at 20/35, so the assignment
chapter's published baseline claim is unchanged.

Also fixes the PR template, whose "How to run" deployed with `dummySecret`
(the starter declares `dbAdminPassword`) and omitted `environment`, and which
described a single container although Task 2 requires raw + curated. Adds the
teardown prompt to the docs/portal_confirm.md stub.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📝 HackYourFuture auto grade

Assignment Score: 40 / 100 ❌

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

Test Details

=== Week 14 Autograder ===
  ✓ PASS  found main.bicep
  ✓ PASS  found modules/storage.bicep
  ✓ PASS  found docs/deploy_succeeded.txt
  ✓ PASS  found docs/what_if.txt
  ✓ PASS  found docs/portal_confirm.md
  ✓ PASS  found WRITEUP.md
  ✓ PASS  found AI_ASSIST.md
  ✓ PASS  found README.md
  ✓ PASS  Level 1: required files (20/20 pts)
  ✓ PASS  main.bicep has an @secure() parameter
  ✓ PASS  main.bicep calls a module
  ✓ PASS  declares a storage account resource
  ✓ PASS  declares a nested blob container resource
  ✗ FAIL  main.bicep missing param environment (Task 1)
  ✗ FAIL  missing Environment tag wiring — pass tags from main into the module (Task 1)
  ✗ FAIL  need a second nested container named curated (keep raw; Task 2)
  ⚠ WARN  only 1 nested container resource(s) — Task 2 expects raw + curated (count >= 2)
  ✓ PASS  Level 2: Bicep baseline + extensions (20/35 pts)
  ✗ FAIL  docs/deploy_succeeded.txt still empty or missing Succeeded/provisioningState
  ✗ FAIL  docs/what_if.txt still looks like the scaffold placeholder
  ✗ FAIL  docs/portal_confirm.md is still the scaffold stub — write 2-3 sentences from the portal
  ✓ PASS  Level 3: deploy evidence (0/25 pts)
  ✗ FAIL  WRITEUP.md is still too short or still the scaffold stub
  ✗ FAIL  AI_ASSIST.md is still too short or still the scaffold stub
  ✓ PASS  Level 4: write-up + AI report (0/20 pts)

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

@lassebenni
lassebenni merged commit d734347 into main Jul 31, 2026
1 of 2 checks passed
@lassebenni
lassebenni deleted the fix/grader-scoring-holes branch July 31, 2026 10:56
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