"Every productivity tool can become a liability multiplier. Factories need production-grade operational discipline."
Olet rakentanut factoryn. Se toimii. Tiimi hyväksyi sen. Kuukauden päästä kysytään: "Miksi prod kaatui?" — ja vastaus on hämmentävä.
Tässä oppitunnissa: 5 yleisintä antipatternia, miten tunnistat ne ja miten suojaudut.
Antipattern 1: Slop at Scale
Slop at Scale
"Slop at Scale" tarkoittaa, että factory tuottaa korkean volyymin matalan laadun outputtia, joka kuitenkin läpäisee tarkistukset. Yksittäin kukin tuotos näyttää OK:lta, mutta kokonaisuus on roska — koska tarkistukset eivät mittaa oikeaa asiaa.
Esimerkki: PR-katselmointi-agentti, joka hyväksyy 95 % PR:istä, koska sen check on "no merge conflicts". Tiimi mergaa kaikki, koodikanta degeneroi, mutta KPI näyttää "agent saved 200 hours".
| Oire | Mitigointi |
|---|---|
| Korkea läpäisyaste, alhainen lopputuotteen laatu | Mitä mittaat — esim. post-merge bug rate, ei vain "passed checks" |
| "Tarkistus läpäisty" mutta ihmiset kommenteissa "tämä ei toimi" | Lisää merkityksellisiä testejä: integraatio + e2e + property-based |
| Sama bugi toistuu kuukaudessa | Lisää human review gate kriittisille polkuille |
Pro-vinkki
Sääntö: Jos check ei voi epäonnistua oikeasti, se ei ole check. Esim. "code compiles" on triviaali — se on minimi. Oikeat checks: "ei uusia n+1 queryjä", "p95 latency alle 200ms", "covers AC1-AC4 jotka spec määrittelee".
Antipattern 2: Prompt Drift
Esimerkki: Tiimin viisi kehittäjää kopioi factoryn kotonaan ja säätää promptia "vain vähän". Kuukauden päästä viisi versiota. Toinen tiimi yrittää uusintaa onnistunutta ajoa — ei onnistu, koska prompt on muuttunut.
| Oire | Mitigointi |
|---|---|
| "Eilen toimi, tänään ei" | Version-control policy files — git, ei copy-paste |
| Ei voi reproducea ajoa | Pin model version — älä käytä "latest" |
| Eri tiiminjäsenet eri tuloksia | Single source of truth factory-määritelmälle |
# Versioitavissa, reproducible
git rev-parse HEAD # 7c3f2a1
ls .factory/policies/ # analyzer.json, planner.json, ...
# Aja factory tietyllä versiolla
factory run --policy-rev 7c3f2a1 --spec my-spec.json
# Aja factory eri versiolla rinnakkain — vertaile
factory run --policy-rev 9b8d4e2 --spec my-spec.jsonAntipattern 3: Bag-of-Agents
Esimerkki: Kaksi agenttia muokkaa samaa tiedostoa rinnakkain. Toinen lisää loggingin riville 42, toinen muuttaa rivin 42 logiikkaa. Merge konflikti, mutta kumpikaan agentti ei tiedä toisesta.
| Oire | Mitigointi |
|---|---|
| Agentit duplikoivat tai konfliktoivat työtä | Single orchestration layer — ei rinnakkaisia ajoja samaan resourceen ilman lukitusta |
| "Kuka muutti tämän?" → ei vastausta | Handoff contracts — kuka antaa työn kenelle, missä formaatissa |
| Agentti A:n output ei sovi agentti B:n inputiksi | Strukturoidut JSON-rajapinnat roolien välille |
{
"from_role": "analyzer",
"to_role": "planner",
"version": "v1.2",
"schema": {
"type": "object",
"required": ["findings", "context"],
"properties": {
"findings": {
"type": "array",
"items": {
"required": ["file", "issue", "severity"]
}
},
"context": {
"type": "object",
"required": ["repo_root", "branch"]
}
}
}
}Antipattern 4: 3 AM Liability
Esimerkki: Factory deployaa kello 03:00 tuotantoon. Kukaan ei näe deploymentia. Aamulla devit huomaavat: 14 PR:ää mergetty yön aikana, kaksi rikkoo tuotantoa, kukaan ei tiedä mitä ne tekivät.
| Oire | Mitigointi |
|---|---|
| Yöllä tehtyjä deploymentteja, joita kukaan ei katsele | Approval gates kriittisille operaatioille (deploy, DB-migration) |
| Outputtia jota kukaan ei katselmoinut | Time-windows: factory ajaa autonomisesti vain työaikoina |
| Compliance-tiimi suuttuu | Decision trace: jokainen agent decision lokitetaan + accessible audit reportille |
Sääntö: Jos ihminen ei katselmoisi muutosta tunnin sisällä, älä anna factoryn ajaa sitä autonomisesti.
Antipattern 5: Missing Observability
Esimerkki: Factory polttaa $400 viikossa. Kukaan ei tiedä, mihin se menee — yhteen scriptiin? Kaikkiin yhtä lailla? Yhteen tiettyyn agenttiin? Ei lokia, ei dashboardia, ei aavistusta.
| Oire | Mitigointi |
|---|---|
| Ei tiedetä per-run kustannusta | Per-call cost tracking — pakollinen kenttä lokissa |
| Ei nähdä trendejä | Dashboards: cost/run, success rate, p95 duration |
| Bugi tuotannossa, ei voi debugata | Structured logs alusta lähtien (ei jälkeenpäin) |
| "Onko factory parantunut?" → no idea | A/B-testit policy-versioiden välillä |
{
"run_id": "run_20260615_142301_abc",
"factory_version": "policy-v1.2.3",
"spec_id": "add-timeout",
"started_at": "2026-06-15T14:23:01Z",
"ended_at": "2026-06-15T14:24:18Z",
"status": "success",
"iterations": 2,
"tokens_total": 4821,
"cost_usd": 0.041,
"decisions": [
{"iter": 1, "agent": "builder", "action": "edit", "ms": 1840},
{"iter": 1, "agent": "checker", "result": "tests_failed", "ms": 12100},
{"iter": 2, "agent": "builder", "action": "edit", "ms": 612},
{"iter": 2, "agent": "checker", "result": "all_passed", "ms": 11800}
],
"outcome": {"merged": true, "pr_url": "https://github.com/example-org/example-repo/pull/421"}
}Operatiivinen kuri — tarkistuslista
Ennen kuin julistat factoryn "tuotantovalmiiksi", käy läpi:
| ✓ | Tarkistus | Miksi |
|---|---|---|
| ☐ | Policy on git-versioitu | Reproducoitavuus |
| ☐ | Model version pinnattu (ei "latest") | Reproducoitavuus |
| ☐ | Structured logs ajoittain (JSON) | Debugattavuus |
| ☐ | Per-run cost mitattu | Bilan hallinta |
| ☐ | Approval gate kriittisille operaatioille | Riski |
| ☐ | Time-windows: ei autonomista yöllä | Riski |
| ☐ | Meaningful checks (ei vain "compiles") | Laatu |
| ☐ | Handoff contracts agenttien välillä | Konfliktit |
| ☐ | Dashboards: success rate, cost trend | Operaatiot |
| ☐ | Rollback-suunnitelma jos factory rikkoutuu | Liiketoiminnan jatkuvuus |
Tiimin factory hyväksyy 98 % PR:istä, mutta production-bugit kaksinkertaistuivat viime kuussa. Mikä antipattern todennäköisesti?
Factory kustannusbill nousi 3x kuukaudessa ilman selitystä. Mistä aloitat?
Mini-audit: Factoryn tarkistuslista
Käy läpi yllä oleva tarkistuslista (10 kohtaa) viimeisimmälle agent-rakennelmalle, jonka teit (Sessio 3 -harjoitus). Kuinka moni läpäisi? Mikä on suurin riski?
Yhteenveto
5 antipatternia, 1 ydinviesti:
Factory ei korvaa kuria — se vaatii sitä. Ilman version controlia, observabilityä, approval gateja ja merkityksellisiä checksejä factory on vain kalliimpi tapa tehdä virheitä nopeammin.
- 🚨 Slop at Scale → merkityksellisiä testejä, post-outcome-mittarit
- 🌊 Prompt Drift → version-controlled policies, pinned models
- 🤹 Bag-of-Agents → single orchestration, handoff contracts
- 🌙 3 AM Liability → approval gates, time-windows
- 👻 Missing Observability → structured logs päivänä 1, dashboards
Seuraavassa oppitunnissa: Yhteenveto, retro ja portfolio — miten paketoit kolmen viikon työn ja puhut siitä työhaastattelussa.