Spec-driven Development (SdD) — módszertan, gyakorlati példával (v5)

Spec-driven Development (SdD)

A specifikáció a szerződés, a dokumentum a kód — az ember dönt, az AI végrehajt. Egy módszertan — házépítés-hasonlattal, valódi példával, és azzal, hogy hogyan épül így egy alkalmazás lépésről lépésre — nem kódot írunk, a kód csak eszköz.

Document = Code · 11 axióma — alaptörvény · 4 szereplő · 2 kapu · TdD — teszt-vezérelt · EARS-követelmények · git · kis diff · pipeline-forge · entity-forge · ~500 Linux VM — valós rendszer

Java-fejlesztők · vezetők · üzleti elemzők30 min (talk) · ~45 min (teljes)2026
A hasonlat

Spec-driven Development — ahogy a Vishy család házat épít Verőcén

Az SdD lánc nem absztrakció. Mindenki el tud képzelni egy házépítést — és azt is, mi történik tervrajz nélkül. Nézzük végig ugyanazzal a négy emberi szereplővel, mint a módszertan — a tervrajztól a beköltözésig.

Mozzanat — élőben SdD lépés Ki cselekszik
A család: „3 hálószoba, déli kert, 140M Ft keret" szándék Megrendelő ember (BA)
Az építész engedélyezési tervet rajzol (statika, alaprajz, szabvány) spec (SDD/BRD) Építész ember (BA/architekt)
Kiviteli terv + ütemterv + anyaglista terv → feladatok Építész + AI ember + AI
A terv előre rögzíti a mércét: C25/30 beton — és a betonozáskor próbakockát vesznek belőle teszt (TdD) a mérce előbb van, mint a fal Építész + Kivitelező ember + AI
A brigád a terv szerint falaz/betonoz — nem improvizál kód / kivitelezés Kivitelező AI
A brigád ellenőrzi: vízszintben a fal, köt-e a beton gépi ellenőrzés (még nem a kapu) Kivitelező AI
A műszaki ellenőr összeveti a megépült házat a tervvel és a szabvánnyal verifikáció „jól építettük meg?" Műszaki ellenőr ember
A hatóság kiadja a használatbavételi (lakhatási) engedélyt — jogszabály és szabvány szerint, a megrendelőtől függetlenül megfelelőségi kapu „szabad-e egyáltalán használatba venni?" Hatóság ember (független)
A család átveszi: azt kaptuk-e, amire szükségünk volt? validáció / átvétel „a jót építettük meg?" Megrendelő ember (QA)
A család beköltözik; rossz a konyha → új igény az építészhez használat → új szándék Lakó ember (végfelhasználó)

Három ember, három kérdés — ezért nem helyettesíti egymást: a műszaki ellenőr a terv szerinti kivitelezést nézi (verifikáció), a hatóság a jogszabályt és a szabványt (megfelelőség — nálunk: biztonsági review, audit-hook, CI-szabály), a család pedig azt, hogy ez volt-e az, amire szüksége volt (validáció). A hatóság kiadhatja az engedélyt egy olyan házra is, amiben a család nem szeret lakni.

Az ellenpélda — „vibe építkezés": a brigád tervrajz nélkül kezd falazni („majd menet közben kialakul"). A ház áll… amíg jön az első statikai teher. Senki nem tudja miért áll úgy — mert a ház maga az egyetlen dokumentáció; a bontás az egyetlen „refaktor".

▸ Három mondat, amit érdemes kimondani (és később visszahívunk)
  • „A műszaki ellenőr azt nézi, hogy a terv szerint épült-e meg; a család azt, hogy azt a házat kapta-e, amire szüksége volt. Két kérdés, két emberi kapu." → verifikáció ≠ validáció. (A tervet az építész még az építkezés előtt írja alá — az terv-jóváhagyás, nem a kész ház ellenőrzése.)
  • „A brigád nem dönthet úgy, hogy 'inkább 2 szint lesz'. A scope a terven van." → A10, legkisebb diff.
  • „Ha a terv és a fal eltér, nem a tervet írjuk át a falhoz — a falat bontjuk a tervhez." → A2, Doc = Code.
  • „A próbakockát a betonozáskor veszik — nem utólag választják ki, melyik falat mérjük meg." → TdD: a mérce a munka előtt rögzül, különben ahhoz igazítjuk, ami éppen kijött.

A tervrajz a szerződés — de fölötte ott a szabvány: a platform 11 axiómája, az alaptörvény.

A valós feladatinfra-forge · kihagyható

A probléma — 20 év Linux-infrastruktúra

~500

Linux VM

10

hypervisor host (6 VMware + 4 Hyper-V)

9+

disztribúció-család (CentOS 4–8, OEL 4–9, Debian, SUSE…)

sok

EOL rendszer · technikai adósság

Mit kell megtalálni?

  • Megosztott / gyenge hitelesítő adatok gépek között
  • Elavult csomagok, EOL disztribúciók
  • Zombi gépek, gazdátlan fiókok
  • Szolgáltatás-függőségek a leállítás-tervezéshez

Miért AI?

  • 500 gép × tucatnyi adatforrás — embernek átláthatatlan
  • A korreláció (ugyanaz a hash több tucat gépen) gépi feladat
  • De: érzékeny adat + éles infrastruktúra — kontroll kell

A célállapot — egységesítés és kontrollált deploy

  • VM-létrehozás: OpenTofu, GitLab-vezérelve — az egyetlen kontroller a GitLab CI/CD. Az infra-forge a nyilvántartást vezeti (infra.vm_config), azt tükrözi az opentofu-vm-create repóba, és a CI hajtja végre a vSphere felé — az infra-forge maga sosem provisionál, és vCenter-jelszót sem lát.
  • Alapkonfiguráció: Ansible — a létrehozás után, és a futtatás nem az infra-forge dolga: a CoreInfra basic-configuration-all kézi CI-job-ja futtatja a VM-en, operátori PAT-tal — és újraindítja a gépet. Az infra-forge csak olvassa a kívánt állapotot: az OPS-sync_base_config naponta (0 6 * * *) beolvassa a hu.admin.infra/basic_configuration repót infra.base_config draft sorokba, amiket a /base-config emberi kapu aktivál — ez lesz a drift-összehasonlítás alapja. Ami befagyott, az az infra-forge-cd — az Ansible provisioning ága —, nem maga az Ansible.
  • Migráció a legfrissebbre — verzió- és platform-migráció (ROADMAP P14 Linux-unifikáció).
  • Két Linux-családra szűkítés — a ~9 családból kettő marad: Debian és Oracle Linux.

A kérdés nem az volt, hogy tud-e segíteni az AI — hanem hogy hogyan tartjuk szabályozott keretek között, miközben a fejlesztést is rá bízzuk. Erre a válasz a Spec-driven Development.

A házon: A telek, amin 20 év alatt toldás toldásra épült — terv nélkül; ma senki nem tudja biztosan, melyik fal tartó. · SdD-ben: Itt kezdődik a lánc: felmérés és szándék (brief.md) — mielőtt bárki tervet rajzolna.

A módszertan · valós spec

Mi a Spec-driven Development? — a lánc TdD-vel és validációval zárva

  1. Szándék

    01 — mit és miért (ember)

  2. Specifikáció

    02 — requirements (EARS) (ember + AI)

  3. Terv

    03 — design — a „hogyan" (ember + AI)

  4. Feladatok

    04 — tasks — függőségi lánc (AI)

  5. Bukó teszt

    05 · TdD · RED — a kikötés kódra fordítva — a kód előtt (ember + AI)

  6. Megvalósítás

    06 · TdD · GREEN — a kivitelezés — kód, amíg a teszt zöld nem lesz (AI)

  7. Verifikáció

    07 — build · teljes tesztfutás · review (AI + ember)

  8. Validáció

    08 — átvétel — „a jót építettük?" (ember (QA))

  9. Használat

    09 — az alkalmazás üzemel — és az első hiányból új szándék lesz (ember (végfelhasználó))

Vibe coding

  • Prompt → kód → „jónak tűnik" → merge
  • A kód az egyetlen igazságforrás
  • Senki sem tudja, miért úgy működik

Spec-driven

  • Spec → teszt (TdD) → kód; ha eltérnek, a spec nyer
  • A dokumentum a szerződés ember és AI között
  • A „miért" a specben rögzítve, diffelhetően

Az ember dönt, az AI végrehajt. Az 05–06 lépéspár a TdD: a teszt előbb születik, mint a kód — róla külön dia lesz. A lánc két emberi kapuval zárul (A9): Verifikáció (a review emberi része) + Validáció (a QA-átvétel) — pontosan a ház: a műszaki ellenőr azt nézi, a terv szerint épült-e meg, a család azt, hogy azt kapta-e, amire szüksége volt. A 09 pedig zárja a kört: a ház nem a kulcsátadásnál ér véget — a család beköltözik, és amit ott hiányol, az lesz a következő szándék. A termék az üzemelő alkalmazás, nem a beolvasztott kód.

▸ Egy spec a lemezen — a flotta-gyűjtés EARS-követelményei (docs/specs/fleet-collection/)

Egy nem-triviális feature spec-mappája — hat fájl, minden réteg egy, az irány fentről lefelé. A brief.md (2026-07-13 óta) és a tests.md (2026-09-09 óta) minden új specnél kötelező — az infra/library tiernél is; a korábbi specek grandfatherelve maradnak, ezért látsz a repóban régebbi, ötfájlos mappákat is.

docs/specs/<feature>/
├── brief.md # BRD — miért / kinek / siker
├── requirements.md # SRS — MIT · EARS (U/E/S/X/O)
├── design.md # SDD — HOGYAN · enforcement-térkép
├── tasks.md # a munka + bizonyíték · checklist
├── tests.md # TdD — a kikötés, ami bukni tud, a kód ELŐTT
└── audit.md # adverz review · findings + kockázat

Hogyan él a lemezen

  • A rétegek egymásra épülnek: minden kikötés a fölötte lévő azonosítóra hivatkozik — G1 → E5 → T6.
  • Vasszabály: a spec-mappa commitolva van, mielőtt az első implementációs fájl megszületne — és minden kikötés tesztje pirosan, a kód előtt (A8-kapu, TdD).
  • Ez a flotta-gyűjtés valódi spec-mappája: docs/specs/fleet-collection/ (belső GitLab) — requirements · design · tasks · audit. Ez egy grandfatherelt, a mandátumoknál korábbi spec, ezért nincs benne brief.md és tests.md; a fenti hatfájlos alak az új specek szerződése.
# U — Ubiquitous (mindig igaz)
U1 [x] the collector shall replace every sensitive field with a {{type:hash}} marker before any write to infra.*
U2 [x] original sensitive values shall live only in secrets.*, AES-GCM encrypted
U3 [x] each host shall yield OS · users+sudo · services · packages · network in one transaction
# E — Event-driven (When …)
E1 [x] When the schedule fires (0 */6), ops_fleet_cycle shall run pre-collect → collect, in order
      # a drift-láb 2026-09-09 óta kikapcsolva (befagyasztott cél-repó)
E2 [x] When durable state is unchanged, content_hash shall stay identical (no new SCD2 version)
# X — Unwanted (If … then …)
X1 [x] If infra_ai queries secrets.*, then the DB shall deny access
# O — Optional (Where … enabled)
O1 [~] Where SMTP is set, notify_fleet_collect shall email a summary; else soft-fail

A státuszjel az SSOT: [x] verifikált · [~] részleges · [ ] nyitott. Ez a „MIT"; a design.md a „HOGYAN".

A házon: család (szándék) → építész (engedélyezési terv) → kiviteli terv → próbakocka a betonozáskor → brigád → műszaki ellenőr → a család átveszi → beköltözés. · SdD-ben: 01 → 02–03 → 04 → 05 TdD → 06 → 07 → 08 → 09 — ugyanaz a kilenc lépés, ugyanazokkal a kapukkal.

Alapfogalmak — LLM , agent, szabály-betöltés

LLM + agent — és hogyan olvassa az AI a repót?

LLM

Nagy nyelvi modell — egy modelltípus a sok közül (van beágyazó-, rerank-, látómodell is). Szövegből szöveget jósol. A súlyai nem változnak attól, hogy beszélgetsz vele — magától nem szerez új tudást; amit tud, az a tanítás + amit most a kontextusába tettek.

Token

A szöveg „atomja" (~¾ szó). Minden bemenet és kimenet tokenekben mérődik — és tokenekben kerül pénzbe.

Context window — az aranyhal

Amit a modell egyszerre lát — és semmi mást. Nem végtelen: néhány száz oldalnyi szöveg fér bele, a repónk ennek a sokszorosa. Ami nincs benne, az a modell számára nem létezik — hiába van a repóban. A session végén kiürül — de nem a tudás vész el, hanem a munkamemória: a következő session a repóból, a szabályfájlokból és a memóriából újraépíti.

Prompt

A teljes bemenet: feladat + szabályok + kontextus. A „prompt engineering" valójában kontextus-szerkesztés.

  1. Kérés

    1 — feladat + betöltött szabályok

  2. Terv

    2 — lépésekre bontás

  3. Eszközhívás

    3 — fájl · shell · DB

  4. Megfigyelés

    4 — eredmény vissza a kontextusba

  5. Ismétlés

    5 — amíg a cél nem teljesül

  6. Verifikáció

    6 — build · teszt · jelentés

