Forum📢 STREFA INFORMACYJNA📢 Ogłoszenia i NowościEtap 6

Etap 6

Wyświetlenia: 32
Działaj jako Senior Full-Stack Developer, Technical SEO Expert, Security/RBAC Reviewer, UX Reviewer, AI Infrastructure Architect i rygorystyczny Release Engineer.

Pracujemy nad projektem **AITwister**.

# Najważniejsze

Aktualnym fizycznym punktem startowym jest paczka:

```text
Etap6_035.zip
```

Nie mam fizycznie pobranej paczki `Etap6_036.zip`, więc w nowym czacie potraktuj:

```text
Etap6_036 — Variable GPU slots foundation
```

jako **pierwszą paczkę do zrobienia od nowa** na bazie `Etap6_035.zip`.

Jeżeli dostaniesz też:

```text
aitwister-STARA STRONA.zip
```

to jest tylko stara strona referencyjna. Służy wyłącznie do orientacyjnego podejrzenia logiki, zachowania, przepływów i intencji funkcji.

Nie kopiuj z niej kodu 1:1, nie przenoś starej architektury, runtime śmieci, dziur bezpieczeństwa ani starego UI.

# Aktualny stan Etapu6

Jesteśmy po realnie zaakceptowanym etapie:

```text
Etap6_035 — Server inventory form layout polish
```

Następna paczka do wykonania:

```text
Etap6_036 — Variable GPU slots foundation
```

# Co zostało już dodane w Etapie6

Dotychczasowy postęp od `Etap6_024`:

```text
Etap6_024 — GPU/device slots foundation
Etap6_025 — Resource pools foundation
Etap6_026 — Server inventory backend
Etap6_027 — Server inventory admin UI
Etap6_028 — hotfix: Server inventory admin UX
Etap6_029 — błędny hotfix release runtime storage, nie powielać podejścia
Etap6_030 — błędny hotfix release runtime storage, nie powielać podejścia
Etap6_031 — release runtime storage gate cleanup, usunięcie mutującego gate’a
Etap6_032 — flexible worker hardware inventory hotfix
Etap6_033 — flexible GPU slot eligibility
Etap6_034 — GPU slots UX hotfix
Etap6_035 — Server inventory form layout polish
```

Ważna lekcja z `Etap6_029` i `Etap6_030`:

```text
Nie dodawaj gate’a, który sam tworzy runtime storage file i potem oczekuje, że inny gate go usunie.
Release ZIP nie może zawierać runtime storage files.
Release checks mają wykrywać śmieci, a nie mutować paczkę w ryzykowny sposób.
```

# Co już działa i ma zostać utrzymane

```text
- aplikacja jest pełnym ZIP-em całej aplikacji aitwister/
- VERSION.php wskazuje aktualny etap
- docs zawiera tylko aktualny dokument etapu i FINAL_QA_ETAP6.md
- brak starych docs etapowych
- brak runtime śmieci w ZIP
- brak node_modules, venv, pycache, .bak, .map, starych ZIP-ów
- config/qa.php i config/release.php są spójne
- deploy_check.sh ma przechodzić
- Root ma bypass i nie jest zwykłą edytowalną rangą
- Gość jest profilem, nie przypisywalną rangą
- Gość nie ma twardego backendowego locka na Tryb szybki
- Admin i Użytkownik są systemowe
- Root jest ukryty, nietykalny, nieedytowalny, nieusuwalny i nieprzypisywalny
- mode access działa backendowo
- mode limits działają backendowo
- usage counters działają backendowo
- mode limit guards działają backendowo
- publiczny chat nadal jest placeholderem
- dropdown trybów ma etykiety:
Szybki, Myślący, Grafika, Muzyka, Video, Niecenzurowany
- brak token budget
- brak cost ledger
- brak LLM runtime
- brak kolejek AI
- brak worker runtime
- brak modeli
```

# Najważniejsza zasada wyglądu

Aktualny wygląd strony publicznej i reszty panelu admina jest finalny / perfect.

Nie zmieniaj bez wyraźnej prośby:

```text
UI, layoutu, copy, tekstów, interpunkcji, etykiet, kolorów, spacingu, proporcji, komponentów, układu strony publicznej, układu panelu admina, stylu dark/light ani zachowania istniejących elementów, jeśli działają dobrze.
```

UI można ruszać tylko w module aktualnie rozwijanym, minimalnie i zgodnie z obecnym stylem.

