cidc1113
tipAUTOMATION
zakon[
"ZAKON 17 (PULL ONLY)",
"ZAKON 41 (W3C/FOSS)",
"ZAKON 43 (Krunica)",
"ZAKON 44 (Folija)"
]
podsjeticnikCvorovi sami povlace izmjene sa primary (EU) svakih 30 min. Nema push. Krunica hash garantira integritet. Folija javlja tamper.
implementacija{
"library": "/var/www/genesis/services/quantum_sync.py",
"velicina": "11.6 KB",
"jezik": "Python 3.12 (samo stdlib + opcionalno redis)",
"ovisnosti": "zero external (stdlib + optional redis)"
}
logika{
"korak_1": "Pull manifest s primary (EU /quantum/manifest.json)",
"korak_2": "Ako primary down -> fallback na NEW (fina-connect.online)",
"korak_3": "Usporedi sa lokalnim manifestom (compute_diff)",
"korak_4": "Za svaku added/changed datoteku: pull + verify SHA256",
"korak_5": "Atomic apply: tmp dir -> swap (sve ili nista)",
"korak_6": "Brisi 'deleted' datoteke",
"korak_7": "Update lokalni manifest",
"korak_8": "Folija stream: javi rezultat (success/warning/alarm)"
}
tamper_detection{
"trigger": "Pull datoteke s SHA mismatch (Krunica narusena)",
"akcija": "Abort sync, NE primjenjuj nista (atomicity)",
"notifikacija": "Folija alarm event s details {file, expected_sha, actual_sha, source}",
"primjer": {
"severity": "alarm",
"event": "sha_mismatch",
"details": {
"file": "atom9d.js",
"expected": "b018bd880e82e861",
"got": "a1b2c3d4e5f67890",
"source": "https://genesis.limit-connect.com/quantum"
}
}
}
atomicity{
"princip": "Sve ili nista. Ako bilo koji file padne -> abort, ne primjenjuj parcijalno.",
"implementacija": "Pull sve u tmp dir prvo, samo onda shutil.move() u quantum dir"
}
deploy{
"primary_EU": {
"url": "https://genesis.limit-connect.com/quantum/",
"uloga": "Source of truth — NE pull-a, samo serv-a",
"cron": "nije potreban"
},
"replicators": {
"NEW": {
"ip": "31.70.90.84",
"cron": "*/30 * * * * cd /var/www/genesis && python3 -m services.quantum_sync >> /var/log/quantum_sync.log 2>&1",
"status": "AKTIVAN"
},
"DE": {
"ip": "31.70.82.227",
"cron": "*/30 * * * *",
"status": "AKTIVAN"
},
"MAR": {
CLI{
"jedan_sync": "python3 -m services.quantum_sync",
"loop": "python3 -m services.quantum_sync --watch",
"custom_period": "python3 -m services.quantum_sync --watch --period 600",
"custom_primary": "python3 -m services.quantum_sync --primary https://sati.ink/quantum"
}
folija_integracija{
"redis_db": 4,
"stream_key": "genesis:folija:events",
"events": [
"info sync_success — sve dobro proslo",
"warning sync_aborted_partial — neki fajlovi failali, abort",
"alarm sha_mismatch — Krunica integritet narusen!",
"alarm sync_exception — neocekivana iznimka"
]
}
fallback_chain{
"primary": "https://genesis.limit-connect.com/quantum",
"fallback": "https://fina-connect.online/quantum",
"logika": "Ako primary padne, automatski fallback. ZAKON 17 — nista ne pretpostavlja, samo cita."
}
test{
"test_1_EU_local": {
"rezultat": "OK — nista za sync (vec sinhronizirano)",
"diff": {
"added": 0,
"changed": 0,
"deleted": 0,
"unchanged": 10
}
},
"test_2_NEW_DE_MAR_ES": {
"rezultat": "OK — sve cetiri rade, cron postavljen, sync uspjesan"
}
}
buduce_proširenje{
"verify_local_files": "Provjeravaj lokalne fajlove protiv lokalnog manifesta (detekcija lokalnog tamper-a)",
"celery_beat": "Migracija s cron-a na Celery Beat za bolji monitoring",
"flower_dashboard": "Real-time status svih cvorova",
"push_critical_only": "Iznimka: za kriticne updates (security fix), allowed push notification (NE data push, samo 'pull NOW' hint)"
}
promatracCC (Claude Code)
statusDEPLOYED na 4/4 replikator cvorova
sljedeci_syncSvakih 30 min kroz cron