# Site ## Pages - [Page not found](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/404/): That page doesn't exist, or it has moved since you last looked - [Assessments](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/assessments/): Every piece of graded work in the course, what it is worth, and when it is due. - [The case against retrying](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/assessments/case-against-retrying/): A failure from earlier in the semester, read cold with the outcome removed — argue for or against having retried at all. - [Retry audit](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/assessments/retry-audit/): Find every retry in a real codebase and diagnose each one against the four weeks that got you here: safe to repeat, backed off, jittered, and survivable when ten thousand clients recover at once. - [A retry policy you have to defend](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/assessments/retry-policy/): Write a retry policy for a real service, then defend every number in it against a panel assigned to find the one you cannot justify. - [Lectures](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/): What is covered, week by week, and which topics each lecture draws on. - [A retried read is safe for a reason nobody writes down](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-01/): Why the retry reflex gets learned on requests where it cannot do harm, and what changes as soon as the call writes something. - [A non-idempotent retry is a hidden bug](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-02/): Why a timeout cannot tell a client whether the write already happened, and what an idempotency key actually guarantees. - [Your retry loop is the outage now](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-03/): Why more attempts, sooner, makes recovery slower, and why spacing retries out belongs in a library rather than at each call site. - [Ten thousand correct clients make one spike](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-04/): How individually correct backoff still adds up to a synchronised spike, and why jitter has to be mandatory rather than optional. - [A budget beats a per-call count](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-05/): Why retries compound multiplicatively across a call stack, and what a shared retry budget has to track to stop them. - [A runbook fails the same ways a retry library does](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-06/): Why some weeks have no client, library or platform to hand the decision to, and what a runbook has in common with a retry library. - [Not every failure can be retried away](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-07/): How a status code and a poison message are the same problem, and where the judgement that separates them has to live. - [A breaker stuck open protects nothing](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-08/): Why a circuit breaker is shared state the platform has to hold, and why it needs to close again as much as it needs to open. - [Nobody is waiting for your third attempt](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-09/): What a deadline bounds that an attempt count cannot, and why only the caller knows whether an answer is still wanted. - [A green dashboard hides a slow decline](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-10/): Why success rate stays flat while a dependency degrades for six weeks, and what has to be reported beside it. - [Some steps only happen once, by design](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-11/): Why an irreversible step has no retry decision to make, and why the fix is ordering it to run last instead. - [Reading a retry policy's numbers against each other](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/lectures/week-12/): How a policy holding every mechanism from the semester still fails, and why the last question of the course is a product one. - [People](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/people/): Who teaches the course, and how to reach them. - [Idris Fenn](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/people/idris-fenn/): A tutor working across the course's first reviews and the practical work that follows them. - [Marisol Quaye](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/people/marisol-quaye/): The founding convenor, responsible for the course's shape and its weekly teaching programme. - [Policies and support](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/policies/): The course-wide rules for late work, extensions, academic integrity and getting help. - [Reproducing the reflex](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/01-reproducing-the-reflex/): A read times out and the retry succeeds. Nothing was written and nothing broke, so the reflex gets learned before anyone examines it. - [Charging twice on purpose](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/02-charging-twice-on-purpose/): The same retry, aimed at a write: one charge becomes two, and the client cannot tell whether it already worked. - [Becoming the outage](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/03-becoming-the-outage/): A two-second slowdown, a retry loop with no delay between attempts, and a client that keeps the dependency down long after the original problem passed. - [Synchronising a herd](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/04-synchronising-a-herd/): Ten thousand clients, each correct alone, that fall over the dependency together the moment it recovers. - [Counting to twenty-seven](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/05-counting-to-twenty-seven/): Twenty-seven attempts for one request, and why no single layer can see it happening. - [Two people, one payout](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/06-two-people-one-payout/): The same failure with no code in it: two people, one payout, and a runbook standing in for a lock. - [Telling a no from a not yet](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/07-telling-a-no-from-a-not-yet/): A 400 and a malformed message look exactly like a timeout at the moment they fail. Classifying failures before retrying them, and what goes wrong when the classification is wrong. - [Watching a breaker trip](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/08-watching-a-breaker-trip/): A dependency down for minutes, and a breaker that refuses calls outright rather than letting every request find out for itself. - [Retrying into an empty room](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/09-retrying-into-an-empty-room/): The work finishes; the person who asked closed the tab ninety seconds ago. - [Reading past the dashboard](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/10-reading-past-the-dashboard/): A dependency degrades for six weeks, retries absorb every failure, and the success-rate dashboard never moves. - [Finding the point of no return](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/11-finding-the-point-of-no-return/): Some steps cannot be retried at all, which makes the decision an ordering problem instead. - [Arguing the case](https://comp4020-agentic-coding-studio.github.io/comp4020-ass2-PetreWei/sessions/12-arguing-the-case/): A retry policy that cites every mechanism from the last eleven weeks, the incident it produced, and a position you have to defend.