Teraz rozwijamy wyłącznie:

```text
Admin → Serwery
server inventory
GPU slots
resource pools
verifier foundation
policy/RBAC dla deep verification
```

Nie ruszaj publicznego UI.

# Aktualny układ Admin → Serwery po Etap6_035

W `Admin → Serwery` mają istnieć sekcje:

```text
Dodaj serwer
Serwery
```

Formularz standardowego serwera ma być ułożony profesjonalnie w parach:

```text
Nazwa | Worker key
Status | Źródło
Profil GPU | RAM
Worker CPU | Dopuszczony do Fast CPU pool
Blokada backendowa | Notatka
```

W dodawaniu i edycji ma być ten sam logiczny układ.

`Sloty GPU` mają pokazywać się tylko wtedy, gdy wybrany jest:

```text
Ręczna konfiguracja GPU
```

Dla gotowych profili GPU ręczny edytor slotów ma być ukryty.

W slocie GPU:

```text
Slot aktywny | Notatka slotu
```

ma być w jednej linii.

Panel ma wyglądać schludnie, spokojnie, profesjonalnie i premium, a nie jak debug-formularz.

# Następna paczka do zrobienia

## Etap6_036 — Variable GPU slots foundation

Cel:

```text
Dodać dynamiczną liczbę slotów GPU dla Ręczna konfiguracja GPU.
Przygotować system pod serwery z więcej niż 2 GPU, np. Threadripper + 5 kart.
```

Zakres:

```text
- pracuj na Etap6_035.zip jako źródle prawdy
- Ręczna konfiguracja GPU startuje z 1 slotem: gpu_0
- dodaj przycisk + Dodaj GPU
- dodaj przycisk Usuń GPU przy konkretnym slocie
- obsłuż gpu_0, gpu_1, gpu_2, gpu_3, gpu_4 itd.
- na tym etapie można przyjąć limit fundamentu np. do 8 ręcznych slotów GPU na serwer
- każdy slot ma osobno:
- model GPU
- VRAM GB
- slot aktywny
- Grafika
- Muzyka
- Video
- Niecenzurowany
- notatka slotu
- backend waliduje dynamiczną liczbę slotów
- resource pool eligibility liczy się per slot
- gotowe profile GPU nadal działają bez ręcznego edytora slotów
- dodaj aktywny JS tylko dla profilu admin-server-inventory, jeśli trzeba
- dodaj gate server_inventory_variable_gpu_slots_check
- podepnij gate pod QA/final_quality/deploy_check/release manifest
```

Nie dodawaj:

```text
- AI runtime
- worker runtime
- routing planner
- rezerwacji GPU
- kolejek
- token budget
- cost ledger
- realnego uruchamiania modeli
- realnej komunikacji z workerem
```

Efekt:

```text
Przy Ręczna konfiguracja GPU admin może dodać wiele kart GPU do jednego serwera.
Każdy slot ma osobne eligibility dla Grafika/Muzyka/Video/Niecenzurowany.
System nadal niczego realnie nie uruchamia i nie rezerwuje.
```

# Kolejne paczki po Etap6_036

## Etap6_037 — Server verifier inventory foundation

Dodać osobną sekcję:

```text
Dodaj serwer weryfikujący
```

Docelowy układ sekcji w `Admin → Serwery`:

```text
Dodaj serwer
Dodaj serwer weryfikujący
Serwery
```

Zakres:

```text
- osobny formularz dla serwera weryfikującego
- nie mieszać verifiera ze zwykłym formularzem GPU
- serwer weryfikujący służy do sprawdzania Trybu Myślącego
- przygotować thinking_verifier_pool
- przygotować Mac Studio / Apple unified memory jako typ verifiera
- bez realnego uruchamiania modelu
- bez worker runtime
- bez kolejek
```

Proponowany układ formularza:

```text
Nazwa | Worker key
Status | Źródło
Typ verifiera | Model urządzenia
Unified memory / RAM | Dopuszczony do thinking_verifier_pool
Blokada backendowa | Notatka
```

Przykład:

```text
Typ verifiera: Mac Studio
Model urządzenia: Mac Studio M3 Ultra
Unified memory / RAM: 256 GB
Dopuszczony do thinking_verifier_pool: tak
```

Lista `Serwery` ma pokazywać badge typu:

```text
Standardowy worker
Serwer weryfikujący
Fast CPU
GPU pools
Verifier
```

## Etap6_038 — Thinking deep verification policy foundation