Az agent négy arca — ki irányítja a lépéseket?

Agent

LLM + eszközök + ciklus (a fenti hat lépés). Nem csak válaszol: fájlt ír, parancsot futtat, tesztet indít.

Nálunk: egy Claude Code session.

Agentic workflow

A lépések sorrendjét az ember rögzíti előre; az AI a lépéseken belül dolgozik. Kiszámítható, ismételhető.

Nálunk: az SdD lánc és a Markdown-pipeline-ok.

Multi-agent

Több agent, szétosztott szerepekkel, párhuzamosan — mindegyik a saját, kisebb kontextusával. Egy koordinátor fogja össze.

Nálunk: fork-ok — a tasks.md független feladatait párhuzamosan implementálják, mindegyik a saját ágán, a saját bukó tesztjével (TdD); a végén kód-, DB-, UI- és biztonsági reviewer egyszerre.

Autonóm agent

Egy célt kap, és maga dönti el a lépéseket — lépésenkénti emberi jóváhagyás nélkül, amíg a cél nem teljesül.

De honnan tudja, hogy teljesült? A TdD-tesztből: a piros → zöld a megállási feltétel. Teszt nélkül az autonómia csak magabiztos találgatás.

Nálunk: olvasni önállóan — minden írás kapun megy át (A6).

Az LLM statisztikai szövegjósló: a súlyai nem változnak a beszélgetéstől, és amit az aktuális kontextus vagy az eszközei nem hoztak be, arra abban a lépésben nem tud támaszkodni — csak újrakombinál, és magabiztosan téved. (Friss tényhez az agent jut hozzá: fájlt olvas, DB-t kérdez, eszközt hív.) A context window ráadásul véges — nem fér bele a rendszer, tehát minden session választ, mit olvas be. Ezért tesszük a tudást dokumentumokba, amit minden session újratölt: az aranyhal-memóriájú agentnek a repo a memóriája. A modell felejt — a platform nem. Mint a Memento hőse: nincs hosszú távú memóriája, minden nap emlékek nélkül kezdődik — ezért mindent leír (cetli, polaroid, tetoválás), és abból rakja össze, hol tart. Minden session egy ilyen új nap.

Hogyan olvassa az AI a repót? — a szabály-hierarchia

  1. Platform axiómák

    betöltés: session start — all_rules_for_claude.md + 00_axioms.md — csak a L1 kerül be kényszeredetten

  2. Projekt CLAUDE.md

    betöltés: session start — infra-forge-specifikus delták, státusz, tiltások

  3. .claude/

    betöltés: session start — hooks · skills · memory · MCP konfiguráció

  4. L2–L3 szabályok, spec-ek, kód

    igény szerint · RAG — amit a feladat megkíván — az agent olvassa be, vagy vektortárból keres vissza

▸ Mélyebben: mi az LLM valójában · és mi az agent

Mi az LLM valójában? — és miért következik belőle az SdD

Statisztikai jóslás

Következő-token-jóslás: tanult mintázat-folytatás, nem megértés. A magabiztos hang nem igazság-garancia.

→ ezért SdD: a kimenetet verifikálni kell — a leforduló kód még nem működő funkció.

Nincs új tudás — új kombináció igen

A tréningadatán és a kontextuson túl nem hoz új tudást; a meglévőből viszont új kombinációt állít elő. Nem felfedez — újrarendez.

→ ezért SdD: az üzleti igazságot (szabály, döntés, scope) neked kell megadnod — dokumentumként.

Kreativitás = szabályozott véletlen

A temperature azt állítja, milyen messze merészkedik a legvalószínűbb úttól. A tiszta véletlen zaj; a hasznos újdonság meglepő ÉS koherens.

→ ezért SdD: a spec és a szabályok a koherencia-korlát — bennük szabad, kívül kontrollált.

Nálunk: Claude Code

Terminálban futó agent. Olvassa a repót, szerkeszt, buildel, commitol — a projekt szabályfájljai szerint.

A korlátok

  • Csak azt látja, amit beolvasott — a többi repo, wiki, jegy nem létezik neki
  • A context window véges — nem fér be minden, tehát választani kell
  • Session-ök között felejti a beszélgetést — aranyhal-memória; ami megmarad, azt a repo őrzi, nem a modell
  • Magabiztosan tud tévedni

Új viselkedést nem „promptolgatással" érünk el, hanem a szabályfájl módosításával — ami diffelhető, review-zható, és minden jövőbeli session örökli.

A házon: A brigád minden reggel emlékezet nélkül érkezik: a tervrajzból és az építési naplóból tudja, hol tart. · SdD-ben: A spec, a szabályok és a git log az AI memóriája; a context window az aznapi munkaasztal.

A fejlesztői környezetinfra-forge · kihagyható

Hol dolgozik az AI? — a development-platform munkaterület

Nem IDE-plugin és nem varázsdoboz: egy terminál, egy munkaterület-gyökér, és mellette egymás mellett a repók. Aki Eclipse-ben workspace-t használt, annak ez ismerős — a különbség az, hogy itt a szabályok is a munkaterületen laknak, nem a wikiben.

development-platform/ # a munkaterület gyökere
├── CLAUDE.md # a platform szerződése — minden session betölti
├── docs/
│   ├── 00_axioms.md # L1 — a 11 axióma
│   ├── rules/ # L2 — DB · BE · FE · security · deploy
│   └── specs/<feature>/ # a specifikációk
├── .claude/ # hooks · skills · MCP · memory
│                          # ── a GitLab projektek, egymás mellett ──
├── infra-forge/ # IT cockpit — VM-ek, fleet-leltár
├── opentofu-vm-create/ # VM-létrehozás OpenTofu-val
├── vcenter-collector/ # vCenter-adatgyűjtés
├── infra-forge-cd/ # Ansible-ág — lezárva
├── jiramntr/ # JIRA adattárház
├── admin-knowledge/ # IT tudástár
├── iier-tudastar/ # IIER tudástár
├── kovacs-muhely/ # a tudástárak betöltője (RAG)
└── iiriki/ # IIER wiki

Miért egy gyökér alatt?

  • Egy library-javítás azonnal látszik a fogyasztó repóban — nincs „telepítsd a snapshotot" kör.
  • Az AI egy kontextusban látja a könyvtárat és a hívóját — így tudja megmondani, mit tör el.
  • A szabályok öröklődnek lefelé: platform → projekt → mappa.

Konfiguráció és titkok

  • Nincs jelszó a kódban és nincs kézzel szerkesztett .properties a szerveren.
  • Env-profilok gépenként (.env_<HOST>), titkosított vault-ban.
  • A feloldás emberi kapu — az agent maga nem tudja kinyitni (A6).

A lényeg egy mondatban: a repo a fejlesztői környezet. Ami nincs a repóban — szabály, döntés, konfiguráció, tudás — az a felejtő agent számára nem létezik. Ezért kerül minden fájlba, és ezért lesz minden fájl diffelhető.

▸ Amit a Java-világból ismersz — és ami itt megfelel neki
Eddig Most Miért jobb az AI-nak
Eclipse / IntelliJ workspace development-platform/ munkaterület + terminál Az agent fájlokat és parancsokat lát, nem ablakokat.
Confluence-oldal a konvenciókról CLAUDE.md + docs/rules/ Verziózott, diffelhető, és a session tényleg beolvassa.
config.properties a szerveren env-profil + vault Nincs „a teszten működött" — a profil a gépé, nem a kódé.
Jenkins-job leírás a fejekben pipeline .md a repóban Az orchestráció is adat, nem szóbeli hagyomány.
„Kérdezd meg Zolit" spec-mappa + RAG-visszakeresés A tudás nem megy szabadságra.

A házon: Az építési terület: a tervtár, a szabványok és a szomszéd épületek egy telken. · SdD-ben: A szabályok és a specek ugyanott laknak, ahol a kód — munka közben olvashatók, nem egy távoli wikiben.

A verziókövetés — SVN → git

Miért git? — mert a kis diff az emberi kapu

A git nálunk nem divat, hanem a módszertan hordozója. Ha az AI írja a kód nagy részét, akkor az egyetlen dolog, amit az ember végig kézben tart, a változás — és a git pontosan azt teszi olvashatóvá, felülvizsgálhatóvá és visszavonhatóvá.

A branch olcsó

SVN-ben az ág szervezési döntés volt, és fájt. Gitben egy ág egy kísérlet: az AI-t ráengeded, megnézed, és vagy bejön, vagy eldobod. Az eldobás nulla költségű — ettől mersz kísérletezni.

A kis diff a review egysége

Nem a kész terméket nézed át, hanem egy kicsi, indokolt változást. Egy néhány tucat soros diffet még érdemben át lehet nézni; egy több száz soros változásnál a review könnyen csak jóváhagyássá válik. A kettő között nem a figyelem vész el, hanem a kapu maga.

A history a bizonyíték

Ki, mit, mikor, és melyik spec alapján. Az AI-val végzett munka auditálhatósága nem külön rendszer — a git log maga az. (Mindjárt látunk egy idővonalat pontosan ebből.)

Vibe codingnál a git csak mentés. Spec-driven fejlesztésnél a git a kontrollpont. Az ember nem minden sort ír — de minden sort átenged. Ez a különbség, és a git teszi elvégezhetővé.

És itt a fogás: az AI-nak nincs fáradtságjelzése. Nem érzi, hogy nagy a diff — boldogan ír 2000 sort egy kérésre. Az ember viszont fárad, és a fáradt review pecsételéssé válik. Ezért a diff méretét előre, a specben és a taskokban kell korlátozni, nem utólag a review-n. A kis diff nem stílus — ez tartja életben az emberi kaput (A10).

▸ A kis diff technikája — hogyan marad átnézhető az, amit egy gép ír

Az öt szabály

  • Egy MR = egy önállóan átnézhető viselkedés. Rendszerint egy EARS-kikötés; ha kettő elválaszthatatlan, mehet együtt — de mindkettő azonosítója szerepeljen. A mérce az átnézhetőség, nem a darabszám.
  • A scope-ot a spec zárja le, mielőtt az első sor megszületne — így nincs mit „menet közben észrevenni".
  • Semmi alkalmi rendrakás. A hibajavítás hibajavítás; a mellette talált második hiba külön diff.
  • Commit taskonként, és az üzenet nevezze meg a kikötést — a történet így olvasható marad.
  • Ha a diff nő, a spec a hibás: nem a review-t kell erősíteni, hanem a feladatot kettévágni.

Amit cserébe kapsz

  • A visszavonás egysége is kicsi lesz. Ha éles hiba jön, egy döntést vonsz vissza, nem egy hetet.
  • A hiba helye kereshető. Kis commitok között a git meg tudja mondani, melyik törte el.
  • A review érdemi marad. Az átnézhető diff az egyetlen, ami mellett a „megnéztem" nem üres szó.
  • A könyvtár-változás nem robban. Nálunk egy közös könyvtár 16 repóra hat — ott a kis diff nem kényelem, hanem a biztonság mértékegysége.

Hogyan? — a második hiba útja

  1. Észreveszed — és leírod, nem javítod. Jegy, urgent-lista vagy egy sor az MR leírásában: „talált: X — külön MR". Az AI ugyanígy tesz: az A10 minden session elején betöltődik, ezért jelez és kérdez, nem javít csendben.
  2. Az első javítást egyedül zárod le — commit, MR; a diff csak a javításhoz szükséges sorokat érinti.
  3. A második hiba saját ágat kap a main-ről, saját commitot, saját MR-t.
  4. Ha már összekeveredett: git add -p — csak az első javítás sorait stage-eled, a többi git stash vagy külön commit.
  5. Ha az egyik a másikra épül: előbb a függőség megy be külön MR-ként, a másikat arra rebase-eled. A sorrend változik — két diff marad.
git switch main && git pull
git switch -c fix/masodik-hiba
# javítás → commit → külön MR

A kapu a review: ha a diff a követelményen kívüli fájlt vagy sort érint, az MR visszamegy — „vágd ketté". Cserébe mindkét javítás külön visszavonható, és a git bisect egyetlen okra mutat.

Java-hasonlat: ez ugyanaz a fegyelem, amit a jó commit-kultúrától mindig is vártunk — csak most nem opcionális. Amíg ember gépelt, a diff magától kicsi maradt, mert lassan nőtt. Egy gép mellett a méret korlátját szándékosan kell odatenni.

▸ SVN → git — a napi öt művelet, egymás mellett
SVN git A lényegi különbség
svn checkout git clone A teljes történetet kapod meg, nem egy pillanatképet — offline is nézheted.
svn update git pull Két lépés egyben: letöltés + beolvasztás. A letöltés önmagában ártalmatlan.
svn commit git commit → git push Kettéválik. A commit helyi és ingyenes — nyugodtan commitolsz tízszer, mielőtt bárki látja.
svn copy (branch) git switch -c Másodperc, nem szerveroldali másolás. Ezért lehet minden feladat külön ágon.
— (nincs igazi megfelelője) merge request (MR) A review formális kapu a beolvasztás előtt — a céges GitLabon ez az MR. Ez az A9 verifikációs kapuja.

Egy szokás, amit érdemes átvenni: a commit-üzenet mondja meg, melyik követelményt teljesíti (feat(fleet): E2 — content_hash stabil, ha nincs változás). Így a git history és a spec összeolvasható — és az AI is meg tudja mondani, hol tart a munka.

