Week 6
Build this week's exercise, then run the gate.
make check WEEK=6
| Session | Session 4: Defence, 60 min |
| Build | Tag, release, break, roll back, fix forward; the trade-off table, the write-up, the demo and the AI-assisted rehearsal. |
| Files | reflections/writeup.md, decisions/week-6-rehearsal.md |
| Measure | make evidence WEEK=6 on a real model, into evidence/week-6.json |
| Record | decisions/week-6.md from the evidence, ai-use/week-6.yml, reflections/week-6.md |
| Guides | How you are judged · Glossary |
checks fail 10 of 14 checks pass
Red is the normal state of a week you have not built yet. Each name is a test in the file beside it.
Written last: make evidence WEEK=6, then decisions/week-6.md and ai-use/week-6.yml.
38 requests, $1.00000 total; failures: unsupported: 1
| step | n | p50 ms | p95 ms | cost $ |
|---|---|---|---|---|
| POST /documents | 28 | 3 | 4 | 0.00000 |
| POST /documents/{id}/extract | 3 | 0 | 3 | 0.00000 |
| POST /index | 2 | 48 | 61 | 0.00000 |
| POST /ask | 1 | 3 | 3 | 0.00000 |
| POST /tasks/run | 4 | 1 | 3 | 0.00000 |
The exercise is in your repository, where you can run it:
code weeks/6/README.md make next
Least agency first, a defence against instructions planted in documents and tool results, personal data masked before it reaches the model, and cost and time traced per step.
A published build someone else can run, a rollback you performed, the trade-off table, a recorded five-minute demo, and one page saying what it did for the business.
That page, and the demo, are what an interview actually asks about.
Interviewers ask what the last AI feature did for the business, not what it scored. A candidate who can only give a score has been building in a sandbox.
Read this once (about 15 minutes). Write the sentence in your own words in reflections/week-6.md,
Q1. This week has less code and more proof.
A normal deployment is checked by tests that either pass or fail. This one answers differently on different days, and its provider changes under it. So the disciplines shift:
/health says which build, which prompts, which provider, and the
release workflow stamps the commit into the image so it cannot disagree.flowchart LR T1[tag v1.0.0] --> D1[deploy] --> S1["smoke ✓
expect-sha matches"] S1 --> BR["break on purpose
RELEVANCE_THRESHOLD=1.5"] --> D2[deploy] --> S2["smoke ✗
ask declines everything"] S2 --> RB["rollback
Run workflow, ref = v1.0.0"] --> S3["smoke ✓
minutes: ___"] S3 --> FX[fix forward] --> T2[tag v1.0.1] --> D3[deploy] --> S4[smoke ✓] style S2 fill:#fbeeed,stroke:#b3261e style S1 fill:#eef7ef,stroke:#2e7d4f style S3 fill:#eef7ef,stroke:#2e7d4f style S4 fill:#eef7ef,stroke:#2e7d4f
The document says it plainly: interviewers ask what the feature did for the business. So:
| Idea | Where it lives | What you do this week |
|---|---|---|
| Build identity | app/build_info.py, /health |
Tag, release, read it back out of the running image |
| Publish | the release workflow, ghcr.io/<you>/ai-eng-track |
Build, smoke test, publish; make the package public once |
| Smoke test | scripts/smoke.py |
It gates the publish, and you run it again after a rollback |
| Rollback | workflow_dispatch with a ref |
Break it on purpose, roll back, prove it with /health |
| Write-up | weeks/6/WRITEUP_TEMPLATE.md |
One page, numbers not adjectives |
| Defence | your mentor's final session | The whole track, defended |
Checked September 2026.
workflow_dispatch mechanism your rollback uses.Answers are kept in this browser only, under hub.quiz in local storage. They are never sent anywhere: not to the repository, not to the progress export, not to your mentor, and they have no effect on your route. Clearing your browser data clears them. The explanations are the point, not the score.