Your client: Halden · the residency · ten weeks · one repository
Ten weeks at Halden. Something happens every Monday.
A real engagement is month four: the schema changes, the champion leaves, the pager goes off on the busiest night. The residency makes you live with one system you built. One customer, one repository you own from discovery to handover, and ten weeks in which something happens each Monday.
Halden Freight, its desks, its people and its data are invented. The US customs rule in week 9 is a real regulation as Halden's desk applies it, as of October 2026; nothing here is legal advice.
Your residency
- 01Access stalls; only an export,
- 02The dirty data pack lands, In Pro
- 03Two definitions of resolved, In Pro
- 04First slice due, In Pro
- 05The extract changed overnight, In Pro
- 06Instructions hidden in an invoice, In Pro
- 07The champion moves, In Pro
- 08The portal goes down before cut-off, In Pro
- 09Prices up, and a new rule, In Pro
- 10A second site, and handover, In Pro
Week 1 of 10~6 h
Access stalls; only an export
Halden's systems stay locked for ten more days, so map the desk's sources, its gaps and one goal you can be held to, from the export you have.
How a Halden week works
Each week opens on a Monday at Halden. Open the week's workspace and everything happens here, in your browser: no install and no terminal.
- Inbox. Read the week's emails; their attachments open beside them.
- Task. What happened, your tasks, and what done looks like.
- Files. One repository for the whole residency. Edit any file; Python and JSON are checked as you type.
- Run. Run pipeline rebuilds
out/from the latest pack (from week 2), Run a script runs one of your own modules, and Run tests runstests/. - Grade week. Runs this week's checks. When every required check passes, Start week N+1 opens the next one.
Week 1 is free and starts with seed 2026. Your repository stays in this browser; download it from the workspace whenever you want a copy. Keeping a copy at the end of each week is a good habit: the history is part of what you hand over.
How grading works
Graded here, in your browser, by the same checks Halden’s simulator runs. Your files stay in this browser; your result is saved to your account when you’re signed in. Want your files elsewhere? Download your repository any time.
Weeks 2 to 10: the grader regenerates the answers on your device when you grade; they’re never shown.
- Deterministic. The grader regenerates the estate from your seed, in memory, and compares your output with its truth. The truth is never written to your repository. Grading twice gives the same result; only measured latency varies.
- Hidden sets. Weeks 4 to 7 score 300 cases per desk that you never see. Each report says how many were right, wrong and routed, with a few example IDs; it doesn't list the answers.
- Required and stretch. A week passes when every required check passes. Stretch checks are for the Certified and Lead columns of the rubric. You can start a later week before this one passes; it is recorded as started anyway, and every later summary says so.
- Structure, not judgement. The grader can count rows, sections, sources and thresholds. It can't tell whether your memo is wise. Each brief's rubric is for that: the grader gets you to Associate; Certified and Lead need a reviewer (a mentor, a peer, or you, honestly) to read the documents against the rubric.
- Configuration weeks. Opening weeks 9 and 10 records a fingerprint of every Python file in
halden_app/,pipelines/andevals/. Changing any of them fails that week.
Where your results live
Graded here, in your browser, by the same checks Halden's simulator runs. Your files stay in this browser; your result is saved to your account when you're signed in. Each grade's full report is also in .residency/grade-week-NN.json in your repository. Anyone can change the code and grade again: the residency is practice for the work, and the only person a forged grade fools is you.
About the residency
The starter is a repository with an interface, some given code and TODOs.
Path Given Yours pipelines/clean.pya pass-through that accounts for every row the cleaning (week 2), schema versions (week 5) halden_app/model.pythe store: values with their source and history build()(week 3)halden_app/actions.pythe users and skills submit()and the four actions (week 3)halden_app/api.pyload(),model(), and the contract in the docstringclassify(),draft()(week 4),handle()(week 8)halden_app/sites.pythe product's site logic, complete nothing: from week 9 you configure it, you don't change it evals/an empty golden set and a judge stub both (week 4) config/users, the Santos site, the v1 mapping mappings, routing, Long Beach (weeks 5, 9, 10) docs/templates for week 1, and an index every document tests/a few shape checks your tests The interface the grader calls:
Call Returns From api.load(out_dir)the cleaned tables your pipeline wrote week 3 api.model(tables)the operational model; the grader reads it through m.val(key, prop)week 3 actions.submit(m, name, args, actor, key, now, approvers){"status": "applied" | "refused" | "pending_approval", ...}, auditedweek 3 api.classify(m, exception_id){"type", "cause", "action", "flags", "usd"}week 4 api.draft(m, exception_id){"to", "language", "subject", "body", "needs_approval", "usd"}, orNoneweek 4 judge(draft, case)inevals/judge.py"pass"or"fail"week 4 api.handle(m, exception_id, portal, now){"outcome": "drafted" | "routed", "reason", "key", "eta"}week 8 sites.load(name),sites.decide(case, cfg)the product's; the grader feeds your configuration through them week 9 A deterministic path passes every check. The sandbox has no network, so your code makes no model calls here.
Person Role First writes VP of operations Halden's sponsor; decides what goes live week 1 Rafaela Souza São Paulo desk lead; moves to Rotterdam on 11 May week 1 Halden IT service desk your access requests week 1 SI account lead Halden's systems integrator; sends the data week 2 Priya, central operations reports to the COO; owns right-first-time week 3 FinOps the budget week 4 Chief Information Security Officer security findings, and what may leave the building week 6 Camila Rocha acting São Paulo desk lead from 11 May week 7 Dewi Lestari Jakarta desk lead week 7 Halden on-call alerting the exception desk's SLO alert, not a person week 8 Maria Delgado Long Beach desk lead week 9 Product lead, your company owns sites.pyand the productweek 9 Priya Menon the SI's delivery lead; takes over on 12 June (not Priya in central operations) week 10