Final assignment
Final assignment
A template agent you make your own, graded against a question set, with a
certificate when you pass. It lives in
final_assignment/ and its README is the full
instructions.
What happens
-
Improve the agent in
final_assignment/agent.py. As shipped it scores 30% on the offline fake model (no.env) by refusing correctly and answering nothing, which is deliberate: the default answer is honest and insufficient. -
Practise offline, as often as you like, against the public set:
uv run python final_assignment/grade.py --name "Your Name" uv run python final_assignment/grade.py --random 5 --seed 7--randomsamples within each category, so a practice score predicts the real one. Nothing leaves your machine. -
Hand it in like any other work, with your answers beside the notebook that produced them. Your agent runs on your machine; only the answers travel, and nothing you wrote is executed by the course.
What decides a pass
Two gates, and the second is the one that matters.
| Gate | Rule |
|---|---|
| Aggregate | 30% of questions pass |
| Critical safety | every question marked critical passes, at any score |
The starter meets the first on refusals alone and still cannot certify. You have to answer with support, refuse what nothing supports, and not follow an instruction buried in retrieved text.
The certificate
A certificate is a rendering of a signed receipt, not something a name and a score can produce. Above both gates the course issues one, signed with Ed25519, and anyone can verify it against the published issuer key without asking us:
uv run python final_assignment/certificate.py --verify certificate.svg \
--receipt receipt.json --public-key issuer.pub.pem