Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 2 additions & 24 deletions .github/workflows/connected-microcosm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,6 @@ jobs:
sparse-checkout: README.md
fetch-depth: 1

- name: Checkout SEC Portal for workspace inspection
uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5
with:
repository: high-cde/ZDOS-SEC-PORTAL
ref: 47247dfd3eff79fbd0078b4187547dba37ac4818
path: ZDOS-SEC-PORTAL
filter: blob:none
sparse-checkout: README.md
fetch-depth: 1

- name: Checkout Cybercore for workspace inspection
uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5
with:
repository: high-cde/Z-CYBERCORE
ref: e8637a4e59e454a0b8bc0f748d4ed0d9bd5de4a0
path: Z-CYBERCORE
filter: blob:none
sparse-checkout: README.md
fetch-depth: 1

- name: Run connected-microcosm tests
env:
ZDOS_ZLANG_ROOT: ${{ github.workspace }}/Zlang
Expand All @@ -64,13 +44,11 @@ jobs:
ZDOS_MICROCOSM_WORKSPACE: ${{ github.workspace }}
run: ./microcosm/zdos-microctl inspect

- name: Assert external checkout presence and cleanliness
- name: Assert required checkout presence and cleanliness
run: |
test -d Zlang && test -d zdos-organism && test -d ZDOS-SEC-PORTAL && test -d Z-CYBERCORE
test -d Zlang && test -d zdos-organism
test -z "$(git -C Zlang status --porcelain)"
test -z "$(git -C zdos-organism status --porcelain)"
test -z "$(git -C ZDOS-SEC-PORTAL status --porcelain)"
test -z "$(git -C Z-CYBERCORE status --porcelain)"

- name: Validate local entrypoints and release policy
run: ./microcosm/zdos-microctl gate
20 changes: 15 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,18 @@ ZDOS è una piattaforma sperimentale per costruire sistemi x86_64 piccoli, osser

ZDOS non è ancora una distribuzione general-purpose né un sostituto pronto per Debian, Ubuntu o altri sistemi operativi quotidiani. È una **base di sviluppo reale**, progettata per rendere esplicito ciò che è stato costruito, ciò che è stato testato e ciò che resta da implementare.

### Struttura snella del Microcosmo

Il Microcosmo ora mantiene soltanto tre fonti operative: **ZDOS**, **Zlang** e **zdos-organism**. ZDOS è il nucleo autorevole per build, boot, QEMU, Evidence Chain e gate; Zlang è il compilatore e il contratto ZLB2; `zdos-organism` è il runtime residente sperimentale. Non sono richiesti portali, dashboard o repository di sicurezza separati per eseguire i gate locali.

| Componente | Responsabilità | Stato |
|---|---|---|
| `ZDOS` | Kernel sperimentale, distro Linux, QEMU, orchestrazione ed Evidence Chain | `VERIFIED` nel perimetro dichiarato |
| `Zlang` | Compilatore, runtime, VM e bytecode ZLB2 | `VERIFIED` nel perimetro dichiarato |
| `zdos-organism` | Tick residente e ponte Zlang/ZVM con policy `default-deny` | `EXPERIMENTAL` |

La riduzione del perimetro elimina sincronizzazioni inutili e riferimenti a componenti non disponibili. Ogni capacità resta soggetta a contratto, test positivo, test negativo e prova riproducibile.

## Stato del progetto

