Fenix / Genesis · modul kao specifikacija (ZAKON 58)

Manje koda, ista funkcija

−60%

na 10 modula, uključujući dijeljenu jezgru · za jedan modul +4 % · paritet TESTIRAN 14/14 na sintetičkom primjeru

Ispravljeno 18.10.2026. (c14591): ranije je ovdje pisalo „−67 %, dokazan paritet". Ta brojka nije uključivala jezgru bez koje specifikacija ne radi, a izvor testa pariteta ipak postoji i test je 18.10.2026. ponovljen (14/14, atom c14629).

Primjer 1 — modul Rezervacija (iznajmljivači)

Isti opseg: validacija, tenant-izolacija, CRUD, filtriranje, stanja (draft→potvrđena→plaćena→završena), izračun (PDV + boravišna), XML izvoz.

KLASIČNO — 124 linije · 4.156 B
PDV = Decimal("0.13")
BORAVISNA_PO_NOCI = Decimal("1.50")

@dataclass
class Rezervacija:
    id: int; tenant_id: str
    gost_ime: str; gost_oib: str
    dolazak: date; odlazak: date
    osoba: int; cijena_nocenje: Decimal
    status: str = "draft"

def validiraj(r):
    if len(r.gost_ime) < 2: raise ...
    if len(r.gost_oib) != 11: raise ...
    if r.odlazak <= r.dolazak: raise ...
    if r.osoba < 1 or r.osoba > 20: raise ...
    ...

PRIJELAZI = {"draft":["potvrdena","otkazana"],
  "potvrdena":["placena","otkazana"], ...}
def promijeni_stanje(r, novo): ...

def osnovica(r): return r.cijena_nocenje*noci(r)
def pdv_iznos(r): return (osnovica(r)*PDV)...
def boravisna(r): return (1.50*noci(r)*r.osoba)...
def ukupno(r): return osnovica+pdv+boravisna

class Spremiste:
    def kreiraj(...): validiraj; spremi
    def dohvati(t,id): tenant provjera
    def izmijeni / obrisi / popis(filtri): ...

def u_xml(r): return "<Rezervacija>...</>"
# + 90 linija CRUD/validacija/XML rukom
SPECIFIKACIJA — 22 linije · 1.372 B
REZERVACIJA = Modul({
 "polja": {
   "gost_ime":["obavezno",("minduljina",2)],
   "gost_oib":["obavezno",("duljina",11),("znamenke",None)],
   "dolazak":["obavezno"],
   "odlazak":["obavezno",("poslije","dolazak")],
   "osoba":["obavezno",("min",1),("max",20)],
   "cijena_nocenje":["obavezno",("min",0.01)],
   "tenant_id":["obavezno"]},
 "stanja": {"pocetno":"draft", "prijelazi":{
   "draft":["potvrdena","otkazana"],
   "potvrdena":["placena","otkazana"],
   "placena":["zavrsena"], ...}},
 "izracun": {
   "osnovica": d => cijena*noci,
   "pdv":      d => osnovica*0.13,
   "boravisna":d => 1.50*noci*osoba,
   "ukupno":   d => osn+pdv+borav},
 "poredak": "dolazak",
 "izvoz": {"korijen":"Rezervacija", "polja":{...}},
})
# CRUD, validaciju, stanja, XML
# izvršava DIJELJENA jezgra — ne piše se
Funkcionalni paritet — pokrenuto uživo (python dokaz_paritet.py)
ProvjeraProvjera
osnovicaOKtenant izolacija A/BOK
PDV iznosOKprijelaz stanja istiOK
boravišna pristojbaOKnedopušten prijelaz odbijenOK
ukupnoOKloš OIB odbijenOK
XML bajt-identičanOKloš datum odbijenOK

14/14 identično   klasik i spec daju isti rezultat na svakoj provjeri — XML izlaz je bajt po bajt jednak.

Ispravak razine dokaza (18.10.2026.)

Primjer 2 — cijeli modul iznajmljivači (mjereno na živom kodu)

223.169 bajtova stvarnog koda, klasificiranih po fiksiranoj rubrici prije brojanja (da se broj ne namjesti).

J 27,9%
P 65,2%
I 6,9%
J — jedinstveno (ostaje)
62 KB
HR porez, eVisitor, MRZ, HUB-3A
P — ponavljanje → spec
145 KB
CRUD, rute, validacija, obrasci
I — infra → poziv jezgre
15 KB
auth, pečat, tenant, GDS
Gornja granica smanjenja
72,1%
P + I