A házon: Egyszerre egy fal, amit a műszaki ellenőr még végig tud nézni; a tegnapi naplóbejegyzést nem radírozzák ki. · SdD-ben: Kis diff = egy review-egység; minden lépés a saját próbakockájával (TdD-teszt) megy be.

A szabályok — Szint 1

A 11 axióma — a platform alaptörvénye

Tizenegy, projekt- és technológia-független alapelv — nálunk kőbe vésve, nem javaslat: ugyanazok az axiómák Go-ban vagy Rustban, PostgreSQL-en vagy Oracle-ön.

„Ha egy szabály ütközik egy axiómával, az axióma nyer, és a szabály a hibás."

A tervrajz a szerződés — de fölötte az alaptörvény.

Fontos: ez a mi saját megoldásunk, nem szabvány és nem iparági előírás — bevált gyakorlatokból összeállított házirend. Kötelező ránk, itt, ebben a platformban; aki átveszi, a sajátját írja meg. A módszer (spec-first, teszt-first, kis diff, emberi kapuk) az általános — ez a tizenegy mondat már a mi megfogalmazásunk.

Alap · A1–A4

A1 · Egy igazság! — SSOT. Minden tény egy helyen — no hardcode, no duplication; entity spec, pipeline .md, LOV az authoritative source; a többi generálódik vagy hivatkozza. → s10b ↗

A2 · A dokumentum a kód! — Doc=Code..md spec = source of truth ÉS futtatható/generátor input. Két forma: (1) SDD spec → generated code (entity spec → DDL+CRUD); (2) pf-pipeline .md = maga a futtatható — nem generál kódot, hanem közvetlenül fut. Ha spec és kód eltér → spec nyer, a kód regenerálódik.

A3 · Ne égess be! — Never hardcode. Identity + env from env vars or fail-loud — no magic defaults, no baked-in literals; capability-based, not name-based.

A4 · Általános motor, logika a specben! — Generic engine, logic in specs. Két spec-típus, különböző szerep: SDD spec = tervrajz a fejlesztéshez (design, requirements, tasks); pf-pipeline spec = futtatható operatív logika (a motor értelmezi futásidőben). Négy motor (pipeline-forge, entity-forge, GoBI, datagrid) — ötödik nincs; extend via adapters / features / catalog entries, never fork.

Irány / szerep · A5–A7

A5 · Felülről lefelé! — DB→BE→FE→AI. DB first (entity spec → tárolt funkciók, no inline DML) → thin BE → generated FE → AI-felület legvégül (skill · MCP · persona, generálva); sosem kézzel, amit feljebb spec birtokol. → s10c ↗

A6 · AI orchestrál, ember kapuzik! — AI = orchestrator, human = control. Adapters, MCP tools, tárolt funkciók = AI's hands, built by humans; AI wields them; reads autonomous within policy; writes gated by human (MR / hash-reveal / admin-grant) or rule (hooks, RLS, RBAC); agent can never self-escalate.

A7 · Markdownul és angolul! — Markdown + English. Logic lives in readable docs, not hidden in compiled code; infra naming in English, business domain in Hungarian — AI-native format.

Folyamat + együttműködés · A8–A11

A8 · Előbb a tervrajz, előbb a teszt! — Spec-first + test-first; SDD + BRD + TdD. Intent → EARS requirements → design.md → tasks → tests → code; spec folder committed before first implementation file, and each requirement's test committed red before its code. Hard gate — no exceptions.

A9 · Kész = kétszer emberi kapu! — Done = human gate × 2. Verification (built it right? — build/test/smoke + code review) + Validation (right thing? — QA acceptance + perf); compile ≠ done.

A10 · A legkisebb diff! — Smallest diff; scope discipline. Blast radius is real (~16 sibling repos via replace); smallest diff = unit of safety, review, revert. Bug fix stays a bug fix.

A11 · Javasolj, aztán az ember dönt! — Propose, then human decides. Human owns what/how/where + env; AI owns lexicon + construction — proposes, asks, never silently self-solves. Complementary co-work.

A házon: Az építési szabványok — minden házra érvényesek, és a terv fölött állnak. · SdD-ben: Az axiómák a spec fölötti alaptörvény: ha ütköznek, az axióma nyer.

A szabályok — három szint

Alaptörvény → fizika → projekt-szabály — és mindet ember írja

Szint Mi Metafora Ki írja Példa
1 — Axiómák 11 alapelv, a miért alaptörvény — erkölcsi szerződés ember A1–A11
2 — Platform / technikai cross-project hogyan a fizika törvényei — egyetemes, adott ember DB→BE→FE; nincs string-ből épített HTML; csak tokenek
3 — Projekt per-projekt specifikum projekt-szabály — a projekt saját döntése (CLAUDE.md + .claude/rules) ember (a projekt gazdája) infra-forge: pszeudonimizálás tárolás előtt; SCD2 a snapshotokon; pgx/v5

A kontroll itt él (A6): mind a három szintet ember írja; az AI olvassa és betartja, de SOHA nem írja a saját szabályait. A fizika adott — senki nem választotta; a projekt-szabályt emberek döntik el az adott projektre. Ez az L2→L3 ugrás: a „given law"-tól a „human-chosen rule"-ig — ott, ahol az emberi kontroll lakik.

A fizikát nem lehet kicselezni — ha megsérted, nem áll össze a rendszer, ahogy a rosszul rakott fal leesik. De hogy egy adott projektben mi a szabály, azt az ember rögzíti, nem a természet. A kivitelező (AI) betartja; nem ő írja.

A házon: szabvány → építéstechnológia → ennek a háznak a terve. · SdD-ben: L1 axióma → L2 platform-szabály → L3 projekt-szabály és spec.

A tézis

Miért kontextus-alapú a fejlesztés? — erősítő vs. rövidítés

Szilárd híd — az erősítő

  • Kontextus + szabály + terv → megbízható architektúra.
  • Az AI a meglévő mintázatokra épít, nem nulláról találgat.
  • A gyorsaság a fegyelemből jön, nem a fegyelem ellenére.

Kártyavár — a rövidítés

  • Prompt → beillesztés → remény. Nincs terv, nincs szabály.
  • Az első változtatásnál összedől — senki nem ismeri a tartóelemeket.
  • A „gyorsabb" itt valójában a lassú: a hibát is gyorsan termeli.

A tézis: az AI nem rövidítés a gondolkodás megspórolására, hanem erősítő a jó kontextusra. Rossz alapra rakva gyorsan termel — rosszat is.

A kontextus nyelve — miért angolul írjuk a specet és a szabályt?

Token — a magyar drágább

Egy angol szó átlagosan ~5 karakter, egy token nagyjából 4 — így egy angol szó jellemzően egy-másfél token, sokszor egészben benne van a szótárban. A magyar toldalékol: egy szó több ragot hordoz, ritkábban szerepel egészben, ezért több darabra esik szét. Ugyanaz a tartalom magyarul érezhetően több token — ez kétszeresen fáj: drágább, és kevesebb fér a véges context windowba. (A pontos szorzó modellenként más; érdemes a saját specjeinken megmérni, mielőtt számot mondunk.)

Egy nyelv — egy szótár

A szabály, a spec, a kód és a hibaüzenet ugyanazokat a szavakat használja — nincs mit összepárosítani. Két nyelven ugyanaz a fogalom kétféleképp íródik le, és a visszakeresés is, a review is ezen a résen szivárog el. A cél nem az angol, hanem hogy egy fogalomnak egy neve legyen (A1).

A kód úgyis angol

Kulcsszó, azonosító, könyvtár-dokumentáció, hibaüzenet, git-szótár — mind angol. Ha a spec magyar, minden mondat mögé fordítási réteg kerül, és a jelentés ott szivárog el. Egy nyelven tartva nincs mit félrefordítani.

De nem mindent angolul — a vágás éles (A7): az infrastruktúra és az orchestráció beszél angolul (szabályok, EARS-kikötések, kódbeli azonosítók, commit-üzenetek), az üzleti tartomány marad magyarul (a domén fogalmai, a felhasználónak szóló szövegek, ez a diasor is). A BA nem lesz angol nyelvű követelményíró: a szakterületi szó magyar marad, csak a kikötés váza angol.

A házon: Szilárd híd vs. kártyavár: alap és statika nélkül a gyorsan felhúzott fal az első tehernél leomlik. · SdD-ben: A kontextus (spec + szabály) az alap — az AI erősítő, nem rövidítés; a TdD-teszt a statikai számítás.

A fejlesztés lépései

Négy lépés — a szándéktól a bizonyított kódig

  1. Szándék → brief

    Egy prompt, akár „vibe" szinten: mit akarunk és miért. Az AI ebből briefet és követelmény-vázlatot ír.

    kimenet brief.md · requirements.md — az ember javítja és elfogadja

  2. A teljes spec

    A vázlatból generált spec-mappa: SDD terv, EARS-kikötések, és minden kikötéshez a TdD-teszt leírása.

    kimenet design · tasks · tests.md — commitolva, mielőtt kód születik (A8)

  3. Implementáció

    Az AI a kódot három szint szerint írja: axióma (alaptörvény) → platform-szabály → a spec. Nem improvizál, nem bővít.

    kimenet kis diff — egy feladat, egy commit, visszakövethető a kikötésig (A10)

  4. TdD — piros → zöld

    A 2. lépésben a teszt leírása (tests.md) születik; a 3. lépés első commitja maga a teszt-kód (ember + AI írja) — lefut, és piros. A kód akkor kész, ha ugyanaz a teszt zöldre vált — nem akkor, ha lefordul.

    kimenet bizonyított „kész" — gépi ellenőrzés, aztán a két emberi kapu (A9)

  1. Szándék

    1 · EMBER — prompt / vibe → brief

  2. Spec

    2 · AI — EARS + terv + teszt-leírás

  3. Spec elfogadva

    🔒 GATE — ember jóváhagy, commit

  4. Teszt piros → kód

    3 · EMBER + AI — teszt: ember + AI · kód: AI — axióma · szabály · spec szerint

  5. Zöld

    4 · AI — build · teszt · smoke

  6. Review + átvétel

    🔒 GATE — verifikáció · validáció

A csavar: a prompt csak a kiindulópont, nem a módszer. A „vibe" az első lépésben helyénvaló — utána a spec veszi át, és a teszt dönti el, mikor van kész. Az ember a két kapunál irányít (A6).

A házon: szándék → engedélyezési terv + a próbakocka előírása → kivitelezés → a kocka eltörik: bírja? · SdD-ben: brief → spec + tests.md → kód → TdD: piros → zöld.

A terület fejlődése

Hogyan fejlődött a terület — és hol áll az infra-forge

  1. Prompt engineering

    Egyetlen utasítás → egyetlen válasz; az AI megáll, és a következő promptra vár.

    infra-forge Excel-leltár → DB — vSphere discover · CSV/seed → infra.machine

  2. Context engineering

    A megfelelő kontextus a prompt köré: spec, séma, szabály, minta.

    infra-forge DB → BE → FE generálás — entity spec → entitygen/lovgen → stored function → HTMX

  3. Harness engineering

    Az agent köré épített környezet: eszközök, jogok, és a kontroll-kapuk.

    infra-forge Emberi kapuk — GitLab-MR · hash-reveal · admin-grant

  4. Loop engineering

    Felfedez · cselekszik · ellenőriz · ismétel — egy stabil cél felé, önállóan.

    infra-forge AI-önkontroll — a megcélzott hurok: manifest → CI futtatja → ops_validate_deployment 0–100 → drift esetén újraépít. A remediációs ág ma áll (2026-09-09).

  1. Observe

    DISCOVER — collect → SCD2 artefakt

  2. Understand

    DISCOVER — AI elemzés → findings

  3. Plan

    ACT — OpenTofu tfvars / base-config manifest tervezet

  4. Emberi kapu

    🔒 GATE — GitLab MR — ember jóváhagy

  5. Deploy + Verify

    ACT → VERIFY — CI alkalmazza · validációs pont 0–100

  6. Confirm / Recreate

    REPEAT — pont ≥ küszöb → lezár · drift → újraépít

A csavar: a hurok teljes — de az emberi kapu benne van. Az AI tervez, a GitLab CI alkalmaz, az ember jóváhagy (A6). Ez nem „az ember kilép a hurokból", hanem kapuvezérelt autonómia.

A stratégia

Az AI a munka középpontja — az ember a kontroll középpontja

Kezeket építünk az AI-nak — két rétegben

  • Motor (pipeline-forge, entity-forge, GoBI / datagrid): generikus, két hívója van — az alkalmazás is futtatja (ütemezés, UI), és az AI is. Közös alap, nem csak az AI‑é.
  • Kéz: amit az AI a motoron át kézbe kap — adapterek, MCP-eszközök, tárolt funkciók.

Ugyanaz a pipeline fut az alkalmazásban és az AI kezében: egy logika, két hívó.

A kontroll nálunk marad

Az ember tartja a kapukat (MR / hash-reveal / admin-grant). Az agent principal sosem ad magának jogot, sosem old fel titkot.

Az AI anyanyelve: Markdown + angol

