A 2026-08-17-i eset általánosítása: a d2d/e2e Docker Swarmban ugyanazt a kódot több
service futtatja közös volume-ról, és a queue:work hosszan futó folyamat a betöltött
osztályokat a memóriájában tartja. A fájlmásolás után a worker RÉGI kóddal dolgozta fel
a jobot - a felület jónak látszott, a háttérfeladat némán a régi viselkedést hozta.
- config: 'runtime' minta (app/, config/, database/, routes/, bootstrap/, composer.lock),
mert a restart nem csak a jobok változásakor kell; targetenként a service nevek és a
Swarm manager elérése
- a felületen figyelmeztetés, a teendőkben a konkrét ssh + docker service update parancs
- a restart szándékosan a cache ürítés UTÁN: a frissen induló worker különben a régi,
cache-elt konfigot töltené be
- a d2d schedulernél jelezzük, hogy 0 replikán fut (a restart üresjárat lehet), a t2t-nél
pedig azt, hogy queue service még nincs, de a névkonvenció alapján t2t_queue lesz
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- A célkörnyezet alapértelmezése a d2d (azt frissítjük sűrűbben). A config targets
tömbjének sorrendje adja az alapértelmezést, ezért csak a sorrend cserélődött.
- A "Környezetek állapota" panel betöltéskor magától lekérdezi a deploy-version.json-t,
percenkénti cache-sel (a hibás választ is cache-eljük, hogy egy nem válaszoló
környezet ne lassítsa minden kattintásnál a felületet). A Frissítés gomb kényszerít.
- A panel tömörebb, és valóban két hasábos: a md:grid-cols-2 nincs benne a lefordított
CSS-ben, ezért saját, media query-s stílussal oldjuk meg - így build nélkül is működik.
- A commitlistában a hash mellett jelöljük, melyik környezet áll azon a commiton:
zöld a szervertől lekérdezett, szürke a napló szerinti állapot.
Teszt: a beforeEach Http::fake() catch-all stubja minden URL-re illeszkedik és a factory
az első találatot adja vissza, ezért a konkrét választ váró teszt új factory-t kap.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Éles használat közben derült ki: a csomagba került egy seeder, de a _TEENDOK.md nem
szólt róla. A seeder felmásolása önmagában nem csinál semmit, tehát csendben kimaradt
egy lépés - pont az a hibatípus, ami ellen az egész eszköz készült.
- config: új attention csoport a database/seeders/* útvonalakra
- a felületen figyelmeztetés, a teendőkben a konkrét osztálynévvel:
php artisan db:seed --class=<Osztály>
- mellé egy feltételes cache-lépés: a Pennant purge Eloquent mentésnél NEM kell (a
FeatureFlagObserver::saved() elvégzi), csak query builderes írás után; a laratrust
cache pedig csak szerepkör/jogosultság hozzárendelés változásakor, mert a saját
cache-ét a felhasználóhoz kötve tárolja
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Két commit közötti fájlok összegyűjtését előkészítő felület első fázisa: célkörnyezet
választás (e2e/d2d), commitlista, diff-előnézet figyelmeztetésekkel. Ez a fázis még
semmit nem ír a fájlrendszerre, a csomagolás a phase2-ben érkezik.
- DeploymentGuard: .env kapcsoló + hardkódolt stage whitelist + developer szerep +
feature flag; a flag szándékosan nem biztonsági réteg, csak láthatóság-vezérlés
- GitRepository: csak olvasó wrapper, argumentum-tömbös Symfony Process (nincs shell),
hash- és referencia-validáció, core.quotePath=false az ékezetes útvonalakhoz
- ChangeSetAnalyzer: kizárási lista, törlendő/másolandó szétválasztás (átnevezésnél
mindkettő), figyelmeztetések migrációra, composer.lock-ra és a nem verziókövetett
fordított assetekre
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>