Demo proposal: Green health check, wrong model - #3044
Merged
Merged
Conversation
ericcornelissen
requested changes
Sep 21, 2026
ericcornelissen
left a comment
Collaborator
There was a problem hiding this comment.
The proposal looks quite good already but what I'm missing is the use of an (explicit) established tool or methodology. Please add this to make the proposal more grounded.
ericcornelissen
approved these changes
Sep 22, 2026
ericcornelissen
left a comment
Collaborator
There was a problem hiding this comment.
Thank you for clarifying, this looks good now 👍
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.
Assignment Proposal
Title
Green health check, wrong model
Names and KTH ID
Deadline
Week 4
Category
Demo
Description
A CD pipeline decides whether a new version can go live by asking whether it is healthy: does it answer, is it fast, is the response the right shape. That works for ordinary software, because ordinary software fails loudly. A model does not. It keeps answering in milliseconds, with a 200 and the right shape, and it is wrong.
Our example is a small web service that reads a customer review and says whether it is positive or negative. Two versions of it run side by side: the one currently in production, and a candidate waiting to be promoted. The candidate differs by one line of deployment config, which stops the review being lower-cased before the model sees it. The model was trained on lower-cased text, so a review written in capitals arrives as words it has never seen, and it starts guessing.
We use NGINX's mirror module to run the candidate as a shadow: it gets a copy of every request, but its answers are thrown away. The gate follows CheckList (Ribeiro et al., ACL 2020), a well-known approach to testing how NLP models behave, and the pipeline runs on GitHub Actions.
What we will show, in this order:
We finish with where this runs out: the labelled set goes stale, checks like the capitals one only catch what someone thought to test, the threshold is a judgement call rather than something you can derive, shadowing doubles the compute, and requests with side effects cannot be mirrored at all.
Relevance
Progressive delivery and quality gates are standard CD practice, and here we apply them to a component that is not deterministic. The failure we use, training-serving skew, is a common way models break in production. The point of the demo is that availability and correctness are different questions, and the usual health check treats them as one.