Dodać fundament polityki dla głębokiej weryfikacji Trybu Myślącego.

Zakres:

```text
- Tryb Myślący dostaje capability deep_verification
- deep verification nie jest osobnym publicznym trybem
- jest podopcją / capability przy Trybie Myślącym
- profile/rangi mogą mieć osobny dostęp do:
- Tryb Myślący
- Głęboka weryfikacja odpowiedzi
- Root ma bypass
- Gość nie dostaje przypadkowego globalnego locka
- backendowy guard placeholder odrzuca request z deep_verification, jeśli profil/ranga nie ma dostępu
- bez realnego verifier runtime
- bez kolejek
- bez modeli
```

W panelu uprawnień docelowo ma to wyglądać schludnie np.:

```text
Myślący
[✓] Może używać trybu Myślącego
[✓] Może używać głębokiej weryfikacji
```

## Etap6_039 — Server inventory final polish + re-audit

Domknięcie bloku server inventory / hardware / verifier.

Zakres:

```text
- re-audit Admin → Serwery
- dark/light
- docs
- QA gates
- release manifest
- deploy_check
- brak runtime śmieci
- brak AI runtime
- brak tokenów
- brak kosztów
- brak kolejek
- upewnić się, że:
- standardowy worker działa
- ręczne GPU działa
- wiele GPU działa
- verifier działa jako inventory/pool
- deep verification działa tylko jako policy/guard placeholder
```

Po tej paczce blok:

```text
Server inventory + GPU slots + verifier foundation
```

ma być uznany za zamknięty.

# Dalsza roadmapa Etapu6 po domknięciu inventory/verifier

Po `Etap6_039` wrócić do szerszej roadmapy Etapu6, ale z przesuniętą numeracją wynikającą z hotfixów i nowych paczek.

Proponowana dalsza kolejność:

```text
Etap6_040 — Resource allocation planner placeholder
Etap6_041 — Routing preview in admin
Etap6_042 — Provider catalog foundation
Etap6_043 — Execution profiles foundation
Etap6_044 — Execution profiles admin UI
Etap6_045 — AI tool policy matrix
Etap6_046 — Web capability blueprint
Etap6_047 — RAG / knowledge base blueprint
Etap6_048 — File analysis blueprint
Etap6_049 — Code sandbox blueprint
Etap6_050 — Orchestrator contract draft
Etap6_051 — Disabled orchestrator client skeleton
Etap6_052 — Worker control channel contract
Etap6_053 — Bundle registry foundation
Etap6_054 — Signed bundle deploy blueprint
Etap6_055 — Worker update protocol placeholder
Etap6_056 — Chat routing placeholder
Etap6_057 — Queue/job model blueprint
Etap6_058 — Audit logs for Etap6 modules
Etap6_059 — Security/RBAC re-audit for Etap6
Etap6_060 — Admin UX polish for Etap6 modules
Etap6_061 — Performance baseline after Etap6 modules
Etap6_062 — A11y + SEO non-regression
Etap6_063 — Release hygiene hardening
Etap6_064 — Etap6 global final quality check
Etap6_065 — Etap6 final docs polish
Etap6_066 — Final re-audit Etap6
```

# Główny cel Etapu6

Etap6 ma zrobić fundament pod prawdziwe AI, ale jeszcze bez uruchamiania modeli.

Budujemy:

```text
- tryby czatu
- dostęp do trybów według rang/profili
- limity trybów
- liczniki użycia trybów
- guardy limitów
- inventory serwerów
- GPU/device slots
- dynamiczne GPU slots
- resource pools
- verifier worker foundation
- deep verification policy
- CPU/GPU/resource routing foundation
- katalog przyszłych narzędzi LLM
- blueprint workerów
- bundle auto-update
- gate’y bezpieczeństwa
- disabled orchestrator skeleton
- worker update protocol placeholder
- audit logi dla modułów Etapu6
- release hygiene
- final QA
```

Nie robimy jeszcze:

```text
- realnego LLM
- realnego runtime modeli
- prawdziwych kolejek AI runtime
- cost ledger
- token budget
- Qdrant/memory runtime
- prawdziwego Web Search runtime
- realnego sandboxa kodu
- realnego worker agenta
- streamingu odpowiedzi AI
- realnego połączenia z workerem
- realnego wykonywania zadań na GPU
```

# Architektura sprzętu

Nie zakładaj już, że każdy worker zawsze ma tylko Ryzen 9 9950X i 1/2 GPU.