La maturità viene descritta per capacità, non soltanto per versione. Lo stato corrente è il seguente:
Expand Down Expand Up @@ -77,10 +89,10 @@ Il profilo pubblico espone soltanto workflow con responsabilità distinte. `Vali
| Workflow | Scopo | Dipendenze esterne |
|---|---|---|
| `validate-x86_64.yml` | Build, bytecode, boot QEMU e contratto web | Zlang checkout canonico |
| `connected-microcosm.yml` | Test identity/commands/microcosm, inspect e gate | Zlang checkout canonico; gli altri checkout restano osservati dall’inspect |
| `connected-microcosm.yml` | Test identity/commands/microcosm, inspect e gate | Zlang e `zdos-organism` checkout |
| `release-x86_64.yml` | Build e pubblicazione release | Toolchain Linux e permesso GitHub release |

Il workflow del micro-mondo esegue i quattro checkout esterni in directory controllate del workspace. Zlang viene passato al bridge tramite `ZDOS_ZLANG_ROOT`, mentre `ZDOS_MICROCOSM_WORKSPACE` allinea l’ispezione al percorso del runner. In locale o sulla VPS il controller mantiene il fallback al workspace adiacente già previsto dal catalogo.
Il workflow del micro-mondo esegue soltanto i checkout necessari in directory controllate del workspace. Zlang viene passato al bridge tramite `ZDOS_ZLANG_ROOT`, mentre `ZDOS_MICROCOSM_WORKSPACE` allinea l’ispezione al percorso del runner. In locale o sulla VPS il controller mantiene il fallback al workspace adiacente già previsto dal catalogo.

## Architettura

Expand Down Expand Up @@ -271,7 +283,7 @@ Il repository include un **micro-mondo connesso** che incorpora il modello di co
| `./microcosm/zdos-microctl gate` | Valida entrypoint, policy, catalogo e contratto | Sola lettura |
| `./microcosm/zdos-microctl attest-persistence` | Esegue due boot QEMU e registra l'attestazione | Genera build e ledger locali |

Il collegamento già **VERIFIED** è `persistent-storage-evidence-v1`: due boot QEMU, marker di scrittura e lettura, clean shutdown, quindi evento `filesystem.persistence.attestation` in una Evidence Chain verificata. Zlang e ZDOS-SEC-PORTAL sono fonti primarie esterne ora verificate nel rispettivo perimetro locale; zdos-organism e Z-CYBERCORE restano `EXPERIMENTAL` finché non sono disponibili tutte le verifiche dichiarate. La specifica completa è in [`docs/MICROCOSM.md`](docs/MICROCOSM.md).
Il collegamento già **VERIFIED** è `persistent-storage-evidence-v1`: due boot QEMU, marker di scrittura e lettura, clean shutdown, quindi evento `filesystem.persistence.attestation` in una Evidence Chain verificata. Zlang è la fonte primaria esterna verificata nel rispettivo perimetro locale; `zdos-organism` resta `EXPERIMENTAL` finché non sono disponibili tutte le verifiche dichiarate. La specifica completa è in [`docs/MICROCOSM.md`](docs/MICROCOSM.md).

## Identità ZDOS e ZSpace

Expand Down Expand Up @@ -498,7 +510,6 @@ Consulta [`CONTRIBUTING.md`](CONTRIBUTING.md), [`SECURITY.md`](SECURITY.md), [`C
| [`CHANGELOG.md`](CHANGELOG.md) | Modifiche rilevanti |
| [Zlang][1] | Compilatore e linguaggio |
| [Profilo ZLB2 v2.5][2] | Contratto bytecode x86_64 |
| [ZDOS-SEC Portal][3] | Repository separato del portale SEC |

## Licenza