Ezért él a logika olvasható dokumentumban (pipeline, spec, szabály) — ez a miért a Document=Code mögött.

  1. AI mint LÉPÉS

    RÉGI — az ember orchestrál, az AI egy-egy részfeladatot old meg

  2. AI mint ORCHESTRÁTOR

    ÚJ — az AI vezényli a folyamatot, az ember a kapuknál dönt

A házon: A brigád dolgozik, a tulajdonos és az ellenőr a kapuknál áll; a darut a brigád és a gépész is használja. · SdD-ben: Az AI végzi a lépéseket, az ember tartja a kapukat — a motornak két hívója van: az alkalmazás és az AI.

A formátum · egy valódi, futó artefaktum

Miért dokumentum? Miért Markdown? — egy fájl, három arc

Ez a pipelines/ops_dep_extract.md — minden éjjel 04:00-kor magától lefutó, élő pipeline: a flotta pillanatképeiből kiszámolja a szolgáltatás-függőségeket (DNS · NFS · LDAP · SMTP) → naplóz → átszinkronizálja a függőségi gráfot → lezár. Egyetlen Markdown-fájl, nincs mellette kód. Váltsd a nézetet — ugyanaz a fájl mind a három.

Ugyanaz a fájl: az ember olvassa (DOC), a git diffeli (RAW), a bin/pf futtatja (PIPELINE) — ez az A2 (Document = Code).

# ops_dep_extract — nightly service-dependency edge extraction

> **What it does**
> Derives service dependency edges from current snapshot data by calling
> `infra.dep_extract_from_snapshots(jsonb)` — DNS, NFS, LDAP and SMTP edges.
> Idempotent. **No LLM required.** Pure SQL over `machine_snapshot`.

## Pipeline

```yaml
name: ops_dep_extract
trigger: cron
schedule: "0 4 * * *"
tenant: _infra
```

## Step: Extract Dependencies — db_query

**`${config.tenant}`, never the bare form** — an unresolved reference renders
as a literal `{{…}}` rather than failing. The function then filtered on a
tenant that does not exist, upserted nothing, and reported success:
27 green nightly runs in the fortnight to 2026-08-28, zero edges written.

```yaml
config:
  query: |
    SELECT infra.dep_extract_from_snapshots(
        jsonb_build_object('tenant', '${config.tenant}')) AS result
  output_key: run_result
on_error: Log Run Failure
```

## Step: Log Result — log
…  on_success: Sync Graph Store

## Step: Sync Graph Store — pipeline

```yaml
config:
  file: "${INFRA_FORGE_ROOT}/pipelines/OPS-graph_sync.md"
critical: false
on_success: Done
```

## Step: Log Run Failure — log
Reachable ONLY via the `on_error` jump above — never by falling through.

## Step: Done — log
name schedule tenant trigger
ops_dep_extract 0 4 * * * _infra cron + kézi (pf-ui)
# élő napló — pfworker-infra, éles szerver, 2026-09-23
04:00:38.541  pipeline start  name=ops_dep_extract steps=5
04:00:38.710  step done  Extract Dependencies  success  168 ms
04:00:38.710  step done  Log Result            success
04:00:38.718  pipeline start  name=ops_graph_sync steps=9
04:00:38.899  pipeline done   ops_graph_sync  success  source_edges=53
04:00:38.900  step done  Sync Graph Store      success  188 ms
04:00:38.901  step done  Done                  success
04:00:38.901  pipeline done  ops_dep_extract  success  steps_run=4  359 ms

steps_run=4, nem 5 — a hibaág sikeres éjszakán kimarad, és ezt a fájl mondja meg, nem egy kód mélyén rejlő if. A tanulság is a futtatható fájlban él: a 27 zöld, de üres futás története ott áll a lépés fölött, ahol a következő szerkesztő (ember vagy AI) biztosan elolvassa. A dokumentum és a kód nem tud elcsúszni egymástól, mert ugyanaz a fájl (A2).

Egy forrás, négy fogyasztó — ezért Markdown

Szempont Miért a Markdown nyer
Ember (DOC) Prózában olvasható, fejlécekkel strukturált — a nem-kódoló is érti a folyamatot.
Git (RAW) Soralapú diff: egy szabályváltozás 5 sorban review-zható, a history audit trail.
LLM (RAW) Prompt-natív: frontmatter + próza + kódblokk veszteség nélkül kerül a kontextusba.
Motor (PIPELINE) Nincs recompile: egy lépés vagy szabály módosítása szövegszerkesztés, nem build-deploy ciklus.

Ha a tudás csak a kódban él, három olvasója van: a fordító, a szerző — és senki más.

▸ Document = Code · No bare SQL — a két következmény

Document = Code

A .md egyszerre a specifikáció ÉS a futtatható / generátor-bemenet. Nincs külön dokumentáció, ami elavulhatna.

No bare SQL