Aktualny kierunek:

```text
CPU:
- ręczne pole Worker CPU
- checkbox Dopuszczony do Fast CPU pool
- później ewentualnie worker telemetry uzupełni nazwę CPU automatycznie

RAM:
- ręczne pole liczbowe GB
- np. 32, 48, 64, 96, 128, 192, 256

GPU:
- gotowe profile nadal mogą istnieć:
- 2x RTX 3090 NVLink
- 2x RTX 3090 bez NVLink
- 1x RTX 5060 Ti 16GB
- 2x RTX 5060 Ti 16GB
- Ręczna konfiguracja GPU

Ręczna konfiguracja GPU:
- dynamiczne sloty gpu_0, gpu_1, gpu_2...
- model GPU per slot
- VRAM GB per slot
- aktywność slotu per slot
- eligibility per slot:
- Grafika
- Muzyka
- Video
- Niecenzurowany
```

Tryb Myślący:

```text
- główny model: whole_server na 2x RTX 3090
- NVLink preferowany
- non-NVLink jako wolniejszy fallback
- nie dzielić 3090 na pojedyncze GPU dla głównego Trybu Myślącego
```

Verifier:

```text
- osobny typ serwera
- np. Mac Studio M3 Ultra 256GB unified memory
- służy do sprawdzania odpowiedzi Trybu Myślącego
- trafia do thinking_verifier_pool
- nie mieszać z pulami Grafika/Muzyka/Video/Niecenzurowany
```

Tryb `Niecenzurowany`:

```text
- jest osobnym trybem i osobną trasą zasobów
- nie oznacza wyłączenia bezpieczeństwa, prawa, abuse control, RBAC, limitów ani gate’ów
```

# RBAC / tryby / limity

Zasady:

```text
- Root jest systemowy, ukryty, nietykalny, nieedytowalny, nieusuwalny, nieprzypisywalny z panelu i ma pełny bypass
- Root nie ma limitów
- Gość jest profilem limitów/dostępu dla niezalogowanych, nie zwykłą rangą
- Admin i Użytkownik są systemowe, nieusuwalne
- Admin może mieć limity, Root nie
- dostęp do trybów musi być sprawdzany backendowo
- ukrycie trybu w UI nie wystarcza
- ręczny request z niedozwolonym mode_slug ma być odrzucony
- deep verification ma mieć osobną capability przy Trybie Myślącym
```

Tryby systemowe:

```text
szybki
myślący
grafika
muzyka
video
niecenzurowany
```

Etykiety UI:

```text
Szybki
Myślący
Grafika
Muzyka
Video
Niecenzurowany
```

Limity:

```text
- per profil/ranga i per tryb
- Gość, Użytkownik i Admin mają osobne limity
- Root bez limitów
- requests_per_day
- conversations_per_day, jeśli ścieżka rozmów placeholderowych ma sens
- bez tokenów
- bez kosztów
- bez cost ledger
```

# AI runtime — zabronione w Etapie6

Nie dodawaj:

```text
OpenAI runtime
Ollama runtime
lokalnego LLM runtime
Llama runtime
image/music/video/speech runtime
browser runtime
RAG/Qdrant runtime
kolejek AI
workera AI
uruchamiania modeli
token budget
cost ledger
billing kosztów AI
realnego verifier runtime
realnej komunikacji z Mac Studio
```

Dozwolone są tylko:

```text
blueprinty
tabele konfiguracyjne
placeholdery
disabled skeleton
kontrakty
dokumentacja
gate’y sprawdzające, że runtime nadal jest wyłączony
```

# Gate’y i testy

Po każdej paczce uruchom lokalnie istniejące gate’y projektu oraz nowe gate’y Etapu6.

Minimalnie sprawdzaj:

```text
preflight
static_quality
php_tests
schema_self_check
transaction_integrity_check
error_handling_check
security_policy_check
csrf_method_safety_check
input_validation_check
data_consistency_check
admin_ux_check
performance_baseline_check
observability_check
technical_seo_check
a11y_focused_check
release_manifest_strictness_check
deployment_resilience_check
asset_inventory --strict
final_quality
deploy_check
unzip -t
```

Jeżeli w paczce istnieją gate’y Etapu6, uruchom też właściwe, np.:

```text
legacy_quarantine_check
ai_runtime_forbidden_check
mode_catalog_check
mode_access_check
mode_limits_check
mode_usage_counters_check
mode_limit_guards_check
server_inventory_check
server_inventory_backend_check
server_inventory_admin_ui_check
server_inventory_form_layout_polish_check
server_inventory_variable_gpu_slots_check
gpu_slots_check
gpu_slot_eligibility_check
resource_pools_check
routing_planner_check
provider_catalog_check
execution_profiles_check
ai_tool_policy_check
orchestrator_disabled_check
worker_bundle_check
etap6_global_quality_check
```

Zasady:

```text
- jeżeli coś dodajesz, dodaj sensowny check
- podepnij check pod QA/final_quality/deploy_check/release manifest, jeśli ma sens
- nie zostawiaj martwego checka
- jeżeli coś nie przechodzi, popraw paczkę przed odesłaniem
- nie twórz mutujących release gate’ów, które same tworzą runtime storage files
```

# Deploy

Na serwerze jest jedna komenda wdrożeniowa:

```bash
deploy-aitwister
```

W odpowiedziach przy paczkach sekcja wdrożenia ma mieć tylko tę jedną komendę.

# Format odpowiedzi do każdej paczki

Na samej górze daj link:

```text
[Pobierz Etap6_XXX.zip](...)
```

Potem dokładnie:

````text
# Etap6_XXX — co zrobiłem

## Zmienione / dodane pliki

```text
VERSION.php
config/qa.php
scripts/example.php
docs/ETAP6_XXX.md
````

## Zakres

Krótko i konkretnie.

## Efekt

Co paczka realnie zmienia dla aplikacji.

## Oceny

Jeśli paczka nie zmienia realnych ocen:

```text
Oceny: bez zmian.
```

Jeśli realnie coś podnosi, napisz krótko które kategorie i dlaczego.

# Wdrożenie

```bash
deploy-aitwister
```

# Krótki test

Jeżeli paczka nie zmienia widocznego UI:

```text
Brak testów klikanych.

Wystarczy, że deploy-aitwister przejdzie bez błędów.
```

Jeżeli paczka zmienia UI:

```text
Ctrl + F5

Dark:
- sprawdź wskazane elementy

Light:
- sprawdź wskazane elementy

Console:
- brak Uncaught / TypeError / Failed to load resource
```

````

# Najważniejsze zasady pracy

```text
- zawsze pracuj na najnowszej fizycznie dostępnej paczce
- w tym nowym czacie zacznij od Etap6_035.zip
- pierwsza paczka do wykonania to Etap6_036
- każda kolejna paczka ma być kompletnym ZIP-em całej aplikacji aitwister/, nie patchem
- zawsze zwiększaj numer wersji etapu
- zawsze aktualizuj VERSION.php, config/qa.php, config/release.php jeśli zmienia się manifest, docs/ETAP6_XXX.md i docs/FINAL_QA_ETAP6.md
- w release ZIP ma być tylko aktualny dokument etapu i aktualne finalne docs
- nie zostawiaj starych docs etapowych
- nie dodawaj .gitignore, .gitkeep, runtime storage files, cache, tmp, logs, map, bak, starych paczek ani śmieci release
- katalogi storage mogą być w ZIP, ale runtime pliki storage/cache/log/session/upload nie mogą przejść gate’ów
- nie dodawaj nieaktywnych CSS/JS
- sekrety w paczce na tym etapie nie są traktowane jako błąd
- nie pisz długich teorii przy paczkach
- nie każ mi zaglądać w pliki
- nie zawyżaj ocen za kosmetykę
- pamiętaj o dark i light
- nie zmieniaj finalnego wyglądu bez wyraźnej prośby
- Gość docelowo ma móc rozmawiać z czatem po dodaniu LLM, więc nie blokuj gościa globalnie
- ścieżka /var/www/aitwistersecred istnieje na serwerze i nie zmieniaj jej teraz
- jeżeli znajdziesz realny bug UI lub backendowy, najpierw zrób mały hotfix
- jeżeli coś nie przechodzi w testach/gate’ach, popraw paczkę przed odesłaniem
- jeżeli tworzysz ZIP, upewnij się, że faktycznie istnieje w /mnt/data i sprawdź unzip -t
````

# Zacznij od

```text
Etap6_036 — Variable GPU slots foundation
```

Dopiero po tym przejdź do:

```text
Etap6_037 — Server verifier inventory foundation
Etap6_038 — Thinking deep verification policy foundation
Etap6_039 — Server inventory final polish + re-audit
```
0
Zaloguj się, aby odpowiedzieć.