Primjer 3 — što jednostavno nestane

Iznajmljivači su danas Django. Kanon je FastAPI + jezgra. Dio koda ne prelazi u spec — briše se jer ga novi sloj ne treba.

Django artefaktVeličinaU kanonu
Migracije (8 datoteka)34,5 KBnema — shema iz spec-a
admin.py5,1 KBnema — generira jezgra
ORM boilerplate + formsdio models/viewsdeklarativna polja

Zato je izmjerenih 72,1% donja procjena za ovaj modul: mjeri koliko se svodi na spec, a ne računa koliko Django-boilerplatea ispari pri prelasku na FastAPI.

Primjer 4 — Rezervacija kao zakon-atom na uređaju (18.10.2026.)

Silazak sa servera: izračun i stanja nisu ni kod ni specifikacija koju izvršava server, nego zakon-atom od 943 B koji provjerava svatko — uređaj, svjedok ili gola RISC-V slika — istom fiksnom funkcijom. Pred-registrirano u c14587, rezultat u c14590.

ProvjeraRezultat
100 000 nasumičnih rezervacija iz klasične Decimal reference drži pod zakonom100 000 / 100 000
PDV, boravišna ili ukupno pomaknuti za ±1 centPAD 600 000 / 600 000
svih 25 prijelaza stanja kao klasična tablica25 / 25
certifikat jednoznačnosti (prva inačica)PAD propustio dvoznačan pojas
certifikat redom izvođenja (c14589)4/4, dvoznačan pojas odbijen
provjera jedne rezervacije, n=30medijan 0,10 µs
veličina: zakon-atom prema klasičnom kodu novca i stanja943 B prema 1.081 B — praktički isto

Ušteda ovdje nije u bajtima. Pravilo se ne deploya, provjerljivo je svakome, nosi dokaz jednoznačnosti i radi bez servera. Ime, OIB i XML izvoz ostaju u sučelju uređaja.

Kako to radi bez gubitka funkcije

Logika (CRUD, validacija, stanja, izračun redoslijeda, XML izvoz) napisana je jednom u dijeljenoj jezgri. Svaki modul isporučuje samo specifikaciju-podatak — polja, pravila, stanja, izračune. Ista jezgra izvršava sve module, pa dodavanje modula ne dodaje logiku, samo opis.

Poštena granica: dijeljena jezgra (2.951 B) piše se jednom. Ušteda raste s brojem modula: 10 modula klasično = ~42 KB; kroz spec = jezgra + 10×1,4 KB ≈ 17 KB. Za jedan modul ušteda je skromna; za flotu modula je velika. I dio (~4%) koji je pravi stroj — ostaje kod, namjerno.

Provjeri sam — na pet nezavisnih čvorova

Ovaj zapis nije samo tvrdnja na stranici. Zapečaćen je i stoji na pet čvorova u različitim mrežama i kod različitih pružatelja — nijedan od njih nije nužan da bi se provjerio.

čvorpoveznica za provjerupravi atomizmišljen ID
EUgenesis.limit-connect.com/v/749e176ba4…200 autentično404
ESno-limit.world/v/749e176ba4…200 autentično404
DEsati.ink/v/749e176ba4…200 autentično404
NEWfina-connect.online/v/749e176ba4…200 autentično404
MARlimit-connect.com/v/749e176ba4…200 autentično404

Stupac „izmišljen ID“ nije ukras. Da svih pet čvorova vraća „autentično“ na bilo što, poveznica ne bi ništa značila. Zato se svaki provjerava i s izmišljenim brojem — i svaki mora reći ne.

Što ova poveznica dokazuje: da atom c1997 (klasifikacija J/P/I, Primjer 2) postoji i nije mijenjan. Ne dokazuje naslov stranice niti paritet iz Primjera 1. Primjer 4 ima vlastite atome (c14587, c14589, c14590).

Puni otisak: 749e176ba41b06dfd2e49c377328cea691d7697493cddf07dfc806b2fb1e8710

Pošteno o vremenu: novi atom ne osvane na svih pet istog trenutka — izmjereno kašnjenje od pečaćenja do prvog udaljenog čvora bilo je oko 6 minuta. Prije toga udaljeni čvor odgovara 404, i to je točan odgovor, ne kvar.

Rječnik imena — inženjerski nazivi (1) · izvor: atom c16819
Silazak na uređajključevi i potpisi nastaju na uređaju korisnika; server ne dira privatni ključ
client-side key generation & signing · WebCrypto, Android Keystore