A forrásfában nincs csupasz .sql. Minden kézi SQL markdown: frontmatter + a miért próza + egyetlen ````sql` blokk. A generált DDL specekből születik.

▸ Mi az a Markdown — és hogyan néz ki egy platform-fájl belülről

Mi az a Markdown?

Pehelysúlyú, sima-szöveges jelölőnyelv (CommonMark szabvány). Néhány jel az egész: # fejléc, - lista, | tábla |, **félkövér**, kódblokk. Olvasható nyersen és renderelve is.

A fejléc a modell térképe

A #…###### hierarchia adja a szerkezetet — a RAG fejezetenként darabol (chunk-by-chapter), így a modell célzottan a releváns szakaszt kapja vissza, nem az egész fájlt.

Három rész, egy fájl

1) YAML frontmatter — metaadat (név, sorrend, függőség, schedule).

2) Próza — a miért.

3) Egy vagy több fenced blokk — a futtatható tartalom (sql / yaml / lépések).

A fenti ops_dep_extract.md pontosan így épül fel: frontmatter (név, ütemezés, tenant) + próza (a miért) + ## Step: szakaszok (a futtatható lépések). Az ember a prózát olvassa, a git a diffet, az LLM az egészet — a motor pedig a lépéseket futtatja, sorban.

A házon: A tervrajz nem utólagos leírás — a brigád ebből épít, és ha a fal eltér tőle, a falat bontják. · SdD-ben: Document = Code: ugyanaz a fájl a spec, a dokumentáció és a futtatható.

Az alapelv — A1 + A2

Egy igazságforrás + a dokumentum a kód — nem kettő, nem nulla

Az adatbázis az igazságforrás (A1)

  • Minden gépállapot az infra.*-ban él — egy helyen, egy verzió
  • Entitásspec (.md) → DDL → tárolt függvény → RLS — a CRUD-lánc generált (bin/ef-cli); az üzleti függvények kézzel írt .md-k (70 db)
  • Írás csak tárolt függvényen át — a handlerekben nincs inline DML
  • LOV-táblák (lov.*) = SSOT minden legördülő értékhez

A pipeline .md = az orchestráció igazságforrása

  • A markdown pipeline-fájl maga a logika — nem dokumentálja azt
  • Lépés hozzáadása = pipeline-fájl szerkesztése; nincs Go-fordítás
  • Egy forrás uralja az ütemezést, a lépéseket, a hibakezelést, az audit trailt
  • 122 pipelines/*.md — a fájl törlése = a képesség törlése

Document = Code (A2) — mélyebben

  • A .md spec egyszerre az igazságforrás és a generátor/futtatható bemenet
  • Entitásspec → entitygen → SQL DDL + CRUD tárolt függvények + RLS + LOV seed (mind generált; a Go handler és a sablon kézzel írt)
  • Ha a kód eltér a spectől, a spec nyer — a kód újragenerálódik
  • A szabály is dokumentum: diff-elhető, git-verziózott, az AI minden sessionben elolvassa

Miért fontos ez az infra-forge-ban

  • 65 entitásspec (entities/IF-*.md) = a séma hiteles forrása — nem az adatbázis
  • 122 pipeline-fájl = a folyamat hiteles forrása — nem a Go-kód
  • 16 skill (skills/*.md) = az AI képességkatalógusának hiteles forrása
  • Egy szerkesztés, egy fájl — sehol nincs mit szinkronban tartani

A házon: Egy hiteles tervrajz a helyszínen — nem kettő, és nem a brigád fejében. · SdD-ben: A1 + A2: egy igazságforrás, és az maga a futtatható.

Az alapelv — A5infra-forge · kihagyható

Felülről lefelé — adatbázis → backend → frontend → AI-felület

Adatmodell → vékony backend → ahol lehet, generált frontend → AI-felület. Soha ne írj kézzel olyat, amit feljebb egy spec már meghatároz. A négy réteg együtt az alkalmazás.

DB — először az adatmodell

  • Entitásspec (.md) → DDL + tárolt függvények
  • Minden CRUD tárolt függvényen át
  • RLS az adatbázis rétegben, nem Go-ban
  • DB-generált now(), UUID PK-k
  • 65 entitásspec + 70 kézi függvényfájl (.md)

BE — vékony backend

  • Handlerek tárolt függvényt hívnak — nincs üzleti logika Go-ban (5 közvetlen tábla-olvasás még kiváltásra vár)
  • Routing, auth, session = a Go feladata
  • Nincs ORM — pgx/v5 + pgxpool direktben
  • Orchestráció → pipeline-fájl, nem Go-kód
  • cmd/agent route → internal/ → tárolt fn

FE — ahol lehet, generált

  • HTMX fragmentek — nincs SPA, nincs build step
  • Lista-oldalak entitásspecből generálva (9 oldal) — a többi 45 kézzel írt
  • GoBI riport: Markdown katalógus-bejegyzés → HTMX tábla (47-ből 38 generált)
  • Datagrid és sidebar adat-vezérelt
  • ui/pages/ + ui/pages/gen/ + GoBI bi/**/*.md

AI — a felület, ami az AI keze

  • Skill, MCP-eszköz, persona — az alsó rétegeket hívja (pipeline, tárolt fn), saját logikája nincs
  • Cél: generálni az alsó rétegekből — ma a 16 skill még kézzel írt .md
  • Olvasás önállóan, írás kapun (A6)
  • skills/*.md + pipelines/*.md

Oldd meg ott, ahol él — az adat a DB-ben él

  1. DB-eszközzel

    1 · ELŐSZÖR — halmazművelet, tárolt függvény, index

  2. Jó és elég gyors?

    2 · MÉRÉS — helyes eredmény és teljesítmény — mérve

  3. Másik megoldás

    3 · HA NEM — lassú vagy drága → a szomszéd rétegben (BE)

  4. A „miért" a specbe

    4 · RÖGZÍTÉS — design.md: mi bukott el, miért itt lett

Mi hová tartozik: DB — szűrés, rendezés, összesítés · BE — transzport, auth, session · FE — megjelenítés · AI — a tierek elérése, nem a logikájuk. Ha a munka a BE-be kerül, az adatot akkor is csak tárolt függvényen át érjük el: a hely mozdulhat, a hozzáférés módja nem. Az invariáns: az igény változik → az entitásspec vagy a pipeline-fájl változik → a generált kód frissül. Nem fordítva.

A házon: Alap → falak → tető → berendezés; senki nem a tetővel kezdi. · SdD-ben: DB → BE → FE → AI — felülről lefelé, a spec szerint.

Dokumentumtípusok — blueprintek + a térkép

SDD + BRD, és az ötrétegű dokumentumtérkép — valós fájlokkal

Két dolog, egy rövidítés — ne keverd össze. A módszertan az SdD = Spec-driven Development (szándék → spec → terv → kód → verifikáció → validáció — lásd a korábbi diát). Ezen a dián viszont SDD = Software Design Description (IEEE 1016-2009 — inaktív-fenntartott státuszú szabvány, nálunk referencia-modellként használva): egy konkrét dokumentumtípus, a technikai tervrajz. A módszertan írja elő, hogy ilyen blueprint készüljön — a kettő nem ugyanaz, csak a betűszó esik egybe.

SdD ⊃ { SDD, BRD (+EARS), TdD } — a módszertan a keret; alatta a két tervrajz (az EARS a BRD kikötés-nyelve, nem külön dokumentum) és a bizonyíték. Az alábbi három csempe ezt a hármat bontja ki.

SDD — Software Design Description (IEEE 1016-2009, referencia-modell)

Szabvány: IEEE 1016-2009.

A technikai tervrajz: architektúra, adatmodellek, interfészek, komponens-viselkedés — a híd az üzleti igény és a kód között.

  • Régen: „halott dokumentum" — egyszer megírták, a kód elszaladt mellőle
  • AI-korban: az agent kontextus-motorként olvassa — a kód az architektúra-határokon belül születik
  • És karban is tartja: változás után az AI frissíti a tervet — terv és kód szinkronban marad

forrás: IEEE Std 1016

BRD — Business Requirements Document (ISO/IEC/IEEE 29148)

Szabvány: ISO/IEC/IEEE 29148.

Az üzleti tervrajz: célok, scope, üzleti követelmények — mit érjen el a rendszer (a hogyan előtt). Workflow-k, adatáramlás, compliance; nagy szervezetnél több száz oldal, gyakran ellentmondásokkal.

  • Gap-analízis: az LLM beolvassa és jelzi az ellentmondásokat (40. oldal vs. 200. oldal)
  • Automatikus adatleképezés: legacy → új séma, hónapok helyett napok alatt
  • Determinisztikus fordítás: természetes nyelvű workflow → szabályalapú séma és kód — hallucináció nélkül

forrás: ISO/IEC/IEEE 29148

TdD — Test-Driven Development (Beck, 2002)

Nem harmadik tervrajz — a tervrajz bizonyítéka. A blueprint megmondja, mit jelent a „kész"; a teszt megmutatja, hogy az. Az EARS-kikötés gépi fele.

  • Régen: a fejlesztő fegyelmét pótolta — és gyakran a kód után született
  • AI-korban: gépi visszajelzés, amiből az agent tovább dolgozik — és amit nem tud meggyőzően előadni
  • És a kapu: a review a tesztet is nézi, nem csak a kódot — a gyengített teszt zöld, és hazudik

forrás: Beck, TdD by Example

Blueprint / bizonyíték Nálunk ez a szerep…
SDD BRAINSTORM.md · ARCHITECTURE.md · invariants/design.md — a HTML-tükör és a Confluence-oldal csak megjelenítés; szerkeszteni mindig a .md-t kell
BRD EARS requirements · compliance riport-spec-ek · workflow pipeline-ok — az üzleti szabály tesztelhető kikötésként él, a fordítása determinisztikus (codegen, nem hallucináció)
TdD *_test.go · TestE2_… — a bukó teszt commitolva a kód ELŐTT — az EARS-kikötés végrehajtható alakja: a „kész" nem vélemény, hanem futtatható. Ez zárja a kört a két tervrajz és a valóság között.

Ebből a szemszögből a módszertan lényege: a blueprint nem a fejlesztés mellékterméke, hanem az üzemanyaga — az AI miatt végre megéri jó tervdokumentumot írni, mert van, aki garantáltan és minden alkalommal elolvassa.

Az ötrétegű dokumentumtérkép — minden réteg egy valós fájl

Réteg Dokumentum Hogyan használd fejlesztés közben
szabályok docs/00_axioms.md · CLAUDE.md · .claude/rules Session-startkor automatikusan betöltődik — a „munkaszerződés". Új szabály = ide írod, nem a kódba kommenteled.
tervek BRAINSTORM.md → SCENARIO.md → ROADMAP.md A brainstormingtól a jövőképig — a .md a forrás. A HTML csak megjelenítés: szerkesztés után a /regen-html (scripts/regen_brainstorm_html.sh) generálja újra; hook nem futtatja, és kézzel sosem szerkesztjük.
specifikációk docs/specs/fleet-collection/requirements.md · entities/IF-.md · lov/.md Az igazság forrása. Mező hozzáadása = spec szerkesztés + regenerálás, soha nem kézi DDL. Követelmények EARS-formában. Az entity-forge generátorai (bin/ef-cli): entity — entities/*.md → DDL + CRUD tárolt függvények + RLS + ## SEED sorok, és a lista-oldal (ui/pages/gen/) + GoBI riport (bi/queries/) · infra-forge: 65 lov — lov/*.md → LOV-táblák + értékek · infra-forge: 23 rule — logic/BR-*.md → üzleti szabályok SQL-ben · itt még nem használt seed — seed/*.md → kezdő adatok · itt még nem használt xsd — XSD-séma → entities/*.md + lov/*.md · itt még nem használt batch · validate · diff — mind egyben · előellenőrzés · összevetés az élő DB-vel (csak olvas)
futtathatók pipelines/ops_dep_extract.md · database//.md · skills/.md · sidebar//*.md A fájl MAGA a futtatható artefaktum: bin/pf futtatja; a sidebar startupkor DB-be szinkronizálódik.
tükrök docs/*.html · Confluence-oldal · Jira-komment Csak megjelenítés — nézetek az embereknek; a repó az igazság, a tükör csak visszaadja. A HTML a forrás-MD-ből regenerálódik; a Confluence-oldal (pl. az IT állapot-oldal) és a Jira-komment a mért állapotot mondja el ott, ahol a kollégák olvassák. Sosem a tükrön javítunk: a forrás változik, a tükör frissül.

Az irány mindig felülről lefelé: szabály → terv → spec → futtatható artefaktum → tükör (HTML, Confluence, Jira). Lefelé sosem írunk kézzel olyat, amit feljebb spec birtokol.

A követelmény nyelve — EARS

EARS — öt mondatminta, amiből teszt lesz

Easy Approach to Requirements Syntax — Alistair Mavin, Rolls-Royce. Nem szabvány-bürokrácia: öt mondatsablon, ami a „legyen gyors és felhasználóbarát" típusú kívánságot olyan kikötéssé alakítja, amit egy gép is el tud dönteni. Ez a BA legfontosabb új eszköze. Nem önálló tervrajz: az EARS a BRD (követelmény-réteg) mondattana — nálunk a requirements.md-ben él, és onnan hivatkozza a design, a task és a teszt.→ s4 ↗

Kód Minta Sablon A Vishy-házon és ugyanaz a minta a szoftverben
U Ubiquitous mindig igaz The <system> shall <response> A ház minden külső falának hőátbocsátása legfeljebb 0,24 W/m²K. A rendszer minden jelszót csak titkosítva tárol.
E Event-driven esemény hatására When <trigger>, the <system> shall <response> Amikor a beton eléri a 28. napot, a próbakocka nyomószilárdsága legalább C25/30. Amikor a vevő elküldi a rendelést, a rendszer 2 másodpercen belül visszaigazolja.
S State-driven amíg egy állapot tart While <state>, the <system> shall <response> Amíg fagy van, a brigád nem betonoz — a munka áll, a terv nem változik. Amíg a fiók zárolva van, a rendszer nem enged belépést.
X Unwanted a nem kívánt eset If <trigger>, then the <system> shall <response> Ha a statikus nem hagyta jóvá a tervet, akkor a falazás nem kezdődhet el. Ha háromszor egymás után hibás a jelszó, akkor a rendszer 15 percre zárolja a fiókot.
O Optional ha a funkció be van kapcsolva Where <feature>, the <system> shall <response> Ahol napelem van tervezve, a tetőszerkezet bírja a többletterhet. Ahol a kétlépcsős azonosítás be van kapcsolva, a rendszer belépéskor kódot kér.

Nem EARS — és miért baj

„A ház legyen meleg, és ne ázzon be."

  • Nincs kiváltó ok — mikor kell teljesülnie?
  • Nincs mérce — mi a „meleg"? Hány fok, milyen hidegben?
  • Nem lehet eldönteni, hogy kész van-e → nem lehet próba belőle → a brigád (és az AI) azt hiszi, kész.

EARS-re fordítva

E1 Amikor kint −15 °C van, a fűtés a lakószobákban legalább 21 °C-ot tart. X1 Ha a talajvíz a pinceszint fölé emelkedik, akkor a pince falai és padlója szárazak maradnak.

  • Egy kikötés = egy ellenőrizhető állítás.
  • Van azonosítója → hivatkozható a tervből, az ütemtervből, a próbából és a naplóból — a szoftverben a designból, a taskból, a tesztből és a commitból.

Az EARS-kikötés a szerződés szövege. A BA írja, a fejlesztő olvassa, az AI implementálja, a teszt pedig bizonyítja. Egy jó EARS-kikötésből a következő dia szerint gyakorlatilag magától lesz kód.

A napi munkamenet — lépésről lépésre

Egy követelménytől az átvett funkcióig — nyolc lépés, egy valódi példán

A példa végig ugyanaz, a Vishy-házon: „Télen ne fázzunk." — ebből lesz az E1 kikötés (az EARS-diáról), a próba, majd a kivitelezés. Minden sor alatt kis betűvel: mi ennek a megfelelője a szoftverben. A lépések a lényeg, nem a példa.

# Lépés A Vishy-házon — és a szoftverben Ki
1 Szándék egy mondat A család: „Télen ne fázzunk." Egy mondat, nem tervrajz — és még nem eldönthető. a megrendelő egy mondata a brief.md-ben. ember
2 EARS-kikötés requirements.md E1 Amikor kint −15 °C van, a fűtés a lakószobákban legalább 21 °C-ot tart. — az építész (és az AI) javasolja a megfogalmazást, a család elfogadja vagy javítja. azonosítós, számon kérhető mondat, amire a teszt és a commit hivatkozik. ember + AI
3 Terv design.md Hőszükséglet-számítás: mekkora hőszivattyú, padlófűtés vagy radiátor, milyen szigetelés (a falra ≤ 0,24 W/m²K). Itt kell vitatkozni — a hőszivattyú méretéről most, nem a beépítés után. a valódi mérnöki döntés szövegben születik, nem a kódban. ember + AI
4 Feladatok tasks.md Ütemterv + anyaglista: szigetelés → csövezés → esztrich → hőszivattyú beüzemelése. Minden tétel visszahivatkozik E1-re. az AI bontja feladatokra; mindegyik a kikötésre mutat. AI
5 Bukó teszt RED tests.md · *_test.go A mérce előbb van, mint a fal: nyomáspróba a csöveken az esztrich előtt, és előre rögzítve, hogyan mérik a 21 °C-ot hideg napon. A próbát fűtés nélkül is lefuttatják — és piros. Ha így is „átmenne", a mérés rossz, nem a ház jó. itt lesz piros: a teszt E1-re hivatkozik, a kód előtt commitolva, és a futtatás bukik — ez bizonyítja, hogy tényleg mér valamit (TdD). ember + AI
6 Megvalósítás RED → GREEN A brigád a terv szerint szerel — nem cseréli olcsóbb hőszivattyúra, és nem dönti el útközben, hogy „inkább radiátor lesz". az AI addig ír, amíg ugyanaz a teszt zöld nem lesz — a tesztet nem írja át, hogy átmenjen. AI
7 Verifikáció gép + ember A mérések jegyzőkönyve (nyomáspróba, beszabályozás) — aztán a műszaki ellenőr összeveti a tervvel: „jól építettük meg?" build · tesztek · biztonsági audit gépen, aztán az ember elolvassa a diffet — nem gyengült-e a teszt? AI + ember
8 Validáció az átvétel Az első hideg hét után a család: „meleg van ott, ahol élünk?" — a fürdőben is? Más kérdés, mint az ellenőré. Ha igen, az átvétel az audit.md-be kerül (az E1 [x] már a verifikációnál lett az); ha nem, új szándék. a státusz a spec-mappában változik (requirements + audit), nem egy jegykezelőben. ember (QA)

Ami itt új: az 1–4. lépés szövegben zajlik, és ott dől el minden. Mire a kódig érünk, a nehéz kérdéseket már megválaszoltuk — a kód már csak következmény. Ezért tud az AI gyors lenni anélkül, hogy a kontroll elveszne.

A leggyakoribb kezdő hiba: a 2–3. lépés átugrása („majd megbeszéljük menet közben"). Ilyenkor az AI kitalálja a hiányzó döntést — magabiztosan, és általában rosszul. Az üres spec nem semleges: fel van töltve az AI találgatásaival.

Új elem — TdD

TdD — a teszt az EARS-kikötés gépi fele

A teszt-vezérelt fejlesztés nem új (Kent Beck, 2002) — de LLM mellett más a szerepe. Régen a fejlesztő fegyelmét pótolta. Most azt a kérdést válaszolja meg, amit egy magabiztos géptől másképp nem lehet: „tényleg kész van, vagy csak annak hangzik?"

  1. EARS-kikötés

    01 — az eldönthető állítás (ember + AI)

  2. Bukó teszt

    02 · RED — a kikötés kódra fordítva — és commitolva (ember + AI)

  3. A legkisebb kód

    03 · GREEN — ami zöldre viszi (AI)

  4. Refaktor

    04 — a zöld végig zöld marad (AI)

  5. Review

    05 — az ember a tesztet is olvassa (ember)

Az AI nem tud blöffölni

A „kész vagyok" egy nyelvi modelltől nem bizonyíték — a magabiztos hang ingyen van. A zöld tesztfutás viszont tény. A teszt az egyetlen visszajelzés, amit az AI nem tud meggyőzően előadni. Ha a tesztet is az AI vázolja, a review a tesztet olvassa először — ez a tartóelem.

A gép önmagát javítja

A piros teszt gépi hibaüzenet, amit az agent visszaolvas és amiből tovább dolgozik. Teszt nélkül minden kör emberi visszajelzést igényel — a tesztsor az, ami a felügyelet nélküli ciklust egyáltalán lehetővé teszi.

A regresszió ellen

Ha az AI naponta több száz sort ír, a korábban megoldott problémák visszatérése a fő kockázat. Minden teljesített EARS-kikötés teszt formájában bekerít egy döntést: onnantól a gép őrzi, nem az emlékezet.

Saját esetünk — 27 zöld, de üres futás

Az ops_dep_extract (a #s10 élő pipeline-ja) egy elírt tenant-hivatkozás miatt 27 futáson át zöld volt — és egyetlen függőségi élt sem írt. A „sikeres" futás csak annyit jelentett, hogy nem volt hibaüzenet. Két hétig (2026-08-28-ig) senki nem vette észre.

EARS: „Amikor az éjszakai futás lefut, a rendszernek a friss pillanatképekből legalább egy függőségi élt kell írnia."

RED-teszt: futtasd a lépést egy tesztadatbázison → élek száma ≥ 1?

→ az első éjszakán piros lett volna.

A TdD-nek van egy új veszélye AI mellett: ha a teszt a kód után születik, az agent hajlamos olyan tesztet írni, amit a saját kódja biztosan teljesít — vagy a bukó tesztet gyengíteni. Ezért két vasszabály: (1) a teszt előbb kerül commitba, mint az implementáció; (2) a review a tesztet is nézi, nem csak a kódot. A gyengített teszt zöld — és hazudik.

Vissza a házhoz (2. dia): a próbakockát a betonozás közben veszik — nem utólag választják ki, melyik falat mérjék meg. Ha a mérce a fal után születik, ahhoz igazítjuk, ami éppen kijött, és már nem mérce, hanem utólagos igazolás. A teszt pontosan ugyanez: ezért kerül commitba az implementáció előtt.

Így zárul a lánc: az EARS-kikötés mondja meg, mit jelent a „kész" — a teszt bizonyítja, hogy az — az ember pedig eldönti, hogy ez volt-e a cél. Spec, teszt és kód ugyanannak az állításnak három alakja.

Az eszközök · a négy motorinfra-forge · kihagyható

Négy motor, nem egy ötödik — katalógus-vezérelt eszközök

Négy generikus motor visz mindent — ötödiket nem írunk: ha új képesség kell, a motort kívülről bővítjük (adapter · feature · katalógus-bejegyzés), sosem forkoljuk újra (A4).

pipeline-forge

A folyamat-motor: minden orchestráció .md pipeline. Bővítés ← új adapter, nem új Go-folyamat.

entity-forge

Entitás-specből DDL + tárolt funkció + CRUD. Bővítés ← új feature, az engine generál.

GoBI

Riportok, KPI-k Markdown-katalógusban (bi/**/*.md, YAML-blokkokkal). Bővítés ← katalógus-bejegyzés: új riport = adatváltozás, nem Go-kód.

datagrid

Oszlopok, szűrők, pivotok katalógusból; téma --dg-* tokennel. Bővítés ← katalógus-bejegyzés.

A motorok alatt — a foundation réteg: keret · könyvtár · minta · példa

A foundation-* repók nem csak könyvtárak — négyféle dolgot adnak: ① keret, amibe beépülsz (pl. az app-shell) · ② könyvtár, amit behivatkozol · ③ minta, amit követsz · ④ példa, amiből kiindulsz. Hogy egy feladatnál melyiket és hogyan használja, azt az AI választja (A11: a konstrukció az AI-é).

foundation-go

Logger, dbpool, http-middleware, auth-trió, sidebar. A minta: egy új szolgáltatás nem talál ki saját naplózást — ezt követi.

foundation-pg

Dinamikus SQL annotált kommentekkel, nem string-fűzéssel. A minta: a feltételes blokk a SQL-ben látszik, nem Go-ban rejtőzik.

foundation-ui

Az app-shell: fejléc, sidebar, téma, login. A minta: minden felület ugyanúgy néz ki, mert ugyanonnan származik.

foundation-wiki

Nem könyvtár, hanem hordozható módszer: a spec maga a definíció. Ugyanarra a módszerre több termék is épülhet — a spec viszi át, nem a kód.

A választás szabad, a forrás nem. A keretbe beépülsz, a könyvtárat behivatkozod, a mintát követed, a példából kiindulsz — hogy melyik illik a feladathoz, azt az AI dönti el. De a foundationből választ: ha ott van rá kanonikus megoldás, nem talál ki újat. Enélkül 16 repóban 16-féle naplózás születne, mind „helyes", mind más. A foundation-* így az AI tudástára: nem kész kódot ad, hanem választékot — és a döntést, amit nem kell újra meghozni.

A közös elv: adat a katalógusban, viselkedés a motorban — a kettő határa a review-felület.

A házon: Szabványos, előre gyártott elemek — zsalu, ajtótok, födémpanel: nem minden háznál találják fel újra. · SdD-ben: A négy motor és a foundation: a spec ezekből választ, ötödiket nem ír (A4).

AI-infrastruktúrainfra-forge · kihagyható

Mi a RAG — és miért kell a fejlesztéshez is?

A teljes tudás, amire a fejlesztés épül — mérve a GitLab-projekteken (2026-09-22)

Réteg Mennyi Mikor kerül a kontextusba
Axiómák (L1) 11 axióma, 1 fájl (~9 KB) mindig — minden session elején, kötelezően
Platform-szabályok (L2) 14 fájl (~255 KB) igény szerint — a réteg kapuja (HARD GATE) húzza be az első szerkesztés előtt
Projekt-szabályok (L3) 7 projekt-CLAUDE.md + 15 útvonalhoz kötött szabály a projekt CLAUDE.md-je session startkor; a szabály, amikor egy illeszkedő fájlhoz nyúl
Specek 117 spec-mappa (brief → EARS → design → tasks → tests → audit) csak az éppen épülő feature-é
Minden dokumentum ~1 800 Markdown-fájl, ~8 MB, 9 GitLab-repóban (ebből 367 pipeline) RAG-gel keresve, aztán egy fájl pontos olvasása
Külső források Jira, Confluence, szabványok (IEEE 1016, EARS), memória-jegyzetek eszközön (MCP) át, amikor a feladat kéri — soha nem „minden, előre"

A context window néhány száz oldal; a korpusz ~8 MB — milliós nagyságrendű token, a context window sokszorosa. Ezért a kérdés nem az, hogy betöltjük-e a tudást, hanem hogy mit, mikor és milyen sorrendben: az alaptörvény mindig, a többi csak akkor, amikor a feladat eléri.

Túl sok a szabály, doc, spec

Probléma — véges a kontextus

  • A platform szabályai, doc-jai és spec-jei nem férnek egyszerre a context window-ba (lásd 5. dia).
  • Ha mindent bezúdítanánk, az LLM elveszne a zajban — vagy hallucinálna.

Csak a releváns kontextust keresd elő

Megoldás — RAG

  • A kérdésre előbb a releváns chunkokat keresi vissza — nem az egész repót.
  • Csak azt tölti be, ami a feladathoz kell — forrásmegjelöléssel.
  1. Kérdés

    1 — magyarul

  2. Beágyazás

    2 — embedding (vektor)

  3. Vektoros keresés

    3 — pgvector · lokális rag_db

  4. Top találatok

    4 — releváns chunkok

  5. Olvasás

    5 — a megjelölt fájl

Fejlesztői RAG — lokális rag_db

A repó a kollekció: minden platform-repo egy gyűjtemény. Claude Code ebből keresi vissza a releváns szabályt / doc-ot / spec-et — nem a teljes fát olvassa. Ez a dev-láb.

Termék-RAG — a termék saját éles adatbázisában

Nincs központi RAG-adatbázis: minden termék a saját éles DB-jében tartja a beágyazásait, tenantonként külön adatbázisban. A tudás ott van, ahol az adat — és a jogosultság is ott érvényesül. A dev-láb és a termék-láb sosem keveredik.

Így használja Claude — fejlesztés közben: /rag-search "hol oldjuk fel a vault-ot?" → top találatok (collection + source_file) → és csak azt az egy fájlt nyitja meg (Read). Tájékozódás RAG-gel, pontos olvasás utána — a véges kontextust a releváns tudás tölti, nem a teljes repó.

A házon: A tervtár: a brigád nem visz mindent a zsebében, de tudja, hol keresse. · SdD-ben: RAG: a teljes tudásból az adott SdD-lépéshez szükséges rész kerül a kontextusba.

AI-infrastruktúra · a visszakeresés rétegeiinfra-forge · kihagyható

Vektor → él → property-graph — a visszakeresés rétegei

A lapos vektor-keresés a „miről szól?" kérdésre jó: a szöveg → sűrű jelentés-vektor, a kérdéshez cosine-közeli chunkok jönnek vissza — nem kulcsszó, hanem jelentés („Dell laptop" megtalálja a „hordozható számítógép"-et is). De a „mi mire hivatkozik?", „ki ért hozzá?" kérdés kapcsolat — azt gráffal kérdezzük.

pgvector — csomópontok

Ma · él

A chunkokat (csomópontokat) ágyazzuk be a szemantikus kereséshez — ez a jelentés-réteg.

Élek — külön gráf-réteg

Ma · él

Az éleket (X hivatkozik Y-ra; ugyanaz a személy két forrásban) külön gráf-rétegben tartjuk — fejlesztésben dev.doc_edges, az ügyfél-RAG-ban rag.cross_refs. A „mi fogyasztja a datagrid-et?" gráf-lekérdezés, nem vektor-keresés.

Natív property-graph (SQL/PGQ)

Folyamatban · PostgreSQL 19

CREATE PROPERTY GRAPH a meglévő tábláink fölé — nincs új tár —, lekérdezés GRAPH_TABLE(… MATCH …) mintával, SQL:2023. A cross_refs élek gráfra költöztetése folyamatban.

PostgreSQL 19 gráf — hol tartunk (2026-09-22)

Hol Mi fut Eredmény
éles szerver · 19/infraforge, csak loopback az infra-forge függőségi gráfja (infra_graph_db) natív property-graphban élesben 2026-09-15 óta — beta3, tudatosan vállalt kockázat
éles szerver · 19/search, csak loopback az ügyfél-RAG keresőrétege side-carban, éjszakai szinkronnal (439 685 él) ugyanazon a vason: PG19 15–40%-kal gyorsabb; a hangolt gráf-lekérdezés döntetlen (34,8 vs 32,2 ms) → az éles keresés a hordozható formán marad
fejlesztői gép · 19 beta3 valós wiki-gráf másolata (7 347 él) 1–2 ugrás azonos a mai CTE-vel; 2-ugrásos lánc gyorsabb (0,29 vs 0,42 ms); irányítatlan él lassú (18–115×), nincs változó hosszú út
éles szerver · fő RAG-klaszter egy tenant éles DB-je — 461 752 cross_refs él, PG 18.4 — az iiriki élesben használja: /iier2/value-graph élesben, hordozható SQL-lel: minden találatnál ott a gráf-útvonal (SharePoint-hely → mappa → dokumentum → tábla); egy kapcsolóval ugyanez a keresés a 19/search side-caron SQL/PGQ-val fut, a két idő egymás mellett. Még hátra: a klaszter frissítése a 19 GA után; az alap PG ≥ 16 marad, a natív gráf-lekérdezés csak 19+ szerveren

Hogyan használjuk fejlesztés közben — egy kérdés útja

  1. Tájékozódás

    1 · VEKTOR — /rag-search type:rules … — a releváns chunkok, forrásfájllal

  2. Kapcsolatok

    2 · ÉL — /rag-connections — mi hivatkozik rá, mi épül rá (1–2 ugrás)

  3. Olvasás

    3 · PONTOSAN — csak a megjelölt fájl(ok) — Read

  4. Újra-beágyazás

    4 · FRISSÍTÉS — /rag-embed — csak ami változott (content_hash)

A fejlesztő kérdése Réteg · eszköz Miért ez
„Hol van szabályozva, hogy a DB-ben próbáljuk először?" vektor · /rag-search jelentés szerint talál — akkor is, ha a szabály más szavakkal mondja
„Ha módosítom az A5 axiómát, mi hivatkozik még rá?" él · /rag-connections kapcsolat, nem hasonlóság — ez a módosítás hatósugara, mielőtt hozzányúlunk
„Pontosan mit mond a 3. bekezdés?" fájl · Read a RAG tájékozódásra való; a döntés a pontos szövegen születik
„Most írtam át a specet — a következő session már ezt lássa." frissítés · /rag-embed a változatlan chunk kimarad; session-startkor óránként magától is lefut

Két külön RAG — sosem keveredik

Fejlesztői RAG Ügyfél-RAG (a termék)
Mit tárol? a saját kódunk, szabályaink, specjeink, dokumentumaink — repónként egy gyűjtemény az ügyfél üzleti dokumentumai (Jira, Confluence, …) — tenantonként elkülönítve
Hol él? lokális fejlesztői DB, a fejlesztő gépén a termék saját éles DB-je tenantonként — házon belüli szerveren
Embedding két vektor chunkonként: irodában snowflake-arctic-embed2 a belső GPU-n, irodán kívül felhő-modell — csak a saját fejlesztői anyagunkra snowflake-arctic-embed2 (1024 dim, erős magyar, az ékezet megmarad), csak házon belüli GPU-n
A modell neve a környezet választja (elérhetőség szerint), nem a kód egyetlen DB-regiszter dönti el (rag.collection_model) — sosem hardcode (A1 + A3)
Élek dev.doc_edges — dokumentum- és kódkapcsolatok rag.cross_refs — személyek, hivatkozások, tartalmazás (hely → mappa → dokumentum → tábla)
Ki használja? a fejlesztő és Claude Code (/rag-* parancsok) a végfelhasználó a termék chatjén / MCP-n át, jogosultság szerint (RLS)
Frissesség /rag-embed igény szerint + óránként session-startkor éjszakai pipeline; teljesség-teszt: embedding > 0, rag.cross_refs > 0, < 30 óra

A határ: ügyféladat soha nem kerül felhő-embeddingbe és nem kerül a fejlesztői RAG-ba; a fejlesztői eszközt soha nem irányítjuk ügyfél-adatbázisra. Két külön tár, két külön cél — ugyanaz a technika.

A házon: A tervtár mutatója: nem csak mi van benne, hanem mi mire hivatkozik (statika → alaprajz → anyaglista). · SdD-ben: Vektor = jelentés, él = kapcsolat — melyik spec mire épül, mit érint egy változás.

AI-infrastruktúra · a visszakeresés rétegeiinfra-forge · kihagyható

Tartalom és kontextus — mindkettő kell a jó RAG-sorrendhez

A vektor-adatbázis a tartalom-bázis: mit mond egy szövegrészlet. Az él-gráf a kontextus-bázis: hogyan viszonyul a többihez — mi hivatkozik rá, mi váltotta le, melyik szabály erősebb. Helyes rangsorolt találathoz mindkettő kell.

Tartalom-bázis — vektor

Ma · él

Releváns-e? A kérdéshez cosine-közeli chunkok, jelentés szerint. Magától nem látja, hogy a találat elavult, felülírt, vagy egy másik spec része.

Kontextus-bázis — él-gráf

Ma · él (dev.doc_edges · rag.cross_refs)

Mi a súlya? Hivatkozás, tartalmazás, leváltás, szerző. Magától nem tudja, miről szól a kérdés — nincs belépési pontja, amíg a vektor nem ad magot.

Egy rangsorolt találat útja

  1. Magok

    VEKTOR — a kérdéshez legközelebbi chunkok, hasonlósági pontszámmal

  2. Szomszédok

    ÉL — a magok 1 ugrásnyi szomszédai: a másképp megfogalmazott, de kapcsolódó anyag

  3. Szűrés

    ÉL — a leváltott / elavult csomópont kiesik; az alacsonyabb rendű forrás hátrébb kerül

  4. Fúzió

    TERV — hasonlóság + tekintély + összekötöttség, súlyok konfigból (A3)

  5. Rangsor

    TERV — a végső sorrend; az újrarangsorolás (rerank) ma ki van kapcsolva

▸ Mit rontana el egyedül a vektor, illetve az él?
Jel Honnan Egyedül mit rontana el
Relevancia — mennyire felel a kérdésre tartalom · vektor a leváltott, majdnem-azonos változat ugyanolyan előkelő helyre kerül
Állás — friss, mérvadó, a találatok közelében van kontextus · él-gráf belépési pont nélkül nem tud mit rangsorolni; a nem összekötött anyag kimarad
Együtt fúzió a közepesen hasonló, de három erős találattal összekötött csomópont jogosan előzi a magányos, magasabb pontszámút
▸ Hasonlat: a mechanikus óra

Tartalom — az alkatrészek

Egy szép mechanikus óra fogaskerékből, rugóból, tengelyből és mutatóból áll. Szétszedve csak a tartalom marad: minden alkatrész megvan, de az óra időt nem mutat.

Kontextus — az összeépítés

Az összeépítés maga a kontextus: melyik fogaskerék melyiket hajtja, mi mihez illeszkedik. Ez adja vissza a funkciót — ezért működik az óra, és teszi a dolgát.

RAG-ban ugyanez: a vektor-adatbázis az alkatrészek sokasága — megtalálja a hasonlókat, de önmagában nem ad rendezett választ. Az él-gráf az összeszerelés: megmondja, mi hogyan kapcsolódik, mi a friss, mi hajt mit. Alkatrész + összeépítés = rangsorolt, működő válasz.

Ma vs terv. A fejlesztői RAG-ban a vektor és az él két külön lépés (/rag-search, majd /rag-connections), amit az ember és Claude kapcsol össze. A beépített fúziós rangsor terv — a súlyok a konfigban lesznek, és csak akkor kerül élesbe, ha a kiértékelés javulást mutat. A „kontextus" szó két dolgot jelent: itt a kapcsolati kontextus; az LLM munkakontextusa a végeredmény.

A házon: A tervtár és a mutató együtt: a rajz megmondja, mi van a lapon; a mutató, hogy melyik érvényes, és mi mire épül. · SdD-ben: tartalom = mit mond a spec, kontextus = mi hivatkozik rá és mi váltotta le.

Esettanulmány · a Vishy-ház

„Ne ázzon be a pince" — egy igény végig a láncon

A 2. dián azt láttuk, ki mit csinál. Most egyetlen igényt követünk végig a Vishy család házán: a család mondatától a műszaki ellenőrig — és megnézzük, hol dönt benne az ember.

Az igénynek két lába van — más kérdésre válaszolnak

Felmérés — kívülről

„Mi van a telken?" — mielőtt bárki falat rajzolna.

  • Talajmechanikai szakvélemény: próbafúrás — milyen a talaj, és milyen magasan áll a talajvíz.
  • Geodéziai felmérés: a telek lejtése, merre folyik le az esővíz.
  • Egy tégla sem mozdul hozzá — ez csak olvasás, a terv bemenete.

Nálunk (SdD): a brief.md és a kutatás — a tények, amire a spec épül (infra-forge-ban: a flotta-gyűjtés, csak olvas). Ebből születik a BRD (mi a cél, mi a korlát) és az SDD (hogyan).

Kivitelezés — belülről

„Mi kerül a falba?" — a terv szerint, nem improvizálva.

  • Szigetelés a pincefalon és a padló alatt, szivárgó (drén) a fal tövében.
  • Vízzáró beton — a betonosztályt a terv írja elő, nem a brigád választja.
  • A brigád maga is ellenőriz (vízszint, kötés) — de ez még nem a kapu.

Nálunk (SdD): a kód — az AI az SDD szerint épít, nem improvizál; a betonosztály = a SDD-ben rögzített döntés. A brigád saját mérése = a gépi teszt (TdD) — még nem az emberi kapu.

A sorrend nem esetleges: nem tervezhetsz alapot, amíg nem tudod, mi van a talajban. A felmérés mondja meg, mire kell építeni; a kivitelezés azt, hogyan. A kettőt más szakember végzi, és külön is tévedhet — ezért kerül mindkettő írásban a tervre, nem szóban a helyszínre.

140M Ft

keret — a család szándéka

3

hálószoba + pince

C25/30

betonosztály — a mérce előre rögzítve

28 nap

kötés, aztán törik a próbakocka

A kikötés — EARS-mondat (a BRD-ben)

  • Szándék (a család): „Ne ázzon be a pince." — homályos, nem számon kérhető.
  • Kikötés (az építész): Ha a talajvíz a pinceszint fölé emelkedik, akkor a pince falai és padlója szárazak maradnak.
  • Ebből a mondatból már mérés lesz — nem vita arról, mit értett a család.

A teszt — a fal ELŐTT

  • A terv előre rögzíti: nyomáspróba a szigetelésen, mielőtt visszatöltik a földet.
  • A betonozáskor próbakocka — nem utólag választjuk ki, melyik falat mérjük meg (TdD).
  • Miért előre? A visszatöltött föld alatt a szigetelés már nem látható — utólag csak bontással ellenőrizhető.

Verifikáció — „jól építettük meg?"

A műszaki ellenőr a visszatöltés előtt összeveti a szigetelést a tervvel — és a nyomáspróba jegyzőkönyvével.

Validáció — „a jót építettük meg?"

Az első nagy eső után a család lemegy a pincébe: az lett-e, amire szükségük volt? Ha nem — új szándék.

Esettanulmány · az emberi döntések

Négy döntés, ami megformálta a házat

A terv nem a semmiből jött: emberi döntésekből lett EARS-követelmény, majd fal. Négy kérdés, négy döntés — mindegyik egy-egy ellenőrizhető kikötés.

Legyen-e pince, ha magas a talajvíz?

Az építész két utat mutat (vízzáró „fehér kád" pince vagy pince nélküli lemezalap, költséggel) — a család dönt. Javaslat, aztán az ember irányít (A11).

Mikor rögzítjük a mércét?

A betonozás ELŐTT — a betonosztály és a mintavétel a terven van. Az utólag kiválasztott mérés nem mér semmit (TdD).

Mi van, ha egy szállító késik?

Az ütemterv a független munkát előrehozza — egy késés nem állítja le az egész építkezést, és nem ír át semmit a terven.

Legyen inkább két szint?

Ezt a brigád nem döntheti el. Új szándék → vissza az építészhez, tervmódosításként. A scope a terven van (A10).

Minden döntés egy ember döntése volt — és EARS-követelményként került a tervre, mielőtt egy tégla a helyére került volna. Ugyanez a szoftverben: a projekt gazdája rögzíti, az AI betartja.

A fegyelmező keret

Claude Code mint fejlesztőtárs — a fegyelmező keret

Az építkezésnek is van kerete, ami nem a brigád jóindulatán múlik. Claude Code-nál ugyanezek a darabok vannak — gépiesen.

Mechanizmus Mit csinál A házon
Szabálybetöltés A CLAUDE.md + az axiómák minden session elején a kontextusba kerülnek; a réteg szabályai akkor, amikor a munka eléri — ugyanaz a szerződés, mint az új kollégának. Az építési szabályzat és a tervrajz reggel ott van a helyszínen — nem emlékezetből dolgoznak.
Hooks A szabály-kapu blokkolja a szerkesztést, amíg a réteg szabályfájlját nem olvasta el; a pre-push audit secreteket és szabálysértést szűr. A main-re szerkesztésnél csak figyelmeztet — az szándékos. A deploy-hook környezetenként más git-feltételt kér (lásd lent). Betonozás előtti átvétel: amíg az ellenőr nem írta alá a vasszerelést, a mixer nem önt — nem kérés, hanem megállás.
Skills Ismétlődő műveletek (/vault, /regen-html, a deploy-parancsok) dokumentált, paraméterezett eljárásként. Technológiai utasítás: a szigetelés, a betonozás leírt, bevált menete — nem minden brigád találja ki újra.
MCP szerverek Az AI strukturált eszközökön át kérdez (pl. a flotta-keresés, KPI-k) — nem nyers SQL-lel. Mérőműszerek: lézer, vízmérték, nedvességmérő — mérnek, nem szemre becsülnek.
Memory Projektszintű tanulságok session-ök között megmaradnak. A brigádvezető jegyzetei és a napló: a tegnapi tanulság holnap is megvan.

A kapu nem kérés, hanem mechanikus erő: ahogy a vasszerelés átvétele nélkül nem öntenek betont, úgy a szabály-kapu blokkolja a szerkesztést, amíg az AI el nem olvasta az adott réteg szabályait — ebben a munkamenetben is többször megállított minket. Nem győzködni kell az AI-t: a keret nem engedi.

Az AI nem „szabad kezet" kap, hanem keretrendszert — ahogy a brigád sem, hanem tervet, szabályzatot és ellenőrt.

▸ Deploy-hookok: dev · test · prod
Környezet Mit kér a deploy-hook a gittől A házon
dev Nincs git-szabály — bármelyik ágról, akár commit nélkül is mehet. Műhelyasztal: itt próbálgatnak, még nem a telken.
test Feature ág a remote-on — az ágnak push-olva kell lennie. Próbafelvonulás a telken: csak a leadott, látható terv szerint.
prod Csak a main/master (origin) ágról, vagy verziózott release-ből. Használatbavétel: csak az átvett, jóváhagyott állapot kaphat engedélyt.

Minél közelebb az éleshez, annál szigorúbb a git-feltétel — és a hook gépiesen érvényesíti, nem emlékezetből. Éles deploy ágról, ami nincs a remote-on beolvasztva, nem indulhat.

▸ Mit tesz a hook: blokkol · figyelmeztet · tájékoztat
Hook Mikor fut Hatása A házon
Szabály-kapu szerkesztés előtt blokkol — amíg a réteg szabályfájlját el nem olvasta az ellenőr nem írta alá a vasszerelést, nem öntenek
Pre-push audit push előtt blokkol — secretre és szabálysértésre átadás előtti bejárás: hibával nem adják át
Deploy-hook deploy előtt blokkol — a környezet git-feltétele szerint használatbavétel: csak az átvett állapotra
main-szerkesztés szerkesztéskor figyelmeztet — szándékosan nem tilt a „Vigyázat, itt a napló!" tábla — a direkt út megengedett
Session-start a munka elején tájékoztat — nyitott feladatok, lejáró határidők reggeli eligazítás a helyszínen

Két kulcs: az AI-ügynök a saját jogosultságát sosem emelheti, és titkot sosem oldhat fel — az emberi kulcs. Ahogy a vasszerelést sem a brigád írja alá magának.

A bizonyíték · a Vishy-ház

Az építési napló — a bizonyíték nem emlékezet, hanem bejegyzés

A Vishy-ház építésén építési napló fut: minden nap bejegyzés arról, ki mit csinált, milyen anyagból, ki ellenőrizte. Ha a beköltözés után vita van — „ez nem így volt megbeszélve" —, nem az emlékezet és nem a becslés dönt, hanem a napló.

Minden lépés egy bejegyzés

Dátum, ki, mit, miért — a betonozás napja, a próbakocka száma, a műszaki ellenőr aláírása.

Nálunk: minden változás egy commit — szerző, dátum, üzenet.

Csendben nem írható át

A tegnapi bejegyzést nem javítják ki csendben — új bejegyzés mondja meg, mi változott.

Nálunk: a main védett ág — nincs force-push, a beolvasztás MR-en át megy, a javítás is új commit. A history technikailag átírható; nem fizika védi, hanem szabály és jogosultság — vagyis ez is egy kapu.

Vitában ez dönt

„Mennyi ideig tartott?" „Ki döntött a pincéről?" — a napló megmondja. A kivitelező becslése nem bizonyíték.

Nálunk: a lenti számok a git logból jönnek — bárki újraszámolhatja.

Először a ház: mit csinál a kész alkalmazás · ver=0.1.390 óta élesben

~500

Linux VM a nyilvántartásban — ez a flotta, amit kezel

6 óra

ennyi időnként fut le magától a teljes flotta-ciklus

27 nap

az első mondattól az üzemelő alkalmazásig

1

architekt/BA/QA + AI

És csak azután a napló: 19 aktív fejlesztési nap, 390 commit, ~20 300 sor Go mellett ~26 500 sor Markdown — több terv, mint fal: a tervrajz nem lassította az építkezést, ez tette lehetővé. De ezek nem a mérce: a sor és a commit a felrakott tégla, nem a lakható ház — a mérce az átvett követelmény (lásd a vezetői tanulságokat). A „hagyományos" ellenpont (nagyságrendileg 12–27 emberhónap) ráadásul becslés, dokumentált módszertan nélkül — nagyságrend, nem bizonyíték.

És ma (2026-09-24, ugyanabból a git logból): v0.8.951 élesben · 2 107 commit · 81 aktív fejlesztési nap · ~35 900 sor Go + ~23 600 sor Go-teszt mellett ~86 800 sor Markdown · 47 spec-mappa. Az arány nem romlott: még mindig több a terv, mint a fal. A TdD a naplóból is látszik: a 2026-09-09-i mandátum óta született 16 új spec-mappa mind az első napon tests.md-vel jött (24 a 47-ből; a többi a mandátum előtti, grandfatherelt).

Miért elég egy architekt/BA/QA? Ahogy a háznál sem a téglarakás a szűk keresztmetszet, hanem a döntés, az ellenőrzés és az átvétel — és azt ember végzi: megrendelő (szándék) → BA (BRD, EARS) → architekt (SDD) → AI (teszt + kód) → architekt (review · verifikáció) → megrendelő = QA (validáció, átvétel). A téglát az AI rakja — a három emberi kalap egy emberen van, de a lánc sorrendje és a kapuk nem tűnnek el.

A házon: Az építési napló és a próbakocka jegyzőkönyve. · SdD-ben: A git log a napló — minden commit egy bejegyzés; a TdD-teszt futása a próbakocka jegyzőkönyve.

A kész ház · az átadott alkalmazásinfra-forge · kihagyható

És mi épült? — az alkalmazás, amit az IT-csoport használ

A háznál sem a tégla a termék, és nem is a tervrajz: a ház, amiben laknak. Eddig a módszert néztük — itt az, ami belőle lett: egy üzemelő alkalmazás, amit reggel megnyit valaki, és megcsinálja vele a napi munkáját. A kód ennek csak az anyaga.

Az alapfunkciók

Látja a flottát

Kereshető nyilvántartás a ~500 gépről: OS, csomagok, felhasználók, szolgáltatások, hálózat — és a változás története (SCD2), nem csak a mai állapot.

Magától frissül

6 óránként lefut a flotta-ciklus: SSH-ping → gyűjtés → mentés. Elérhetetlen gép nem állítja meg — naplózza és megy tovább.

Kérdezni lehet tőle

„Hol fut még EOL disztribúció?", „melyik gépeken ugyanaz a jelszó-hash?" — az AI a saját eszközein át kérdez, nem nyers SQL-lel.

Új gépet igényelni

A VM-igény űrlapon indul, a nyilvántartásba kerül, onnan a GitLab CI hozza létre — az alkalmazás a rekordot vezeti, nem ő provisionál.

Ez az alap. Azóta ugyanabból a láncból épült tovább: CVE- és NIS2-riportok · titok-keresés a flottán · függőségi gráf · IPAM és IT-szolgáltatás-katalógus · VM-igénylés OpenTofu-val · és a Timi IT-portál: csapat (távollét, ügyelet, standup), Jira-munkanapló, tudástár — egy felületen, AI-val a bejáratnál.

Egy hétfő reggel — ugyanaz a lánc, csak a ház felől nézve

  1. Belép

    1 — céges AD-fiókkal — a jogosultsága dönti el, mit lát

  2. Rákeres

    2 — „CentOS 6, éles" — a válasz a hajnali gyűjtésből van

  3. Megkérdezi

    3 — az AI-tól, mi függ attól a géptől — leállítás-tervezéshez

  4. Ha beavatkozna

    4 · KAPU — az érzékeny érték feltárása és minden változtatás emberi kapun megy (A6)

Ami a felhasználó felé nem látszik, mégis ez tartja: minden érzékeny érték már tárolás előtt álnevesítve van ({{type:hash}}), az eredeti külön, titkosítva; az AI az álnevesített oldalt olvassa. A validáció kérdése ezen a dián dől el: „ezt akartuk?" — és a válasz nem a commitok száma, hanem hogy a hétfő reggel tényleg gyorsabb lett-e.

A házon: A kész, lakott ház — és a család már a következő bővítést tervezi. · SdD-ben: 09 Használat → új szándék: a SdD lánc újraindul.

Az emberi kontroll · a Vishy-ház

Három kapu a házon — és a két módszertani kapu

A ház építésénél is van három pont, ahol a brigád nem mehet tovább egyedül — nem bizalmatlanságból, hanem mert ott a döntés következménye visszafordíthatatlan. A szoftverben ugyanez a három pont van.

Építési engedély

Kapu ① · változtatás

Fal áthelyezése, tetőtér-beépítés, új szint — az építész és a hatóság hagyja jóvá, a brigád nem dönthet róla. Az építési naplóba viszont szabadon ír: mérés, észlelés, mi történt ma — az nem változtat a házon.

Nálunk: minden állapotváltoztatás MR-en megy át, ember mergeli; a megfigyelés (napló) kapu nélkül fut.

Kulcs és riasztókód

Kapu ② · érzékeny adat

A kulcsot és a riasztókódot csak megnevezett ember kapja meg, átadás-átvételi jegyzőkönyvvel — és nem „hátha kell alapon". A brigád nem adja át saját magának.

Nálunk: az eredeti érték feltárása szerepkör + napló + korlát mögött; az AI sosem kérheti.

Két aláírás

Kapu ③ · jogosultság

A lakáshitel következő részletét a bank csak mindkét házastárs aláírásával folyósítja. Meghatalmazást senki nem írhat alá saját magának.

Nálunk: admin-jogot csak egy második admin megerősítésével lehet adni; az AI magának soha.

Hol ülnek a kapuk az SdD láncban?

  1. Szándék → spec

    1 — BRD + EARS, SDD — a tervrajz

  2. Bukó teszt

    2 · TdD · RED — a próbakocka — a mérce a fal előtt

  3. Kód

    3 · GREEN — a brigád a terv szerint; ugyanaz a teszt zöldre vált

  4. MR — review, aztán merge

    KAPU ① · VERIFIKÁCIÓ — építési engedély + műszaki ellenőr: ember olvassa a diffet és a tesztet — a terv szerint épült?

  5. Megrendelő = QA

    KAPU · VALIDÁCIÓ — a család: ezt a házat akartuk?

A ② kulcs és a ③ két aláírás nem a lánc egy pontján ül, hanem végig érvényes: üzem közben is, minden lépésnél — ezt a jogosultság és a napló kényszeríti ki, nem a jóindulat.

Verifikáció ≠ validáció. A verifikáció arra felel: jól építettük-e meg? (mechanizmus létezik, a gépi ellenőrzések zöldek, az ember review-zta a diffet). A validáció: a jót építettük-e meg? (a megrendelő fogadja el az eredeti üzleti célra, valós folyamaton — ez a QA kapu). Egyik sem önmagában a „kész".

A házon: a műszaki ellenőr azt nézi, a terv szerint épült-e meg (verifikáció); a család azt, hogy azt a házat kapta-e, amire szüksége volt (validáció). A fenti három kapu az építkezés közben véd — az ① egyben a verifikációs kapu; a validáció a második módszertani kapu, és az dönti el, hogy kész-e. Mindegyiknél ember dönt.

Tanulságok — vezetőknek

Négy döntés, ami a vezetőé — és az első lépés holnap

A módszer nem az AI-ról szól, hanem arról, hová teszed az embereidet. A háznál sem a téglarakó a drága — hanem az építész, aki dönt, és a műszaki ellenőr, aki átveszi.

Hová teszed a kapacitást?

A gépelés már nem szűk keresztmetszet — a review és az átvétel az. Oda kell a szakértő: architekt/BA és QA, nem több kódoló kéz.

A házon: építészből és műszaki ellenőrből nem spórolunk.

Hol van a tudás?

A szabály, a spec és a döntés dokumentum — review-zható, verziózott, visszafordítható. Ha valaki elmegy, a tudás marad.

A házon: a tervrajz és a napló túléli a brigádot.

Mit mérsz?

Nem sorokat és nem commitokat, hanem átvett követelményt — és hogy mennyi idő a szándéktól az átvételig. A gyors, de vissza nem vett munka nem sebesség.

A házon: a lakható, átadott ház számít, nem a felrakott tégla.

Hol a kockázat határa?

A kapuknál: minden változtatás, érzékeny adat és jogosultság ember kezében marad; az AI magának semmit nem nyit ki. A termék adata házon belül marad, a fejlesztés AI-költsége külön keret — két láb, két döntés.

A házon: engedély, kulcs, két aláírás — a kapuk diáján.

Az első lépés holnap: válassz egy kicsi, valódi igényt. Egy oldal brief, néhány EARS-mondat, a teszt előbb (TdD) — és mérd, mennyi idő alatt jut el az átvételig. Nem pilot-program kell, hanem egy végigvitt példa.

Tanulságok — hallgatóknak

Hogyan kezdj AI-fejlesztésbe? — útravaló

  1. Szabályok

    1 — írd le, mit szabad és mit nem — mielőtt promptolnál

  2. Spec, ne kód

    2 — előbb a MIT dokumentumban, aztán a HOGYAN

  3. Kis lépések

    3 — egy változás = egy diff = egy review

  4. Verify

    4 — sose hidd el „kész" fordítás alapján

  5. Kontextus

    5 — amit nem adsz oda, az nem létezik

Amit az iskolában még nem tanítanak

  • A prompt nem varázsige — a kontextus-szerkesztés a szakma
  • Az AI kimenetét olvasni nehezebb, mint kérni — a review-készség felértékelődik
  • A determinizmus tervezhető: spec + codegen = reprodukálható eredmény

A leggyakoribb hibák

  • „Csináld meg" specifikáció nélkül — majd csodálkozás
  • Az AI magabiztos tévedésének elfogadása verifikáció nélkül
  • A szabályok chat-üzenetben tartása dokumentum helyett — a következő session már nem tudja

Egyetlen mondatban: bánj az AI-jal úgy, mint egy nagyon gyors, nagyon felejtős új kollégával — aki látszólag logikus, de magabiztosan téved, és nem alkot új igazságot, csak újrakombinál. Adj neki írott szabályokat, írott specifikációt, és ellenőrizd a munkáját.

A házon: Az első saját házadnál: előbb terv és szabvány, aztán falak — kicsiben, ellenőrizve. · SdD-ben: Szabály → spec → kis lépés → teszt (TdD) → verifikáció.

Köszönjük a figyelmet!

A „köszönjük" többes szám szándékos: ezt a bemutatót ember + AI készítette — a módszertan saját bizonyítéka.

szándék → spec → terv → feladatok → teszt → kód → verifikáció → validáció → használat · Document = Code · az ember dönt, az AI végrehajt

Java-fejlesztők · vezetők · üzleti elemzők30 min (talk) · ~45 min (teljes)2026
Források & szabványok

Források & szabványok — minden technológia hivatkozva

A bemutatóban említett minden szabvány és technológia a hiteles forrására mutat (kattintható, ellenőrzött linkek). Mérünk és hivatkozunk — nem tippelünk.

Betűszó-térkép — az öt fogalom, amit ne keverj össze

Rövidítés Teljes név Szabvány / forrás Szerep nálunk
SdD Spec-driven Development módszertan — a mi működési modellünk; inspiráció: spec-kit a fejlesztési lánc: szándék → spec → terv → feladatok → teszt → kód → verifikáció → validáció
SDD Software Design Description IEEE 1016-2009 inaktív-fenntartott (2020-03-05) — referencia-modell technikai tervrajz — architektúra, adatmodell, interfész
BRD Business Requirements Document ISO/IEC/IEEE 29148 üzleti tervrajz — célok, scope, workflow, compliance
EARS Easy Approach to Requirements Syntax Mavin, RE'09 tesztelhető követelmény-kikötések (When / While / If… then)
TdD Test-Driven Development Beck, 2002 red → green → refaktor; a teszt az EARS-kikötés gépi fele, és előbb kerül commitba, mint a kód

Adat & adatbázis

  • PostgreSQL · Row-Level Security · SECURITY DEFINER
  • SCD2 — Slowly Changing Dimension (Kimball)
  • pgx · pgvector
  • PostgreSQL 19 (devel) — natív property-graph: CREATE PROPERTY GRAPH + GRAPH_TABLE(… MATCH …), az SQL/PGQ (ISO/IEC 9075-16:2023, SQL:2023) szerint
  • Él-gráf réteg — dev.doc_edges (fejlesztés) · rag.cross_refs (ügyfél-RAG): a kapcsolat külön tárolva, nem vektor-hasonlóság