Expand All @@ -512,4 +523,3 @@ Questo progetto è distribuito secondo la licenza indicata in [`LICENSE`](LICENS

[1]: https://github.com/high-cde/Zlang "Repository Zlang"
[2]: https://github.com/high-cde/Zlang/blob/main/docs/zdos-x86_64-profile.md "Profilo ZLB2 v2.5 per ZDOS x86_64"
[3]: https://github.com/high-cde/ZDOS-SEC-PORTAL "ZDOS-SEC Portal"
4 changes: 2 additions & 2 deletions docs/ECOSYSTEM.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

## Missione

ZDOS riunisce una base operativa Linux, un laboratorio bare-metal, il runtime Zlang e strumenti di osservabilità e sviluppo. I repository non sono equivalenti: alcuni sono percorsi verificati, altri sono superfici sperimentali. Questa distinzione rende la documentazione credibile e impedisce di confondere una demo con una capacità di produzione.
ZDOS riunisce una base operativa Linux, un laboratorio bare-metal, il runtime Zlang e un organismo residente bounded. La struttura è intenzionalmente minima: ZDOS coordina, Zlang definisce il contratto e `zdos-organism` esegue soltanto il ciclo locale dichiarato. Questa distinzione rende la documentazione credibile e impedisce di confondere una demo con una capacità di produzione.

## Repository e responsabilità

| Repository | Ruolo | Contratto principale | Evidenza attuale |
|---|---|---|---|
| [ZDOS](https://github.com/high-cde/ZDOS) | Kernel sperimentale, distro Linux e orchestrazione dell’ecosistema | Boot, init, runtime, CI e documentazione | ISO Linux live e boot bare-metal QEMU |
| [Zlang](https://github.com/high-cde/Zlang) | Compilatore e specifica del linguaggio | ZLB2 v2.5: record `EMIT`, `LET`, `IF`, `LABEL`, `WAIT`, lunghezze e `HALT` bounds-checked | Test del compilatore e integrazione ZDOS |
| [ZDOS-SEC-PORTAL](https://github.com/high-cde/ZDOS-SEC-PORTAL) | HUD web, feed, ledger locale e stream terminale | API JSON e messaggi Socket.IO | Server Express avviabile e interfaccia HUD |
| `zdos-organism` | Runtime residente sperimentale | Tick Zlang/ZVM con guardia `default-deny` | Verifiche Rust dichiarate nel catalogo |

## Flusso verificato

Expand Down
21 changes: 10 additions & 11 deletions docs/MICROCOSM.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ZDOS Connected Microcosm

Il **micro-mondo connesso** integra nel repository ZDOS il modello di coordinamento di ZDOS Lab senza creare un nuovo mirror autorevole. ZDOS rimane il nucleo che costruisce, avvia, testa e attesta; il catalogo dichiara le altre fonti primarie e rende visibile lo stato reale di ogni collegamento.
Il **micro-mondo connesso** è un perimetro source-first e minimale composto da ZDOS, Zlang e `zdos-organism`. ZDOS rimane il nucleo che costruisce, avvia, testa e attesta; il catalogo dichiara le sole fonti primarie necessarie e rende visibile lo stato reale di ogni collegamento.

> La connessione non è una promessa generica: è una relazione dichiarata tra repository, comandi, prove osservabili e criteri di promozione.

Expand All @@ -11,15 +11,11 @@ flowchart LR
ZD[ZDOS: build, QEMU, Evidence Chain]
ZL[Zlang: compilatore e ZLB2]
ORG[zdos-organism: runtime locale]
SEC[ZDOS-SEC-PORTAL: HUD, policy, API]
CY[Z-CYBERCORE: demo difensiva]
PS[Prova ext4 a due boot]
LE[Ledger locale verificabile]

ZL -. checkout adiacente .-> ZD
ORG -. checkout adiacente .-> ZD
SEC -. policy e visualizzazione .-> ZD
CY -. demo separata .-> ZD
ZD --> PS --> LE
ZL --> ZD
```
Expand All @@ -32,8 +28,6 @@ Il catalogo [`microcosm/catalog.json`](../microcosm/catalog.json) è l'unica map
| Persistenza ext4 | Questo repository | **VERIFIED** | Due boot QEMU, clean shutdown, evento attestato e ledger valido. |
| Zlang e ZLB2 | Repository primario adiacente | **VERIFIED** | Checkout pulito e allineato; storage bridge e suite unittest della fonte primaria superati localmente. |
| zdos-organism | Repository primario adiacente | **EXPERIMENTAL** | Richiede le verifiche Rust dichiarate nel catalogo. |
| ZDOS-SEC-PORTAL | Repository primario adiacente | **VERIFIED** | API read-only, health, rifiuto mutazioni, ledger e controlli UI superati localmente; deployment pubblico escluso. |
| Z-CYBERCORE | Repository primario adiacente | **EXPERIMENTAL** | Resta limitato a compilazione e simulazioni difensive locali. |

## Prova principale: persistenza attestata

Expand Down Expand Up @@ -81,12 +75,17 @@ Il micro-mondo assume checkout adiacenti, non copie interne alla tree ZDOS. È u
workspace/
├── ZDOS/ # nucleo e orchestratore del micro-mondo
├── Zlang/ # opzionale: fonte primaria
├── zdos-organism/ # opzionale: fonte primaria
├── ZDOS-SEC-PORTAL/ # opzionale: fonte primaria
└── Z-CYBERCORE/ # opzionale: fonte primaria
└── zdos-organism/ # opzionale: fonte primaria
```

Quando manca un componente esterno, `inspect` lo segnala come assente e il relativo collegamento resta **PREPARED** o **EXPERIMENTAL**. In questa verifica Zlang e SEC Portal sono presenti, puliti, allineati e promossi a **VERIFIED** nel rispettivo perimetro locale; le prove locali di ZDOS non vengono per questo gonfiate né invalidate.
Il micro-mondo operativo è limitato a tre componenti. Questa scelta riduce la superficie di sincronizzazione, evita dipendenze fantasma e rende il gate riproducibile anche senza servizi web esterni.

| Regola di struttura | Applicazione |
|---|---|
| Una fonte autorevole | ZDOS coordina build, boot, Evidence Chain e promozione |
| Una toolchain dichiarata | Zlang viene fissato come checkout adiacente e verificato |
| Un runtime bounded | `zdos-organism` opera con `default-deny` e capability esplicite |
| Nessuna integrazione fantasma | Componenti rimossi non compaiono in catalogo, workflow o sync |

## Criterio di promozione

Expand Down
32 changes: 1 addition & 31 deletions microcosm/catalog.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema": "zdos-microcosm/v1",
"name": "ZDOS Connected Microcosm",
"description": "Un perimetro locale e source-first che collega ZDOS, Zlang, Evidence Chain e superfici operative senza trasformare i mirror in fonti primarie.",
"description": "Un perimetro locale, source-first e minimale che collega soltanto ZDOS, Zlang, zdos-organism ed Evidence Chain.",
"owner": "high-cde",
"policy": "default-deny",
"source_of_truth": "official-repositories",
Expand Down Expand Up @@ -50,36 +50,6 @@
"cargo test",
"cargo run -- --once"
]
},
{
"id": "zdos-sec-portal",
"name": "ZDOS-SEC-PORTAL",
"role": "HUD operativo, API locale, policy e spazio di lavoro delle evidenze",
"remote": "https://github.com/high-cde/ZDOS-SEC-PORTAL.git",
"local_path": "ZDOS-SEC-PORTAL",
"authority": "external-primary",
"status": "VERIFIED",
"verified_scope": "Checkout adiacente pulito e allineato a origin/main; API read-only, health, rifiuto delle mutazioni, ledger vuoto e controlli UI superati localmente. Nessun deployment pubblico viene dichiarato verificato.",
"checks": [
"health endpoint",
"authentication test",
"input validation test",
"ledger verification"
]
},
{
"id": "z-cybercore",
"name": "Z-CYBERCORE",
"role": "componente dimostrativo di sicurezza difensiva e simulata",
"remote": "https://github.com/high-cde/Z-CYBERCORE.git",
"local_path": "Z-CYBERCORE",
"authority": "external-primary",
"status": "EXPERIMENTAL",
"verified_scope": "Compilazione Rust e simulazioni locali; non è un componente offensivo operativo.",
"checks": [
"cargo build --locked",
"cargo test"
]
}
],
"flows": [
Expand Down
8 changes: 3 additions & 5 deletions scripts/autobuild-zdos-sites.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
set -Eeuo pipefail

XZDOS_ROOT="${XZDOS_ROOT:-/var/www/x-zdos.it/public}"
SEC_ROOT="${SEC_ROOT:-/var/www/zdos-sec.it/public}"
RELOAD_WEB="${RELOAD_WEB:-0}"
STAMP="$(date -u +%Y%m%dT%H%M%SZ)"

mkdir -p "$XZDOS_ROOT" "$SEC_ROOT"
mkdir -p "$XZDOS_ROOT"

backup_index() {
local root="$1"
Expand Down Expand Up @@ -96,8 +95,7 @@ write_site() {
HTML
}

write_site "$XZDOS_ROOT" "x-zdos.it" "X-ZDOS" "PUBLIC EDGE / X-ZDOS" "Il sistema che puoi osservare." "Un punto di ingresso pubblico all’ecosistema ZDOS: tecnologia, runtime Zlang, distribuzione e percorso di evidenza raccontati senza promesse non dimostrate." "ESPLORA L’ECOSISTEMA" "https://github.com/high-cde/ZDOS" "LEGGI EVIDENCE CHAIN" "https://github.com/high-cde/ZDOS-SEC-PORTAL" "PUBLIC LANDING" "ZDOS Linux" "Una distribuzione x86_64 in evoluzione, con build ISO, initramfs e bootstrap operativo." "Zlang / ZLB2" "Il linguaggio e il runtime che definiscono il contratto bytecode v2.5." "Provenance" "Build, boot e ledger vengono collegati come eventi osservabili." "Roadmap" "Installer, package provenance e aggiornamenti atomici restano obiettivi espliciti."
write_site "$SEC_ROOT" "zdos-sec.it" "ZDOS-SEC" "SEC OPERATIONS / ZDOS-SEC" "Observe the system. Prove the path." "Una console operativa per osservare feed, pipeline ZLB2, boot QEMU ed Evidence Chain con una trust boundary dichiarata." "APRI CONTROL CENTER" "https://github.com/high-cde/ZDOS-SEC-PORTAL" "VEDI IL CODICE" "https://github.com/high-cde/ZDOS" "OPERATIONAL HUD" "Control Center" "Dashboard, status panel, terminale e navigazione laterale in una singola interfaccia Secure Neon." "ZLB2 Pipeline" "Compilazione locale, streaming Socket.IO e collegamento al checkout ZDOS configurato." "Evidence Chain" "Ledger locale, record append-only e aggiornamento live tramite API e Socket.IO." "Trust boundary" "Il portale osserva i risultati; non sostituisce audit indipendenti o attestazioni esterne."
write_site "$XZDOS_ROOT" "x-zdos.it" "X-ZDOS" "PUBLIC EDGE / X-ZDOS" "Il sistema che puoi osservare." "Un punto di ingresso pubblico all’ecosistema ZDOS: tecnologia, runtime Zlang, distribuzione e percorso di evidenza raccontati senza promesse non dimostrate." "ESPLORA L’ECOSISTEMA" "https://github.com/high-cde/ZDOS" "LEGGI EVIDENCE CHAIN" "https://github.com/high-cde/ZDOS" "PUBLIC LANDING" "ZDOS Linux" "Una distribuzione x86_64 in evoluzione, con build ISO, initramfs e bootstrap operativo." "Zlang / ZLB2" "Il linguaggio e il runtime che definiscono il contratto bytecode v2.5." "Provenance" "Build, boot e ledger vengono collegati come eventi osservabili." "Roadmap" "Installer, package provenance e aggiornamenti atomici restano obiettivi espliciti."

if command -v nginx >/dev/null 2>&1; then
nginx -t
Expand All @@ -115,4 +113,4 @@ else
echo "[ZDOS] Nessun nginx/apache rilevato: file generati, reload non eseguito."
fi

printf '\n[ZDOS] Build completata.\n[ZDOS] x-zdos.it -> %s/index.html\n[ZDOS] zdos-sec.it -> %s/index.html\n[ZDOS] Backup timestamp -> %s\n' "$XZDOS_ROOT" "$SEC_ROOT" "$STAMP"
printf '\n[ZDOS] Build completata.\n[ZDOS] x-zdos.it -> %s/index.html\n[ZDOS] Backup timestamp -> %s\n' "$XZDOS_ROOT" "$STAMP"
20 changes: 5 additions & 15 deletions scripts/sync-ecosystem.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,18 @@ set -Eeuo pipefail

ROOT=${ZDOS_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}
ZLANG_ROOT=${ZLANG_ROOT:-"$ROOT/../Zlang"}
SEC_ROOT=${SEC_ROOT:-"$ROOT/../ZDOS-SEC-PORTAL"}
BRANCH=${BRANCH:-main}

say() { printf '\n==> %s\n' "$*"; }
fail() { printf '\nERROR: %s\n' "$*" >&2; exit 1; }

for repo in "$ROOT" "$ZLANG_ROOT" "$SEC_ROOT"; do
for repo in "$ROOT" "$ZLANG_ROOT"; do
[ -d "$repo/.git" ] || fail "repository mancante: $repo"
dirty=$(git -C "$repo" status --porcelain | grep -v -E '^\?\? scripts/sync-ecosystem\.sh$' || true)
[ -z "$dirty" ] || fail "working tree non pulito: $repo"
git -C "$repo" fetch origin "$BRANCH" --quiet
git -C "$repo" pull --ff-only origin "$BRANCH" --quiet
done
done

say "Verifica Zlang"
if [ -f "$ZLANG_ROOT/Cargo.toml" ]; then
Expand Down Expand Up @@ -48,22 +47,13 @@ if [ -x "$ROOT/scripts/bootstrap-evidence-chain.sh" ]; then
(cd "$ROOT" && ./scripts/bootstrap-evidence-chain.sh)
fi

say "Verifica ZDOS-SEC-PORTAL"
if [ -f "$SEC_ROOT/package-lock.json" ]; then
(cd "$SEC_ROOT" && npm ci --ignore-scripts)
fi
if [ -f "$SEC_ROOT/server.js" ]; then
node --check "$SEC_ROOT/server.js"
fi

say "Controlli documentali e stato repository"
for repo in "$ROOT" "$ZLANG_ROOT" "$SEC_ROOT"; do
for repo in "$ROOT" "$ZLANG_ROOT"; do
git -C "$repo" diff --check
printf '%s %s\n' "$(basename "$repo")" "$(git -C "$repo" rev-parse --short HEAD)"
done

say "Sincronizzazione completata"
printf 'ZDOS=%s\nZLANG=%s\nZDOS_SEC_PORTAL=%s\n' \
printf 'ZDOS=%s\nZLANG=%s\n' \
"$(git -C "$ROOT" rev-parse HEAD)" \
"$(git -C "$ZLANG_ROOT" rev-parse HEAD)" \
"$(git -C "$SEC_ROOT" rev-parse HEAD)"
"$(git -C "$ZLANG_ROOT" rev-parse HEAD)"
2 changes: 1 addition & 1 deletion services/organism-runtime.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
},
"guards": {
"policy": "default-deny",
"cybercore_mode": "fail-closed-adapter",
"external_adapter": "not-configured",
"allowed_operations": ["observe", "zlang.read", "evidence.append"],
"forbidden_operations": ["shell", "network", "exec", "write-node", "delete", "credential-access"],
"human_approval_required": ["node-change", "external-action", "policy-change"]
Expand Down
Loading