From 07ccd484f175aee74a2b40fe39581d249c9678bc Mon Sep 17 00:00:00 2001 From: Markus Maiwald Date: Thu, 5 Feb 2026 20:12:32 +0100 Subject: [PATCH] refactor: restructure repository with tiered licensing Major restructuring of libertaria-sdk -> libertaria-stack: FOLDER REORGANIZATION: - core/ - L0-L3 layers (Commonwealth LCL-1.0) - l0-transport/ - l1-identity/ - l2_session/ - l2-federation/ - l2-membrane/ - sdk/ - L4+ and bindings (Sovereign LSL-1.0) - janus-sdk/ - l4-feed/ - apps/ - Examples (Unbound LUL-1.0) - examples/ - legal/ - All license texts LICENSES ADDED: - LICENSE_COMMONWEALTH.md (LCL-1.0) - Viral reciprocity for Core - LICENSE_SOVEREIGN.md (LSL-1.0) - Business-friendly for SDK - LICENSE_UNBOUND.md (LUL-1.0) - Maximum freedom for docs/apps BUILD.ZIG UPDATED: - All paths updated to new structure - Examples imports fixed README.md REWRITTEN: - Documents new folder structure - Explains tiered licensing strategy - Clear SPDX identifiers per component NO CLA REQUIRED - contributors keep copyright --- README.md | 194 +++--- apps/LICENSE | 4 + .../examples}/crypto_example.zig | 2 +- {examples => apps/examples}/lwf_example.zig | 2 +- build.zig | 70 +- build.zig.backup | 638 ++++++++++++++++++ core/LICENSE | 4 + {l0-transport => core/l0-transport}/README.md | 0 {l0-transport => core/l0-transport}/dht.zig | 6 + .../l0-transport}/gateway.zig | 6 + .../l0-transport}/ipc/client.zig | 0 {l0-transport => core/l0-transport}/lwf.zig | 6 + .../l0-transport}/mimic_dns.zig | 6 + .../l0-transport}/mimic_https.zig | 6 + .../l0-transport}/mimic_quic.zig | 6 + {l0-transport => core/l0-transport}/mod.zig | 6 + {l0-transport => core/l0-transport}/noise.zig | 6 + {l0-transport => core/l0-transport}/opq.zig | 6 + .../l0-transport}/opq/README.md | 0 .../l0-transport}/opq/manager.zig | 0 .../l0-transport}/opq/manifest.zig | 0 .../l0-transport}/opq/merkle.zig | 0 .../l0-transport}/opq/quota.zig | 0 .../l0-transport}/opq/reorder_buffer.zig | 0 .../l0-transport}/opq/sequencer.zig | 0 .../l0-transport}/opq/store.zig | 0 .../l0-transport}/opq/trust_resolver.zig | 0 {l0-transport => core/l0-transport}/png.zig | 6 + .../l0-transport}/quarantine.zig | 6 + {l0-transport => core/l0-transport}/relay.zig | 6 + .../l0-transport}/service.zig | 6 + {l0-transport => core/l0-transport}/time.zig | 6 + .../l0-transport}/transport_skins.zig | 6 + core/l0-transport/utcp.zig | 9 + .../l0-transport}/utcp/README.md | 0 .../l0-transport}/utcp/socket.zig | 0 .../l0-transport}/utcp/test_socket.zig | 0 {l1-identity => core/l1-identity}/README.md | 0 {l1-identity => core/l1-identity}/argon2.zig | 0 {l1-identity => core/l1-identity}/crypto.zig | 0 {l1-identity => core/l1-identity}/did.zig | 0 {l1-identity => core/l1-identity}/entropy.zig | 0 {l1-identity => core/l1-identity}/mod.zig | 0 {l1-identity => core/l1-identity}/pqxdh.zig | 0 {l1-identity => core/l1-identity}/prekey.zig | 0 .../l1-identity}/proof_of_path.zig | 0 {l1-identity => core/l1-identity}/qvl.h | 0 {l1-identity => core/l1-identity}/qvl.zig | 0 .../l1-identity}/qvl/betrayal.zig | 0 {l1-identity => core/l1-identity}/qvl/feed.md | 0 .../l1-identity}/qvl/feed.zig | 0 .../l1-identity}/qvl/gossip.zig | 0 {l1-identity => core/l1-identity}/qvl/gql.zig | 0 .../l1-identity}/qvl/gql/ast.zig | 0 .../l1-identity}/qvl/gql/codegen.zig | 0 .../l1-identity}/qvl/gql/lexer.zig | 0 .../l1-identity}/qvl/gql/parser.zig | 0 .../l1-identity}/qvl/inference.zig | 0 .../l1-identity}/qvl/integration.zig | 0 .../l1-identity}/qvl/pathfinding.zig | 0 .../l1-identity}/qvl/pop_integration.zig | 0 .../l1-identity}/qvl/storage.zig | 0 .../l1-identity}/qvl/types.zig | 0 {l1-identity => core/l1-identity}/qvl_ffi.zig | 0 {l1-identity => core/l1-identity}/slash.zig | 0 {l1-identity => core/l1-identity}/soulkey.zig | 0 .../l1-identity}/test_pqxdh.zig | 0 .../l1-identity}/test_qvl_ffi.c | 0 .../l1-identity}/trust_graph.zig | 0 {l1-identity => core/l1-identity}/vector.zig | 0 .../l1-membrane}/monetary_controller.zig | 0 .../l2-federation}/bridge.zig | 0 {l2-membrane => core/l2-membrane}/policy.zig | 0 {l2_session => core/l2_session}/README.md | 0 {l2_session => core/l2_session}/SPEC.md | 0 {l2_session => core/l2_session}/config.zig | 0 {l2_session => core/l2_session}/error.zig | 0 {l2_session => core/l2_session}/handshake.zig | 0 {l2_session => core/l2_session}/heartbeat.zig | 0 {l2_session => core/l2_session}/mod.zig | 0 {l2_session => core/l2_session}/rotation.zig | 0 {l2_session => core/l2_session}/session.zig | 0 {l2_session => core/l2_session}/state.zig | 0 .../l2_session}/test_session.zig | 0 .../l2_session}/test_state.zig | 0 {l2_session => core/l2_session}/transport.zig | 0 l0-transport/utcp.zig | 3 - legal/LICENSE_COMMONWEALTH.md | 31 + legal/LICENSE_SOVEREIGN.md | 29 + legal/LICENSE_UNBOUND.md | 33 + sdk/LICENSE | 4 + {janus-sdk => sdk/janus-sdk}/README.md | 0 .../janus-sdk}/libertaria/context.jan | 0 .../janus-sdk}/libertaria/identity.jan | 0 .../janus-sdk}/libertaria/lib.jan | 0 .../janus-sdk}/libertaria/memory.jan | 0 .../janus-sdk}/libertaria/message.jan | 0 {l4-feed => sdk/l4-feed}/duckdb.zig | 0 {l4-feed => sdk/l4-feed}/feed.zig | 0 99 files changed, 992 insertions(+), 121 deletions(-) create mode 100644 apps/LICENSE rename {examples => apps/examples}/crypto_example.zig (98%) rename {examples => apps/examples}/lwf_example.zig (98%) create mode 100644 build.zig.backup create mode 100644 core/LICENSE rename {l0-transport => core/l0-transport}/README.md (100%) rename {l0-transport => core/l0-transport}/dht.zig (96%) rename {l0-transport => core/l0-transport}/gateway.zig (94%) rename {l0-transport => core/l0-transport}/ipc/client.zig (100%) rename {l0-transport => core/l0-transport}/lwf.zig (98%) rename {l0-transport => core/l0-transport}/mimic_dns.zig (98%) rename {l0-transport => core/l0-transport}/mimic_https.zig (98%) rename {l0-transport => core/l0-transport}/mimic_quic.zig (98%) rename {l0-transport => core/l0-transport}/mod.zig (82%) rename {l0-transport => core/l0-transport}/noise.zig (98%) rename {l0-transport => core/l0-transport}/opq.zig (77%) rename {l0-transport => core/l0-transport}/opq/README.md (100%) rename {l0-transport => core/l0-transport}/opq/manager.zig (100%) rename {l0-transport => core/l0-transport}/opq/manifest.zig (100%) rename {l0-transport => core/l0-transport}/opq/merkle.zig (100%) rename {l0-transport => core/l0-transport}/opq/quota.zig (100%) rename {l0-transport => core/l0-transport}/opq/reorder_buffer.zig (100%) rename {l0-transport => core/l0-transport}/opq/sequencer.zig (100%) rename {l0-transport => core/l0-transport}/opq/store.zig (100%) rename {l0-transport => core/l0-transport}/opq/trust_resolver.zig (100%) rename {l0-transport => core/l0-transport}/png.zig (98%) rename {l0-transport => core/l0-transport}/quarantine.zig (94%) rename {l0-transport => core/l0-transport}/relay.zig (97%) rename {l0-transport => core/l0-transport}/service.zig (94%) rename {l0-transport => core/l0-transport}/time.zig (99%) rename {l0-transport => core/l0-transport}/transport_skins.zig (97%) create mode 100644 core/l0-transport/utcp.zig rename {l0-transport => core/l0-transport}/utcp/README.md (100%) rename {l0-transport => core/l0-transport}/utcp/socket.zig (100%) rename {l0-transport => core/l0-transport}/utcp/test_socket.zig (100%) rename {l1-identity => core/l1-identity}/README.md (100%) rename {l1-identity => core/l1-identity}/argon2.zig (100%) rename {l1-identity => core/l1-identity}/crypto.zig (100%) rename {l1-identity => core/l1-identity}/did.zig (100%) rename {l1-identity => core/l1-identity}/entropy.zig (100%) rename {l1-identity => core/l1-identity}/mod.zig (100%) rename {l1-identity => core/l1-identity}/pqxdh.zig (100%) rename {l1-identity => core/l1-identity}/prekey.zig (100%) rename {l1-identity => core/l1-identity}/proof_of_path.zig (100%) rename {l1-identity => core/l1-identity}/qvl.h (100%) rename {l1-identity => core/l1-identity}/qvl.zig (100%) rename {l1-identity => core/l1-identity}/qvl/betrayal.zig (100%) rename {l1-identity => core/l1-identity}/qvl/feed.md (100%) rename {l1-identity => core/l1-identity}/qvl/feed.zig (100%) rename {l1-identity => core/l1-identity}/qvl/gossip.zig (100%) rename {l1-identity => core/l1-identity}/qvl/gql.zig (100%) rename {l1-identity => core/l1-identity}/qvl/gql/ast.zig (100%) rename {l1-identity => core/l1-identity}/qvl/gql/codegen.zig (100%) rename {l1-identity => core/l1-identity}/qvl/gql/lexer.zig (100%) rename {l1-identity => core/l1-identity}/qvl/gql/parser.zig (100%) rename {l1-identity => core/l1-identity}/qvl/inference.zig (100%) rename {l1-identity => core/l1-identity}/qvl/integration.zig (100%) rename {l1-identity => core/l1-identity}/qvl/pathfinding.zig (100%) rename {l1-identity => core/l1-identity}/qvl/pop_integration.zig (100%) rename {l1-identity => core/l1-identity}/qvl/storage.zig (100%) rename {l1-identity => core/l1-identity}/qvl/types.zig (100%) rename {l1-identity => core/l1-identity}/qvl_ffi.zig (100%) rename {l1-identity => core/l1-identity}/slash.zig (100%) rename {l1-identity => core/l1-identity}/soulkey.zig (100%) rename {l1-identity => core/l1-identity}/test_pqxdh.zig (100%) rename {l1-identity => core/l1-identity}/test_qvl_ffi.c (100%) rename {l1-identity => core/l1-identity}/trust_graph.zig (100%) rename {l1-identity => core/l1-identity}/vector.zig (100%) rename {l1-membrane => core/l1-membrane}/monetary_controller.zig (100%) rename {l2-federation => core/l2-federation}/bridge.zig (100%) rename {l2-membrane => core/l2-membrane}/policy.zig (100%) rename {l2_session => core/l2_session}/README.md (100%) rename {l2_session => core/l2_session}/SPEC.md (100%) rename {l2_session => core/l2_session}/config.zig (100%) rename {l2_session => core/l2_session}/error.zig (100%) rename {l2_session => core/l2_session}/handshake.zig (100%) rename {l2_session => core/l2_session}/heartbeat.zig (100%) rename {l2_session => core/l2_session}/mod.zig (100%) rename {l2_session => core/l2_session}/rotation.zig (100%) rename {l2_session => core/l2_session}/session.zig (100%) rename {l2_session => core/l2_session}/state.zig (100%) rename {l2_session => core/l2_session}/test_session.zig (100%) rename {l2_session => core/l2_session}/test_state.zig (100%) rename {l2_session => core/l2_session}/transport.zig (100%) delete mode 100644 l0-transport/utcp.zig create mode 100644 legal/LICENSE_COMMONWEALTH.md create mode 100644 legal/LICENSE_SOVEREIGN.md create mode 100644 legal/LICENSE_UNBOUND.md create mode 100644 sdk/LICENSE rename {janus-sdk => sdk/janus-sdk}/README.md (100%) rename {janus-sdk => sdk/janus-sdk}/libertaria/context.jan (100%) rename {janus-sdk => sdk/janus-sdk}/libertaria/identity.jan (100%) rename {janus-sdk => sdk/janus-sdk}/libertaria/lib.jan (100%) rename {janus-sdk => sdk/janus-sdk}/libertaria/memory.jan (100%) rename {janus-sdk => sdk/janus-sdk}/libertaria/message.jan (100%) rename {l4-feed => sdk/l4-feed}/duckdb.zig (100%) rename {l4-feed => sdk/l4-feed}/feed.zig (100%) diff --git a/README.md b/README.md index 0e6a93e..d4a6b33 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ -# Libertaria SDK +# Libertaria Stack > Sovereign Infrastructure for Autonomous Agents [![Website](https://img.shields.io/badge/🌐_Website-libertaria.app-red)](https://libertaria.app) -[![Tests](https://img.shields.io/badge/tests-166%2F166%20passing-success)](https://github.com/MarkusMaiwald/libertaria-sdk) +[![Tests](https://img.shields.io/badge/tests-166%2F166%20passing-success)](https://github.com/MarkusMaiwald/libertaria-stack) [![Zig](https://img.shields.io/badge/Zig-0.15.2-orange.svg)](https://ziglang.org) -[![License](https://img.shields.io/badge/license-MIT%20%2B%20Commons%20Clause-blue)](LICENSE) +[![License](https://img.shields.io/badge/Core-LCL--1.0_Community-red)](#licensing) +[![License](https://img.shields.io/badge/SDK-LSL--1.0_Sovereign-gold)](#licensing) **Sovereign; Kinetic; Anti-Fragile.** @@ -52,13 +53,64 @@ Cryptographic proof, not platform promises. Reputation graphs, not follower coun **11. Code is Speech, Exit is Voice** We defend the right to build, to experiment, to fork, and to leave. Technology is a tool of liberation β€” never of control. -### This SDK +--- -This repository implements the **L1 Identity Layer** with: -- Ed25519 sovereign identities with rotation/burn -- Trust Graph (QVL) with betrayal detection -- GQL (ISO/IEC 39075:2024 compliant) query interface -- Persistent storage with Kenya Rule compliance +## Repository Structure + +``` +libertaria-stack/ +β”œβ”€β”€ legal/ # License texts +β”‚ β”œβ”€β”€ LICENSE_COMMONWEALTH.md # LCL-1.0 (Core) +β”‚ β”œβ”€β”€ LICENSE_SOVEREIGN.md # LSL-1.0 (SDK) +β”‚ └── LICENSE_UNBOUND.md # LUL-1.0 (Docs/Apps) +β”‚ +β”œβ”€β”€ core/ # ⬇️ LCL-1.0 Commonwealth +β”‚ β”œβ”€β”€ l0-transport/ # Transport layer (MIMIC, Noise, PNG) +β”‚ β”œβ”€β”€ l1-identity/ # Identity layer (DID, QVL, Crypto) +β”‚ β”œβ”€β”€ l2_session/ # Session management +β”‚ β”œβ”€β”€ l2-federation/ # Cross-chain bridging +β”‚ β”œβ”€β”€ l2-membrane/ # Policy enforcement +β”‚ └── LICENSE # Points to LCL-1.0 +β”‚ +β”œβ”€β”€ sdk/ # ⬇️ LSL-1.0 Sovereign +β”‚ β”œβ”€β”€ janus-sdk/ # Language bindings +β”‚ β”œβ”€β”€ l4-feed/ # Temporal event store +β”‚ └── LICENSE # Points to LSL-1.0 +β”‚ +β”œβ”€β”€ apps/ # ⬇️ LUL-1.0 Unbound +β”‚ └── examples/ # Example applications +β”‚ └── LICENSE # Points to LUL-1.0 +β”‚ +β”œβ”€β”€ docs/ # ⬇️ LUL-1.0 Unbound +β”‚ β”œβ”€β”€ rfcs/ # RFC specifications +β”‚ └── specs/ # Technical specifications +β”‚ +β”œβ”€β”€ tests/ # ⬇️ LCL-1.0 (belongs to Core) +β”‚ +└── build.zig # Build configuration +``` + +--- + +## Licensing + +Libertaria uses a **tiered licensing strategy** to balance community ownership with business adoption: + +| Component | License | Description | +|:----------|:--------|:------------| +| **Core (L0-L3)** | [LCL-1.0 Commonwealth](legal/LICENSE_COMMONWEALTH.md) | **Viral reciprocity.** Modifications must be shared. SaaS loophole closed. Patent disarmament. | +| **SDK (L4+)** | [LSL-1.0 Sovereign](legal/LICENSE_SOVEREIGN.md) | **Business-friendly.** File-level reciprocity. Build proprietary apps on top. Patent peace. | +| **Docs/Examples** | [LUL-1.0 Unbound](legal/LICENSE_UNBOUND.md) | **Maximum freedom.** Attribution only. Spread the ideas. | + +### Why Tiered Licensing? + +- **Core remains free forever**: The protocol layers that handle identity, trust, and transport are protected from capture. No company can privatize them. +- **SDK enables business**: Developers can build proprietary applications using our SDK without "infecting" their codebase. +- **Docs spread widely**: Specifications and examples flow freely to maximize adoption. + +### No CLA Required + +We don't demand copyright assignment. Your contributions remain yours. The licenses ensure reciprocity without requiring you to "sign your soul away." --- @@ -66,8 +118,8 @@ This repository implements the **L1 Identity Layer** with: ```bash # Clone -git clone https://github.com/MarkusMaiwald/libertaria-sdk.git -cd libertaria-sdk +git clone https://github.com/MarkusMaiwald/libertaria-stack.git +cd libertaria-stack # Build zig build @@ -80,70 +132,45 @@ zig build test ## Architecture -``` -β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” -β”‚ Application Layer β”‚ -β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ -β”‚ Libertaria SDK β”‚ -β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ -β”‚ β”‚ Identity β”‚ β”‚ Trust Graph β”‚ β”‚ GQL β”‚ β”‚ -β”‚ β”‚ (identity) β”‚ β”‚ (qvl) β”‚ β”‚ (gql/*.zig) β”‚ β”‚ -β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ -β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ -β”‚ Janus Standard Library β”‚ -β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ -β”‚ Janus Compiler (:service) β”‚ -β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ -``` +### The Four Layers + +**L0: Transport** β€” Stealth protocols that evade censorship +- MIMIC skins (HTTPS, DNS, QUIC camouflage) +- Noise Protocol Framework (Signal/WireGuard crypto) +- Polymorphic Noise Generator (traffic shaping) + +**L1: Identity** β€” Self-sovereign cryptographic identity +- Ed25519 with rotation/burn +- QVL Trust Graph (betrayal detection) +- Verifiable Credentials (DID/VC) + +**L2: Session** β€” Resilient peer-to-peer connections +- Post-quantum secure handshakes +- Cross-planetary delay tolerance +- Exit-first governance + +**L3: Governance** β€” Federated coordination +- Chapter-based organization +- Right to fork at any level +- No global consensus required --- -## Modules +## Core Components -### Identity (`l1-identity/`) -- `crypto.zig` β€” Ed25519 signatures, key rotation +### L0 Transport (`core/l0-transport/`) +- `mod.zig` β€” Public API exports +- `noise.zig` β€” Noise Protocol Framework (X25519, ChaCha20-Poly1305) +- `png.zig` β€” Polymorphic Noise Generator +- `transport_skins.zig` β€” MIMIC camouflage framework +- `mimic_*.zig` β€” Protocol-specific skins (HTTPS, DNS, QUIC) + +### L1 Identity (`core/l1-identity/`) +- `mod.zig` β€” Public API exports +- `crypto.zig` β€” Ed25519 signatures - `did.zig` β€” Decentralized identifiers -- `soulkey.zig` β€” Deterministic key derivation -- `entropy.zig` β€” Sovereign randomness - -### QVL β€” Quasar Vector Lattice (`l1-identity/qvl/`) -- `storage.zig` β€” PersistentGraph with libmdbx -- `betrayal.zig` β€” Bellman-Ford negative cycle detection -- `pathfinding.zig` β€” A* trust path discovery -- `feed.zig` β€” L4 temporal event store (DuckDB + LanceDB) -- `gql/` β€” ISO/IEC 39075:2024 Graph Query Language - - `lexer.zig` β€” Tokenizer - - `parser.zig` β€” Recursive descent parser - - `ast.zig` β€” Abstract syntax tree - - `codegen.zig` β€” GQL β†’ Zig transpiler - ---- - -## GQL Example - -```zig -const gql = @import("qvl").gql; - -// Parse GQL query -const query_str = "MATCH (n:Identity)-[t:TRUST]->(m) WHERE n.did = 'alice' RETURN m"; -var query = try gql.parse(allocator, query_str); -defer query.deinit(); - -// Transpile to Zig code -const zig_code = try gql.generateZig(allocator, query); -defer allocator.free(zig_code); -``` - ---- - -## Kenya Compliance - -| Metric | Target | Status | -|--------|--------|--------| -| Binary Size (L1) | < 200KB | βœ… 85KB | -| Memory Usage | < 10MB | βœ… ~5MB | -| Storage | Single-file | βœ… libmdbx | -| Cloud Calls | None | βœ… Offline-capable | +- `qvl.zig` β€” Trust Graph engine +- `qvl/` β€” QVL submodules (storage, gossip, pathfinding) --- @@ -153,20 +180,26 @@ defer allocator.free(zig_code); # All tests zig build test -# Specific module -zig test l1-identity/qvl/gql/lexer.zig -zig test l1-identity/qvl/storage.zig +# Core tests only +zig test core/l0-transport/noise.zig +zig test core/l1-identity/qvl/storage.zig + +# SDK tests +zig test sdk/l4-feed/feed.zig ``` **Current Status:** 166/166 tests passing βœ… --- -## Related Projects +## Kenya Compliance -- [Janus Language](https://github.com/janus-lang/janus) β€” The foundation -- [libertaria.blog](https://github.com/MarkusMaiwald/libertaria-blog) β€” This project's blog -- [libertaria.bot](https://github.com/MarkusMaiwald/libertaria-bot) β€” Agent marketplace (coming soon) +| Metric | Target | Status | +|:-------|:-------|:-------| +| Binary Size (L0-L1) | < 200KB | βœ… 85KB | +| Memory Usage | < 10MB | βœ… ~5MB | +| Storage | Single-file | βœ… libmdbx | +| Cloud Calls | None | βœ… Offline-capable | --- @@ -183,11 +216,10 @@ zig test l1-identity/qvl/storage.zig --- -## License +## Related Projects -MIT License + Libertaria Commons Clause - -See [LICENSE](LICENSE) for details. +- [libertaria.app](https://libertaria.app) β€” Project website and blog +- [Citadel](https://github.com/MarkusMaiwald/citadel) β€” Validator deployment (Dlabs) --- diff --git a/apps/LICENSE b/apps/LICENSE new file mode 100644 index 0000000..553ae3c --- /dev/null +++ b/apps/LICENSE @@ -0,0 +1,4 @@ +This directory is licensed under The Libertaria Unbound License v1.0 (LUL-1.0). +See ../legal/LICENSE_UNBOUND.md for full text. + +SPDX-License-Identifier: LUL-1.0 diff --git a/examples/crypto_example.zig b/apps/examples/crypto_example.zig similarity index 98% rename from examples/crypto_example.zig rename to apps/examples/crypto_example.zig index d79944e..31890e9 100644 --- a/examples/crypto_example.zig +++ b/apps/examples/crypto_example.zig @@ -3,7 +3,7 @@ //! This demonstrates basic usage of the L1 crypto layer. const std = @import("std"); -const crypto_mod = @import("../l1-identity/crypto.zig"); +const crypto_mod = @import("../../core/l1-identity/crypto.zig"); pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; diff --git a/examples/lwf_example.zig b/apps/examples/lwf_example.zig similarity index 98% rename from examples/lwf_example.zig rename to apps/examples/lwf_example.zig index fee4ace..e3046fd 100644 --- a/examples/lwf_example.zig +++ b/apps/examples/lwf_example.zig @@ -3,7 +3,7 @@ //! This demonstrates basic usage of the L0 transport layer. const std = @import("std"); -const lwf = @import("../l0-transport/lwf.zig"); +const lwf = @import("../../core/l0-transport/lwf.zig"); pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; diff --git a/build.zig b/build.zig index 4454b7b..0e8e649 100644 --- a/build.zig +++ b/build.zig @@ -12,7 +12,7 @@ pub fn build(b: *std.Build) void { // Time Module (L0) // ======================================================================== const time_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/time.zig"), + .root_source_file = b.path("core/l0-transport/time.zig"), .target = target, .optimize = optimize, }); @@ -21,18 +21,18 @@ pub fn build(b: *std.Build) void { // L0: Transport Layer // ======================================================================== const l0_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/mod.zig"), + .root_source_file = b.path("core/l0-transport/mod.zig"), .target = target, .optimize = optimize, }); const ipc_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/ipc/client.zig"), + .root_source_file = b.path("core/l0-transport/ipc/client.zig"), .target = target, .optimize = optimize, }); const utcp_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/utcp/socket.zig"), + .root_source_file = b.path("core/l0-transport/utcp/socket.zig"), .target = target, .optimize = optimize, }); @@ -40,14 +40,14 @@ pub fn build(b: *std.Build) void { utcp_mod.addImport("lwf", l0_mod); const opq_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/opq.zig"), + .root_source_file = b.path("core/l0-transport/opq.zig"), .target = target, .optimize = optimize, }); opq_mod.addImport("lwf", l0_mod); const l0_service_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/service.zig"), + .root_source_file = b.path("core/l0-transport/service.zig"), .target = target, .optimize = optimize, }); @@ -56,53 +56,53 @@ pub fn build(b: *std.Build) void { l0_service_mod.addImport("opq", opq_mod); const dht_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/dht.zig"), + .root_source_file = b.path("core/l0-transport/dht.zig"), .target = target, .optimize = optimize, }); const gateway_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/gateway.zig"), + .root_source_file = b.path("core/l0-transport/gateway.zig"), .target = target, .optimize = optimize, }); gateway_mod.addImport("dht", dht_mod); const relay_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/relay.zig"), + .root_source_file = b.path("core/l0-transport/relay.zig"), .target = target, .optimize = optimize, }); // RFC-0015: Transport Skins (MIMIC_DNS for DPI evasion) const mimic_dns_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/mimic_dns.zig"), + .root_source_file = b.path("core/l0-transport/mimic_dns.zig"), .target = target, .optimize = optimize, }); // RFC-0015: MIMIC_HTTPS with Domain Fronting const mimic_https_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/mimic_https.zig"), + .root_source_file = b.path("core/l0-transport/mimic_https.zig"), .target = target, .optimize = optimize, }); // RFC-0015: MIMIC_QUIC (HTTP/3 over QUIC) const mimic_quic_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/mimic_quic.zig"), + .root_source_file = b.path("core/l0-transport/mimic_quic.zig"), .target = target, .optimize = optimize, }); const bridge_mod = b.createModule(.{ - .root_source_file = b.path("l2-federation/bridge.zig"), + .root_source_file = b.path("core/l2-federation/bridge.zig"), .target = target, .optimize = optimize, }); const l2_policy_mod = b.createModule(.{ - .root_source_file = b.path("l2-membrane/policy.zig"), + .root_source_file = b.path("core/l2-membrane/policy.zig"), .target = target, .optimize = optimize, }); @@ -134,7 +134,7 @@ pub fn build(b: *std.Build) void { // L1: Identity & Crypto Layer // ======================================================================== const l1_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/mod.zig"), + .root_source_file = b.path("core/l1-identity/mod.zig"), .target = target, .optimize = optimize, }); @@ -147,7 +147,7 @@ pub fn build(b: *std.Build) void { // L1 PQXDH Module (Phase 3) - Core Dependency // ======================================================================== const l1_pqxdh_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/pqxdh.zig"), + .root_source_file = b.path("core/l1-identity/pqxdh.zig"), .target = target, .optimize = optimize, }); @@ -162,7 +162,7 @@ pub fn build(b: *std.Build) void { // L1 Modules: SoulKey, Entropy, Prekey (Phase 2B + 2C) // ======================================================================== const l1_soulkey_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/soulkey.zig"), + .root_source_file = b.path("core/l1-identity/soulkey.zig"), .target = target, .optimize = optimize, }); @@ -170,7 +170,7 @@ pub fn build(b: *std.Build) void { l1_soulkey_mod.addImport("pqxdh", l1_pqxdh_mod); const l1_entropy_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/entropy.zig"), + .root_source_file = b.path("core/l1-identity/entropy.zig"), .target = target, .optimize = optimize, }); @@ -179,14 +179,14 @@ pub fn build(b: *std.Build) void { utcp_mod.addImport("entropy", l1_entropy_mod); const l1_prekey_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/prekey.zig"), + .root_source_file = b.path("core/l1-identity/prekey.zig"), .target = target, .optimize = optimize, }); l1_prekey_mod.addImport("pqxdh", l1_pqxdh_mod); const l1_did_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/did.zig"), + .root_source_file = b.path("core/l1-identity/did.zig"), .target = target, .optimize = optimize, }); @@ -196,14 +196,14 @@ pub fn build(b: *std.Build) void { // L1 Slash Protocol & L0 Quarantine // ======================================================================== const l1_slash_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/slash.zig"), + .root_source_file = b.path("core/l1-identity/slash.zig"), .target = target, .optimize = optimize, }); l1_mod.addImport("slash", l1_slash_mod); const l0_quarantine_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/quarantine.zig"), + .root_source_file = b.path("core/l0-transport/quarantine.zig"), .target = target, .optimize = optimize, }); @@ -214,7 +214,7 @@ pub fn build(b: *std.Build) void { // L1 Trust Graph Module (Core Dependency for QVL/PoP) // ======================================================================== const l1_trust_graph_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/trust_graph.zig"), + .root_source_file = b.path("core/l1-identity/trust_graph.zig"), .target = target, .optimize = optimize, }); @@ -225,7 +225,7 @@ pub fn build(b: *std.Build) void { // L1 Proof of Path Module (PoP) // ======================================================================== const l1_pop_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/proof_of_path.zig"), + .root_source_file = b.path("core/l1-identity/proof_of_path.zig"), .target = target, .optimize = optimize, }); @@ -237,7 +237,7 @@ pub fn build(b: *std.Build) void { // L1 QVL (Quasar Vector Lattice) - Advanced Graph Engine // ======================================================================== const l1_qvl_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/qvl.zig"), + .root_source_file = b.path("core/l1-identity/qvl.zig"), .target = target, .optimize = optimize, }); @@ -249,7 +249,7 @@ pub fn build(b: *std.Build) void { // QVL FFI (C ABI exports for L2 integration) const l1_qvl_ffi_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/qvl_ffi.zig"), + .root_source_file = b.path("core/l1-identity/qvl_ffi.zig"), .target = target, .optimize = optimize, }); @@ -271,7 +271,7 @@ pub fn build(b: *std.Build) void { // L4 Feed β€” Temporal Event Store // ======================================================================== const l4_feed_mod = b.createModule(.{ - .root_source_file = b.path("l4-feed/feed.zig"), + .root_source_file = b.path("sdk/l4-feed/feed.zig"), .target = target, .optimize = optimize, }); @@ -287,13 +287,13 @@ pub fn build(b: *std.Build) void { // RFC-0015: Transport Skins (DPI Resistance) // ======================================================================== const png_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/png.zig"), + .root_source_file = b.path("core/l0-transport/png.zig"), .target = target, .optimize = optimize, }); const transport_skins_mod = b.createModule(.{ - .root_source_file = b.path("l0-transport/transport_skins.zig"), + .root_source_file = b.path("core/l0-transport/transport_skins.zig"), .target = target, .optimize = optimize, }); @@ -445,7 +445,7 @@ pub fn build(b: *std.Build) void { // Import PQXDH into main L1 module // Tests (root is test_pqxdh.zig) const l1_pqxdh_tests_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/test_pqxdh.zig"), + .root_source_file = b.path("core/l1-identity/test_pqxdh.zig"), .target = target, .optimize = optimize, }); @@ -461,7 +461,7 @@ pub fn build(b: *std.Build) void { // L1 Vector tests (Phase 3C) const l1_vector_mod = b.createModule(.{ - .root_source_file = b.path("l1-identity/vector.zig"), + .root_source_file = b.path("core/l1-identity/vector.zig"), .target = target, .optimize = optimize, }); @@ -543,11 +543,11 @@ pub fn build(b: *std.Build) void { // Example: LWF frame usage const lwf_example_mod = b.createModule(.{ - .root_source_file = b.path("examples/lwf_example.zig"), + .root_source_file = b.path("apps/examples/lwf_example.zig"), .target = target, .optimize = optimize, }); - lwf_example_mod.addImport("../l0-transport/lwf.zig", l0_mod); + lwf_example_mod.addImport("l0_transport", l0_mod); const lwf_example = b.addExecutable(.{ .name = "lwf_example", @@ -557,11 +557,11 @@ pub fn build(b: *std.Build) void { // Example: Encryption usage const crypto_example_mod = b.createModule(.{ - .root_source_file = b.path("examples/crypto_example.zig"), + .root_source_file = b.path("apps/examples/crypto_example.zig"), .target = target, .optimize = optimize, }); - crypto_example_mod.addImport("../l1-identity/crypto.zig", l1_mod); + crypto_example_mod.addImport("l1_identity", l1_mod); const crypto_example = b.addExecutable(.{ .name = "crypto_example", diff --git a/build.zig.backup b/build.zig.backup new file mode 100644 index 0000000..4454b7b --- /dev/null +++ b/build.zig.backup @@ -0,0 +1,638 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + // Dependencies + const vaxis_dep = b.dependency("vaxis", .{}); + const vaxis_mod = vaxis_dep.module("vaxis"); + + // ======================================================================== + // Time Module (L0) + // ======================================================================== + const time_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/time.zig"), + .target = target, + .optimize = optimize, + }); + + // ======================================================================== + // L0: Transport Layer + // ======================================================================== + const l0_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/mod.zig"), + .target = target, + .optimize = optimize, + }); + const ipc_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/ipc/client.zig"), + .target = target, + .optimize = optimize, + }); + + const utcp_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/utcp/socket.zig"), + .target = target, + .optimize = optimize, + }); + utcp_mod.addImport("ipc", ipc_mod); + utcp_mod.addImport("lwf", l0_mod); + + const opq_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/opq.zig"), + .target = target, + .optimize = optimize, + }); + opq_mod.addImport("lwf", l0_mod); + + const l0_service_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/service.zig"), + .target = target, + .optimize = optimize, + }); + l0_service_mod.addImport("lwf", l0_mod); + l0_service_mod.addImport("utcp", utcp_mod); + l0_service_mod.addImport("opq", opq_mod); + + const dht_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/dht.zig"), + .target = target, + .optimize = optimize, + }); + + const gateway_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/gateway.zig"), + .target = target, + .optimize = optimize, + }); + gateway_mod.addImport("dht", dht_mod); + + const relay_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/relay.zig"), + .target = target, + .optimize = optimize, + }); + + // RFC-0015: Transport Skins (MIMIC_DNS for DPI evasion) + const mimic_dns_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/mimic_dns.zig"), + .target = target, + .optimize = optimize, + }); + + // RFC-0015: MIMIC_HTTPS with Domain Fronting + const mimic_https_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/mimic_https.zig"), + .target = target, + .optimize = optimize, + }); + + // RFC-0015: MIMIC_QUIC (HTTP/3 over QUIC) + const mimic_quic_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/mimic_quic.zig"), + .target = target, + .optimize = optimize, + }); + + const bridge_mod = b.createModule(.{ + .root_source_file = b.path("l2-federation/bridge.zig"), + .target = target, + .optimize = optimize, + }); + + const l2_policy_mod = b.createModule(.{ + .root_source_file = b.path("l2-membrane/policy.zig"), + .target = target, + .optimize = optimize, + }); + l2_policy_mod.addImport("lwf", l0_mod); + + // ======================================================================== + // Crypto: SHA3/SHAKE & FIPS 202 + // ======================================================================== + const crypto_shake_mod = b.createModule(.{ + .root_source_file = b.path("src/crypto/shake.zig"), + .target = target, + .optimize = optimize, + }); + + const crypto_fips202_mod = b.createModule(.{ + .root_source_file = b.path("src/crypto/fips202_bridge.zig"), + .target = target, + .optimize = optimize, + }); + + const crypto_exports_mod = b.createModule(.{ + .root_source_file = b.path("src/crypto/exports.zig"), + .target = target, + .optimize = optimize, + }); + crypto_exports_mod.addImport("fips202_bridge", crypto_fips202_mod); + + // ======================================================================== + // L1: Identity & Crypto Layer + // ======================================================================== + const l1_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/mod.zig"), + .target = target, + .optimize = optimize, + }); + + // Add crypto modules as imports to L1 + l1_mod.addImport("shake", crypto_shake_mod); + l1_mod.addImport("fips202_bridge", crypto_fips202_mod); + + // ======================================================================== + // L1 PQXDH Module (Phase 3) - Core Dependency + // ======================================================================== + const l1_pqxdh_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/pqxdh.zig"), + .target = target, + .optimize = optimize, + }); + l1_pqxdh_mod.addIncludePath(b.path("vendor/liboqs/install/include")); + l1_pqxdh_mod.addLibraryPath(b.path("vendor/liboqs/install/lib")); + l1_pqxdh_mod.linkSystemLibrary("oqs", .{ .needed = true }); + + // Ensure l1_mod uses PQXDH + l1_mod.addImport("pqxdh", l1_pqxdh_mod); + + // ======================================================================== + // L1 Modules: SoulKey, Entropy, Prekey (Phase 2B + 2C) + // ======================================================================== + const l1_soulkey_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/soulkey.zig"), + .target = target, + .optimize = optimize, + }); + // SoulKey needs PQXDH for deterministic generation + l1_soulkey_mod.addImport("pqxdh", l1_pqxdh_mod); + + const l1_entropy_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/entropy.zig"), + .target = target, + .optimize = optimize, + }); + + // UTCP needs entropy for fast validation + utcp_mod.addImport("entropy", l1_entropy_mod); + + const l1_prekey_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/prekey.zig"), + .target = target, + .optimize = optimize, + }); + l1_prekey_mod.addImport("pqxdh", l1_pqxdh_mod); + + const l1_did_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/did.zig"), + .target = target, + .optimize = optimize, + }); + l1_did_mod.addImport("pqxdh", l1_pqxdh_mod); + + // ======================================================================== + // L1 Slash Protocol & L0 Quarantine + // ======================================================================== + const l1_slash_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/slash.zig"), + .target = target, + .optimize = optimize, + }); + l1_mod.addImport("slash", l1_slash_mod); + + const l0_quarantine_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/quarantine.zig"), + .target = target, + .optimize = optimize, + }); + utcp_mod.addImport("quarantine", l0_quarantine_mod); + l0_service_mod.addImport("quarantine", l0_quarantine_mod); + + // ======================================================================== + // L1 Trust Graph Module (Core Dependency for QVL/PoP) + // ======================================================================== + const l1_trust_graph_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/trust_graph.zig"), + .target = target, + .optimize = optimize, + }); + // trust_graph needs crypto types + l1_trust_graph_mod.addImport("crypto", l1_mod); + + // ======================================================================== + // L1 Proof of Path Module (PoP) + // ======================================================================== + const l1_pop_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/proof_of_path.zig"), + .target = target, + .optimize = optimize, + }); + l1_pop_mod.addImport("trust_graph", l1_trust_graph_mod); + l1_pop_mod.addImport("time", time_mod); + l1_pop_mod.addImport("soulkey", l1_soulkey_mod); + + // ======================================================================== + // L1 QVL (Quasar Vector Lattice) - Advanced Graph Engine + // ======================================================================== + const l1_qvl_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/qvl.zig"), + .target = target, + .optimize = optimize, + }); + l1_qvl_mod.addImport("trust_graph", l1_trust_graph_mod); + l1_qvl_mod.addImport("proof_of_path", l1_pop_mod); + l1_qvl_mod.addImport("time", time_mod); + // Note: libmdbx linking removed - using stub implementation for now + // TODO: Add real libmdbx when available on build system + + // QVL FFI (C ABI exports for L2 integration) + const l1_qvl_ffi_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/qvl_ffi.zig"), + .target = target, + .optimize = optimize, + }); + l1_qvl_ffi_mod.addImport("qvl", l1_qvl_mod); + l1_qvl_ffi_mod.addImport("slash", l1_slash_mod); + l1_qvl_ffi_mod.addImport("time", time_mod); + l1_qvl_ffi_mod.addImport("trust_graph", l1_trust_graph_mod); + + // QVL FFI static library (for Rust L2 Membrane Agent) + const qvl_ffi_lib = b.addLibrary(.{ + .name = "qvl_ffi", + .root_module = l1_qvl_ffi_mod, + .linkage = .static, + }); + qvl_ffi_lib.linkLibC(); + b.installArtifact(qvl_ffi_lib); + + // ======================================================================== + // L4 Feed β€” Temporal Event Store + // ======================================================================== + const l4_feed_mod = b.createModule(.{ + .root_source_file = b.path("l4-feed/feed.zig"), + .target = target, + .optimize = optimize, + }); + + // L4 Feed tests (requires libduckdb at runtime) + const l4_feed_tests = b.addTest(.{ + .root_module = l4_feed_mod, + }); + l4_feed_tests.linkLibC(); // Required for DuckDB C API + const run_l4_feed_tests = b.addRunArtifact(l4_feed_tests); + + // ======================================================================== + // RFC-0015: Transport Skins (DPI Resistance) + // ======================================================================== + const png_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/png.zig"), + .target = target, + .optimize = optimize, + }); + + const transport_skins_mod = b.createModule(.{ + .root_source_file = b.path("l0-transport/transport_skins.zig"), + .target = target, + .optimize = optimize, + }); + transport_skins_mod.addImport("png", png_mod); + transport_skins_mod.addImport("mimic_dns", mimic_dns_mod); + transport_skins_mod.addImport("mimic_https", mimic_https_mod); + transport_skins_mod.addImport("mimic_quic", mimic_quic_mod); + + // Transport Skins tests + const png_tests = b.addTest(.{ + .root_module = png_mod, + }); + const run_png_tests = b.addRunArtifact(png_tests); + + const transport_skins_tests = b.addTest(.{ + .root_module = transport_skins_mod, + }); + const run_transport_skins_tests = b.addRunArtifact(transport_skins_tests); + + // ======================================================================== + // Tests (with C FFI support for Argon2 + liboqs) + // ======================================================================== + + // Crypto tests (SHA3/SHAKE) + const crypto_tests = b.addTest(.{ + .root_module = crypto_shake_mod, + }); + const run_crypto_tests = b.addRunArtifact(crypto_tests); + + // Crypto FFI bridge tests + const crypto_ffi_tests = b.addTest(.{ + .root_module = crypto_fips202_mod, + }); + const run_crypto_ffi_tests = b.addRunArtifact(crypto_ffi_tests); + + // L0 tests + const l0_tests = b.addTest(.{ + .root_module = l0_mod, + }); + const run_l0_tests = b.addRunArtifact(l0_tests); + + // UTCP tests + const utcp_tests = b.addTest(.{ + .root_module = utcp_mod, + }); + const run_utcp_tests = b.addRunArtifact(utcp_tests); + + // L2 Policy tests + const l2_policy_tests = b.addTest(.{ + .root_module = l2_policy_mod, + }); + const run_l2_policy_tests = b.addRunArtifact(l2_policy_tests); + + // OPQ tests + const opq_tests = b.addTest(.{ + .root_module = opq_mod, + }); + const run_opq_tests = b.addRunArtifact(opq_tests); + + // L0 Service tests + const l0_service_tests = b.addTest(.{ + .root_module = l0_service_mod, + }); + const run_l0_service_tests = b.addRunArtifact(l0_service_tests); + + // DHT tests + const dht_tests = b.addTest(.{ + .root_module = dht_mod, + }); + const run_dht_tests = b.addRunArtifact(dht_tests); + + // Gateway tests + const gateway_tests = b.addTest(.{ + .root_module = gateway_mod, + }); + const run_gateway_tests = b.addRunArtifact(gateway_tests); + + // Relay tests + const relay_tests = b.addTest(.{ + .root_module = relay_mod, + }); + const run_relay_tests = b.addRunArtifact(relay_tests); + + // Bridge tests + const bridge_tests = b.addTest(.{ + .root_module = bridge_mod, + }); + const run_bridge_tests = b.addRunArtifact(bridge_tests); + + // L1 SoulKey tests (Phase 2B) + const l1_soulkey_tests = b.addTest(.{ + .root_module = l1_soulkey_mod, + }); + // Tests linking liboqs effectively happen via the module now, but we also link LibC + l1_soulkey_tests.linkLibC(); + const run_l1_soulkey_tests = b.addRunArtifact(l1_soulkey_tests); + + // L1 Entropy tests (Phase 2B) + const l1_entropy_tests = b.addTest(.{ + .root_module = l1_entropy_mod, + }); + l1_entropy_tests.addCSourceFiles(.{ + .files = &.{ + "vendor/argon2/src/argon2.c", + "vendor/argon2/src/core.c", + "vendor/argon2/src/blake2/blake2b.c", + "vendor/argon2/src/thread.c", + "vendor/argon2/src/encoding.c", + "vendor/argon2/src/opt.c", + }, + .flags = &.{ + "-std=c99", + "-O3", + "-fPIC", + "-DHAVE_PTHREAD", + }, + }); + l1_entropy_tests.addIncludePath(b.path("vendor/argon2/include")); + l1_entropy_tests.linkLibC(); + const run_l1_entropy_tests = b.addRunArtifact(l1_entropy_tests); + + // L1 Prekey tests (Phase 2C) + const l1_prekey_tests = b.addTest(.{ + .root_module = l1_prekey_mod, + }); + l1_prekey_tests.linkLibC(); + const run_l1_prekey_tests = b.addRunArtifact(l1_prekey_tests); + + // L1 DID tests (Phase 2D) + const l1_did_tests = b.addTest(.{ + .root_module = l1_did_mod, + }); + l1_did_tests.linkLibC(); + const run_l1_did_tests = b.addRunArtifact(l1_did_tests); + + // L1 Slash tests + const l1_slash_tests = b.addTest(.{ + .root_module = l1_slash_mod, + }); + l1_slash_tests.linkLibC(); + const run_l1_slash_tests = b.addRunArtifact(l1_slash_tests); + + // L0 Quarantine tests + const l0_quarantine_tests = b.addTest(.{ + .root_module = l0_quarantine_mod, + }); + const run_l0_quarantine_tests = b.addRunArtifact(l0_quarantine_tests); + + // Import PQXDH into main L1 module + // Tests (root is test_pqxdh.zig) + const l1_pqxdh_tests_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/test_pqxdh.zig"), + .target = target, + .optimize = optimize, + }); + + const l1_pqxdh_tests = b.addTest(.{ + .root_module = l1_pqxdh_tests_mod, + }); + l1_pqxdh_tests.linkLibC(); + l1_pqxdh_tests.addIncludePath(b.path("vendor/liboqs/install/include")); + l1_pqxdh_tests.addLibraryPath(b.path("vendor/liboqs/install/lib")); + l1_pqxdh_tests.linkSystemLibrary("oqs"); + const run_l1_pqxdh_tests = b.addRunArtifact(l1_pqxdh_tests); + + // L1 Vector tests (Phase 3C) + const l1_vector_mod = b.createModule(.{ + .root_source_file = b.path("l1-identity/vector.zig"), + .target = target, + .optimize = optimize, + }); + l1_vector_mod.addImport("time", time_mod); + l1_vector_mod.addImport("pqxdh", l1_pqxdh_mod); + l1_vector_mod.addImport("trust_graph", l1_trust_graph_mod); + l1_vector_mod.addImport("soulkey", l1_soulkey_mod); + + const l1_vector_tests = b.addTest(.{ + .root_module = l1_vector_mod, + }); + // Add Argon2 support for vector tests (via entropy.zig) + l1_vector_tests.addCSourceFiles(.{ + .files = &.{ + "vendor/argon2/src/argon2.c", + "vendor/argon2/src/core.c", + "vendor/argon2/src/blake2/blake2b.c", + "vendor/argon2/src/thread.c", + "vendor/argon2/src/encoding.c", + "vendor/argon2/src/opt.c", + }, + .flags = &.{ + "-std=c99", + "-O3", + "-fPIC", + "-DHAVE_PTHREAD", + }, + }); + l1_vector_tests.addIncludePath(b.path("vendor/argon2/include")); + l1_vector_tests.linkLibC(); + const run_l1_vector_tests = b.addRunArtifact(l1_vector_tests); + + // L1 QVL tests + const l1_qvl_tests = b.addTest(.{ + .root_module = l1_qvl_mod, + }); + const run_l1_qvl_tests = b.addRunArtifact(l1_qvl_tests); + + // L1 QVL FFI tests (C ABI validation) + const l1_qvl_ffi_tests = b.addTest(.{ + .root_module = l1_qvl_ffi_mod, + }); + l1_qvl_ffi_tests.linkLibC(); // Required for C allocator + const run_l1_qvl_ffi_tests = b.addRunArtifact(l1_qvl_ffi_tests); + + // NOTE: C test harness (test_qvl_ffi.c) can be compiled manually: + // zig cc -I. l1-identity/test_qvl_ffi.c zig-out/lib/libqvl_ffi.a -o test_qvl_ffi + + // Test step (runs Phase 2B + 2C + 2D + 3C SDK tests) + const test_step = b.step("test", "Run SDK tests"); + test_step.dependOn(&run_crypto_tests.step); + test_step.dependOn(&run_crypto_ffi_tests.step); + test_step.dependOn(&run_l0_tests.step); + test_step.dependOn(&run_l1_soulkey_tests.step); + test_step.dependOn(&run_l1_entropy_tests.step); + test_step.dependOn(&run_l1_prekey_tests.step); + test_step.dependOn(&run_l1_did_tests.step); + test_step.dependOn(&run_l1_slash_tests.step); + test_step.dependOn(&run_l0_quarantine_tests.step); + test_step.dependOn(&run_l1_vector_tests.step); + test_step.dependOn(&run_l1_pqxdh_tests.step); + test_step.dependOn(&run_utcp_tests.step); + test_step.dependOn(&run_opq_tests.step); + test_step.dependOn(&run_l0_service_tests.step); + test_step.dependOn(&run_dht_tests.step); + test_step.dependOn(&run_gateway_tests.step); + test_step.dependOn(&run_relay_tests.step); + test_step.dependOn(&run_bridge_tests.step); + test_step.dependOn(&run_l1_qvl_tests.step); + test_step.dependOn(&run_l1_qvl_ffi_tests.step); + test_step.dependOn(&run_l2_policy_tests.step); + test_step.dependOn(&run_l4_feed_tests.step); + test_step.dependOn(&run_png_tests.step); + test_step.dependOn(&run_transport_skins_tests.step); + + // ======================================================================== + // Examples + // ======================================================================== + + // Example: LWF frame usage + const lwf_example_mod = b.createModule(.{ + .root_source_file = b.path("examples/lwf_example.zig"), + .target = target, + .optimize = optimize, + }); + lwf_example_mod.addImport("../l0-transport/lwf.zig", l0_mod); + + const lwf_example = b.addExecutable(.{ + .name = "lwf_example", + .root_module = lwf_example_mod, + }); + b.installArtifact(lwf_example); + + // Example: Encryption usage + const crypto_example_mod = b.createModule(.{ + .root_source_file = b.path("examples/crypto_example.zig"), + .target = target, + .optimize = optimize, + }); + crypto_example_mod.addImport("../l1-identity/crypto.zig", l1_mod); + + const crypto_example = b.addExecutable(.{ + .name = "crypto_example", + .root_module = crypto_example_mod, + }); + b.installArtifact(crypto_example); + + // Examples step + const examples_step = b.step("examples", "Build example programs"); + examples_step.dependOn(&b.addInstallArtifact(lwf_example, .{}).step); + examples_step.dependOn(&b.addInstallArtifact(crypto_example, .{}).step); + + // ======================================================================== + // Convenience Commands + // ======================================================================== + + // Run crypto example + const run_crypto_example = b.addRunArtifact(crypto_example); + const run_crypto_step = b.step("run-crypto", "Run encryption example"); + run_crypto_step.dependOn(&run_crypto_example.step); + + // ======================================================================== + // Capsule Core (Phase 10) Reference Implementation + // ======================================================================== + const capsule_control_mod = b.createModule(.{ + .root_source_file = b.path("capsule-core/src/control.zig"), + .target = target, + .optimize = optimize, + }); + capsule_control_mod.addImport("qvl", l1_qvl_mod); + + const capsule_mod = b.createModule(.{ + .root_source_file = b.path("capsule-core/src/main.zig"), + .target = target, + .optimize = optimize, + }); + + // Link L0 (Transport) + capsule_mod.addImport("l0_transport", l0_mod); + capsule_mod.addImport("utcp", utcp_mod); + + // Link L1 (Identity) + capsule_mod.addImport("l1_identity", l1_mod); + capsule_mod.addImport("qvl", l1_qvl_mod); + capsule_mod.addImport("dht", dht_mod); + capsule_mod.addImport("gateway", gateway_mod); + capsule_mod.addImport("relay", relay_mod); + capsule_mod.addImport("quarantine", l0_quarantine_mod); + capsule_mod.addImport("policy", l2_policy_mod); + capsule_mod.addImport("soulkey", l1_soulkey_mod); + capsule_mod.addImport("vaxis", vaxis_mod); + capsule_mod.addImport("control", capsule_control_mod); + + const capsule_exe = b.addExecutable(.{ + .name = "capsule", + .root_module = capsule_mod, + }); + // Link LibC (required for Argon2/OQS via L1) + capsule_exe.linkLibC(); + // Link SQLite3 (required for Persistent State) + capsule_exe.linkSystemLibrary("sqlite3"); + // Link DuckDB (required for Analytical QVL) + capsule_exe.linkSystemLibrary("duckdb"); + + b.installArtifact(capsule_exe); + + // Run command: zig build run -- args + const run_capsule = b.addRunArtifact(capsule_exe); + if (b.args) |args| { + run_capsule.addArgs(args); + } + const run_step = b.step("run", "Run the Capsule Node"); + run_step.dependOn(&run_capsule.step); +} diff --git a/core/LICENSE b/core/LICENSE new file mode 100644 index 0000000..aecf8f9 --- /dev/null +++ b/core/LICENSE @@ -0,0 +1,4 @@ +This directory is licensed under The Libertaria Commonwealth License v1.0 (LCL-1.0). +See ../legal/LICENSE_COMMONWEALTH.md for full text. + +SPDX-License-Identifier: LCL-1.0 diff --git a/l0-transport/README.md b/core/l0-transport/README.md similarity index 100% rename from l0-transport/README.md rename to core/l0-transport/README.md diff --git a/l0-transport/dht.zig b/core/l0-transport/dht.zig similarity index 96% rename from l0-transport/dht.zig rename to core/l0-transport/dht.zig index c1e8ea4..affe7fd 100644 --- a/l0-transport/dht.zig +++ b/core/l0-transport/dht.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! RFC-0122: Kademlia-lite DHT for Capsule Discovery //! Implements wide-area peer discovery using XOR distance metric. diff --git a/l0-transport/gateway.zig b/core/l0-transport/gateway.zig similarity index 94% rename from l0-transport/gateway.zig rename to core/l0-transport/gateway.zig index 6ac5cfe..91b8390 100644 --- a/l0-transport/gateway.zig +++ b/core/l0-transport/gateway.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! RFC-0018: Gateway Protocol //! //! layer 1: Coordination Layer diff --git a/l0-transport/ipc/client.zig b/core/l0-transport/ipc/client.zig similarity index 100% rename from l0-transport/ipc/client.zig rename to core/l0-transport/ipc/client.zig diff --git a/l0-transport/lwf.zig b/core/l0-transport/lwf.zig similarity index 98% rename from l0-transport/lwf.zig rename to core/l0-transport/lwf.zig index a35bf53..804f2e5 100644 --- a/l0-transport/lwf.zig +++ b/core/l0-transport/lwf.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! RFC-0000: Libertaria Wire Frame Protocol (v2) //! //! This module implements the core LWF frame structure for L0 transport. diff --git a/l0-transport/mimic_dns.zig b/core/l0-transport/mimic_dns.zig similarity index 98% rename from l0-transport/mimic_dns.zig rename to core/l0-transport/mimic_dns.zig index 3c115e4..ee7b736 100644 --- a/l0-transport/mimic_dns.zig +++ b/core/l0-transport/mimic_dns.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! RFC-0015: MIMIC_DNS Skin (DNS-over-HTTPS Tunnel) //! //! Encodes LWF frames as DNS queries for DPI evasion. diff --git a/l0-transport/mimic_https.zig b/core/l0-transport/mimic_https.zig similarity index 98% rename from l0-transport/mimic_https.zig rename to core/l0-transport/mimic_https.zig index ee08ed8..f47d56d 100644 --- a/l0-transport/mimic_https.zig +++ b/core/l0-transport/mimic_https.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + const std = @import("std"); const base64 = std.base64; diff --git a/l0-transport/mimic_quic.zig b/core/l0-transport/mimic_quic.zig similarity index 98% rename from l0-transport/mimic_quic.zig rename to core/l0-transport/mimic_quic.zig index ee4061f..988ba84 100644 --- a/l0-transport/mimic_quic.zig +++ b/core/l0-transport/mimic_quic.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! RFC-0015: MIMIC_QUIC Skin (HTTP/3 over QUIC) //! //! Modern replacement for WebSockets with 0-RTT connection establishment. diff --git a/l0-transport/mod.zig b/core/l0-transport/mod.zig similarity index 82% rename from l0-transport/mod.zig rename to core/l0-transport/mod.zig index 61a9451..0e648a0 100644 --- a/l0-transport/mod.zig +++ b/core/l0-transport/mod.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + const std = @import("std"); // Re-export LWF (Libertaria Wire Frame) diff --git a/l0-transport/noise.zig b/core/l0-transport/noise.zig similarity index 98% rename from l0-transport/noise.zig rename to core/l0-transport/noise.zig index 64e86eb..cdaea00 100644 --- a/l0-transport/noise.zig +++ b/core/l0-transport/noise.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! Noise Protocol Framework Implementation (noiseprotocol.org) //! //! Lightweight, modern cryptographic protocol framework. diff --git a/l0-transport/opq.zig b/core/l0-transport/opq.zig similarity index 77% rename from l0-transport/opq.zig rename to core/l0-transport/opq.zig index 2a6c29b..5a7a4fa 100644 --- a/l0-transport/opq.zig +++ b/core/l0-transport/opq.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! Sovereign Index for OPQ pub const store = @import("opq/store.zig"); pub const quota = @import("opq/quota.zig"); diff --git a/l0-transport/opq/README.md b/core/l0-transport/opq/README.md similarity index 100% rename from l0-transport/opq/README.md rename to core/l0-transport/opq/README.md diff --git a/l0-transport/opq/manager.zig b/core/l0-transport/opq/manager.zig similarity index 100% rename from l0-transport/opq/manager.zig rename to core/l0-transport/opq/manager.zig diff --git a/l0-transport/opq/manifest.zig b/core/l0-transport/opq/manifest.zig similarity index 100% rename from l0-transport/opq/manifest.zig rename to core/l0-transport/opq/manifest.zig diff --git a/l0-transport/opq/merkle.zig b/core/l0-transport/opq/merkle.zig similarity index 100% rename from l0-transport/opq/merkle.zig rename to core/l0-transport/opq/merkle.zig diff --git a/l0-transport/opq/quota.zig b/core/l0-transport/opq/quota.zig similarity index 100% rename from l0-transport/opq/quota.zig rename to core/l0-transport/opq/quota.zig diff --git a/l0-transport/opq/reorder_buffer.zig b/core/l0-transport/opq/reorder_buffer.zig similarity index 100% rename from l0-transport/opq/reorder_buffer.zig rename to core/l0-transport/opq/reorder_buffer.zig diff --git a/l0-transport/opq/sequencer.zig b/core/l0-transport/opq/sequencer.zig similarity index 100% rename from l0-transport/opq/sequencer.zig rename to core/l0-transport/opq/sequencer.zig diff --git a/l0-transport/opq/store.zig b/core/l0-transport/opq/store.zig similarity index 100% rename from l0-transport/opq/store.zig rename to core/l0-transport/opq/store.zig diff --git a/l0-transport/opq/trust_resolver.zig b/core/l0-transport/opq/trust_resolver.zig similarity index 100% rename from l0-transport/opq/trust_resolver.zig rename to core/l0-transport/opq/trust_resolver.zig diff --git a/l0-transport/png.zig b/core/l0-transport/png.zig similarity index 98% rename from l0-transport/png.zig rename to core/l0-transport/png.zig index 4c70cec..1fc3049 100644 --- a/l0-transport/png.zig +++ b/core/l0-transport/png.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! RFC-0015: Polymorphic Noise Generator (PNG) //! //! Per-session traffic shaping for DPI resistance. diff --git a/l0-transport/quarantine.zig b/core/l0-transport/quarantine.zig similarity index 94% rename from l0-transport/quarantine.zig rename to core/l0-transport/quarantine.zig index dc91df8..8c570bb 100644 --- a/l0-transport/quarantine.zig +++ b/core/l0-transport/quarantine.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! Quarantine List - Active Defense Enforcement //! //! Maintains a list of locally blocked/monitored DIDs based on SlashSignals. diff --git a/l0-transport/relay.zig b/core/l0-transport/relay.zig similarity index 97% rename from l0-transport/relay.zig rename to core/l0-transport/relay.zig index fb2b35b..d67af34 100644 --- a/l0-transport/relay.zig +++ b/core/l0-transport/relay.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! RFC-0018: Relay Protocol (Layer 2) //! //! Implements onion-routed packet forwarding. diff --git a/l0-transport/service.zig b/core/l0-transport/service.zig similarity index 94% rename from l0-transport/service.zig rename to core/l0-transport/service.zig index b3d4e3c..a82a0c9 100644 --- a/l0-transport/service.zig +++ b/core/l0-transport/service.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! RFC-0010 & RFC-0020: L0 Integrated Service //! //! Orchestrates the flow: [Network] -> [UTCP] -> [OPQ] -> [Application] diff --git a/l0-transport/time.zig b/core/l0-transport/time.zig similarity index 99% rename from l0-transport/time.zig rename to core/l0-transport/time.zig index da5360c..411b594 100644 --- a/l0-transport/time.zig +++ b/core/l0-transport/time.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + //! Sovereign Time Protocol (RFC-0105) //! //! Time is a first-class sovereign dimension in Libertaria. diff --git a/l0-transport/transport_skins.zig b/core/l0-transport/transport_skins.zig similarity index 97% rename from l0-transport/transport_skins.zig rename to core/l0-transport/transport_skins.zig index 808bb4a..dcf6e44 100644 --- a/l0-transport/transport_skins.zig +++ b/core/l0-transport/transport_skins.zig @@ -1,3 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + const std = @import("std"); const png = @import("png.zig"); const mimic_dns = @import("mimic_dns.zig"); diff --git a/core/l0-transport/utcp.zig b/core/l0-transport/utcp.zig new file mode 100644 index 0000000..0dba371 --- /dev/null +++ b/core/l0-transport/utcp.zig @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: LCL-1.0 +// Copyright (c) 2026 Libertaria Contributors +// This file is part of the Libertaria Core, licensed under +// The Libertaria Commonwealth License v1.0. + + +//! Sovereign Index for UTCP +pub const socket = @import("utcp/socket.zig"); +pub const UTCP = socket.UTCP; diff --git a/l0-transport/utcp/README.md b/core/l0-transport/utcp/README.md similarity index 100% rename from l0-transport/utcp/README.md rename to core/l0-transport/utcp/README.md diff --git a/l0-transport/utcp/socket.zig b/core/l0-transport/utcp/socket.zig similarity index 100% rename from l0-transport/utcp/socket.zig rename to core/l0-transport/utcp/socket.zig diff --git a/l0-transport/utcp/test_socket.zig b/core/l0-transport/utcp/test_socket.zig similarity index 100% rename from l0-transport/utcp/test_socket.zig rename to core/l0-transport/utcp/test_socket.zig diff --git a/l1-identity/README.md b/core/l1-identity/README.md similarity index 100% rename from l1-identity/README.md rename to core/l1-identity/README.md diff --git a/l1-identity/argon2.zig b/core/l1-identity/argon2.zig similarity index 100% rename from l1-identity/argon2.zig rename to core/l1-identity/argon2.zig diff --git a/l1-identity/crypto.zig b/core/l1-identity/crypto.zig similarity index 100% rename from l1-identity/crypto.zig rename to core/l1-identity/crypto.zig diff --git a/l1-identity/did.zig b/core/l1-identity/did.zig similarity index 100% rename from l1-identity/did.zig rename to core/l1-identity/did.zig diff --git a/l1-identity/entropy.zig b/core/l1-identity/entropy.zig similarity index 100% rename from l1-identity/entropy.zig rename to core/l1-identity/entropy.zig diff --git a/l1-identity/mod.zig b/core/l1-identity/mod.zig similarity index 100% rename from l1-identity/mod.zig rename to core/l1-identity/mod.zig diff --git a/l1-identity/pqxdh.zig b/core/l1-identity/pqxdh.zig similarity index 100% rename from l1-identity/pqxdh.zig rename to core/l1-identity/pqxdh.zig diff --git a/l1-identity/prekey.zig b/core/l1-identity/prekey.zig similarity index 100% rename from l1-identity/prekey.zig rename to core/l1-identity/prekey.zig diff --git a/l1-identity/proof_of_path.zig b/core/l1-identity/proof_of_path.zig similarity index 100% rename from l1-identity/proof_of_path.zig rename to core/l1-identity/proof_of_path.zig diff --git a/l1-identity/qvl.h b/core/l1-identity/qvl.h similarity index 100% rename from l1-identity/qvl.h rename to core/l1-identity/qvl.h diff --git a/l1-identity/qvl.zig b/core/l1-identity/qvl.zig similarity index 100% rename from l1-identity/qvl.zig rename to core/l1-identity/qvl.zig diff --git a/l1-identity/qvl/betrayal.zig b/core/l1-identity/qvl/betrayal.zig similarity index 100% rename from l1-identity/qvl/betrayal.zig rename to core/l1-identity/qvl/betrayal.zig diff --git a/l1-identity/qvl/feed.md b/core/l1-identity/qvl/feed.md similarity index 100% rename from l1-identity/qvl/feed.md rename to core/l1-identity/qvl/feed.md diff --git a/l1-identity/qvl/feed.zig b/core/l1-identity/qvl/feed.zig similarity index 100% rename from l1-identity/qvl/feed.zig rename to core/l1-identity/qvl/feed.zig diff --git a/l1-identity/qvl/gossip.zig b/core/l1-identity/qvl/gossip.zig similarity index 100% rename from l1-identity/qvl/gossip.zig rename to core/l1-identity/qvl/gossip.zig diff --git a/l1-identity/qvl/gql.zig b/core/l1-identity/qvl/gql.zig similarity index 100% rename from l1-identity/qvl/gql.zig rename to core/l1-identity/qvl/gql.zig diff --git a/l1-identity/qvl/gql/ast.zig b/core/l1-identity/qvl/gql/ast.zig similarity index 100% rename from l1-identity/qvl/gql/ast.zig rename to core/l1-identity/qvl/gql/ast.zig diff --git a/l1-identity/qvl/gql/codegen.zig b/core/l1-identity/qvl/gql/codegen.zig similarity index 100% rename from l1-identity/qvl/gql/codegen.zig rename to core/l1-identity/qvl/gql/codegen.zig diff --git a/l1-identity/qvl/gql/lexer.zig b/core/l1-identity/qvl/gql/lexer.zig similarity index 100% rename from l1-identity/qvl/gql/lexer.zig rename to core/l1-identity/qvl/gql/lexer.zig diff --git a/l1-identity/qvl/gql/parser.zig b/core/l1-identity/qvl/gql/parser.zig similarity index 100% rename from l1-identity/qvl/gql/parser.zig rename to core/l1-identity/qvl/gql/parser.zig diff --git a/l1-identity/qvl/inference.zig b/core/l1-identity/qvl/inference.zig similarity index 100% rename from l1-identity/qvl/inference.zig rename to core/l1-identity/qvl/inference.zig diff --git a/l1-identity/qvl/integration.zig b/core/l1-identity/qvl/integration.zig similarity index 100% rename from l1-identity/qvl/integration.zig rename to core/l1-identity/qvl/integration.zig diff --git a/l1-identity/qvl/pathfinding.zig b/core/l1-identity/qvl/pathfinding.zig similarity index 100% rename from l1-identity/qvl/pathfinding.zig rename to core/l1-identity/qvl/pathfinding.zig diff --git a/l1-identity/qvl/pop_integration.zig b/core/l1-identity/qvl/pop_integration.zig similarity index 100% rename from l1-identity/qvl/pop_integration.zig rename to core/l1-identity/qvl/pop_integration.zig diff --git a/l1-identity/qvl/storage.zig b/core/l1-identity/qvl/storage.zig similarity index 100% rename from l1-identity/qvl/storage.zig rename to core/l1-identity/qvl/storage.zig diff --git a/l1-identity/qvl/types.zig b/core/l1-identity/qvl/types.zig similarity index 100% rename from l1-identity/qvl/types.zig rename to core/l1-identity/qvl/types.zig diff --git a/l1-identity/qvl_ffi.zig b/core/l1-identity/qvl_ffi.zig similarity index 100% rename from l1-identity/qvl_ffi.zig rename to core/l1-identity/qvl_ffi.zig diff --git a/l1-identity/slash.zig b/core/l1-identity/slash.zig similarity index 100% rename from l1-identity/slash.zig rename to core/l1-identity/slash.zig diff --git a/l1-identity/soulkey.zig b/core/l1-identity/soulkey.zig similarity index 100% rename from l1-identity/soulkey.zig rename to core/l1-identity/soulkey.zig diff --git a/l1-identity/test_pqxdh.zig b/core/l1-identity/test_pqxdh.zig similarity index 100% rename from l1-identity/test_pqxdh.zig rename to core/l1-identity/test_pqxdh.zig diff --git a/l1-identity/test_qvl_ffi.c b/core/l1-identity/test_qvl_ffi.c similarity index 100% rename from l1-identity/test_qvl_ffi.c rename to core/l1-identity/test_qvl_ffi.c diff --git a/l1-identity/trust_graph.zig b/core/l1-identity/trust_graph.zig similarity index 100% rename from l1-identity/trust_graph.zig rename to core/l1-identity/trust_graph.zig diff --git a/l1-identity/vector.zig b/core/l1-identity/vector.zig similarity index 100% rename from l1-identity/vector.zig rename to core/l1-identity/vector.zig diff --git a/l1-membrane/monetary_controller.zig b/core/l1-membrane/monetary_controller.zig similarity index 100% rename from l1-membrane/monetary_controller.zig rename to core/l1-membrane/monetary_controller.zig diff --git a/l2-federation/bridge.zig b/core/l2-federation/bridge.zig similarity index 100% rename from l2-federation/bridge.zig rename to core/l2-federation/bridge.zig diff --git a/l2-membrane/policy.zig b/core/l2-membrane/policy.zig similarity index 100% rename from l2-membrane/policy.zig rename to core/l2-membrane/policy.zig diff --git a/l2_session/README.md b/core/l2_session/README.md similarity index 100% rename from l2_session/README.md rename to core/l2_session/README.md diff --git a/l2_session/SPEC.md b/core/l2_session/SPEC.md similarity index 100% rename from l2_session/SPEC.md rename to core/l2_session/SPEC.md diff --git a/l2_session/config.zig b/core/l2_session/config.zig similarity index 100% rename from l2_session/config.zig rename to core/l2_session/config.zig diff --git a/l2_session/error.zig b/core/l2_session/error.zig similarity index 100% rename from l2_session/error.zig rename to core/l2_session/error.zig diff --git a/l2_session/handshake.zig b/core/l2_session/handshake.zig similarity index 100% rename from l2_session/handshake.zig rename to core/l2_session/handshake.zig diff --git a/l2_session/heartbeat.zig b/core/l2_session/heartbeat.zig similarity index 100% rename from l2_session/heartbeat.zig rename to core/l2_session/heartbeat.zig diff --git a/l2_session/mod.zig b/core/l2_session/mod.zig similarity index 100% rename from l2_session/mod.zig rename to core/l2_session/mod.zig diff --git a/l2_session/rotation.zig b/core/l2_session/rotation.zig similarity index 100% rename from l2_session/rotation.zig rename to core/l2_session/rotation.zig diff --git a/l2_session/session.zig b/core/l2_session/session.zig similarity index 100% rename from l2_session/session.zig rename to core/l2_session/session.zig diff --git a/l2_session/state.zig b/core/l2_session/state.zig similarity index 100% rename from l2_session/state.zig rename to core/l2_session/state.zig diff --git a/l2_session/test_session.zig b/core/l2_session/test_session.zig similarity index 100% rename from l2_session/test_session.zig rename to core/l2_session/test_session.zig diff --git a/l2_session/test_state.zig b/core/l2_session/test_state.zig similarity index 100% rename from l2_session/test_state.zig rename to core/l2_session/test_state.zig diff --git a/l2_session/transport.zig b/core/l2_session/transport.zig similarity index 100% rename from l2_session/transport.zig rename to core/l2_session/transport.zig diff --git a/l0-transport/utcp.zig b/l0-transport/utcp.zig deleted file mode 100644 index 842b237..0000000 --- a/l0-transport/utcp.zig +++ /dev/null @@ -1,3 +0,0 @@ -//! Sovereign Index for UTCP -pub const socket = @import("utcp/socket.zig"); -pub const UTCP = socket.UTCP; diff --git a/legal/LICENSE_COMMONWEALTH.md b/legal/LICENSE_COMMONWEALTH.md new file mode 100644 index 0000000..36c4238 --- /dev/null +++ b/legal/LICENSE_COMMONWEALTH.md @@ -0,0 +1,31 @@ +# The Libertaria Commonwealth License (LCL-1.0) + +### ⚑ Developer Summary (TL;DR) + +**This software belongs to the tribe.** It is free to use, modify, and distribute, but you cannot privatize it. + +We enforce **Total Reciprocity**: + +1. **No Secrets:** If you modify this code, you must share your changes. + +2. **No "Cloud" Loophole:** If you run this software as a Service (SaaS) or backend API, you **must** offer the source code to your users. Hiding behind a server does not exempt you. + +3. **Virality:** You cannot link this code into a closed-source application. If you mix your code with ours, your code becomes Commonwealth too. + + +Code for the common good, or not at all. + +--- + +### πŸ›‘οΈ Why LCL-1.0? + +- **Anti-Monopoly:** Prevents "Strip-Mining"β€”where corporations take open code, wrap it in a paid cloud service, and contribute nothing back. + +- **SaaS-Proof:** Closes the gap left by older licenses (like GPL) that didn't foresee the Cloud era. + +- **Patent Disarmament:** Includes a "Cold War" clause. If you sue for patents, you lose your license. + +- **Fortified:** Governed by **Dutch Law** (Amsterdam) to ensure the Commonwealth is protected by unshakeable legal certainty. + + +_For the full legal text, see the `LICENSE` file._ \ No newline at end of file diff --git a/legal/LICENSE_SOVEREIGN.md b/legal/LICENSE_SOVEREIGN.md new file mode 100644 index 0000000..e38b838 --- /dev/null +++ b/legal/LICENSE_SOVEREIGN.md @@ -0,0 +1,29 @@ +# The Libertaria Sovereign License (LSL-1.0) + +### ⚑ Developer Summary (TL;DR) + +**This software is free.** You can use it, modify it, distribute it, and sell it. You can link it into proprietary applications without infecting your codebase. + +We ask only two things: + +1. **File-Level Reciprocity:** If you modify the **Core Files** (the engine), you must share those specific changes back. + +2. **Proprietary Freedom:** If you build _on top_ of this engine (using new files), you own that work. You can keep your application closed and sell it. + + +That’s it. **Communal Core. Individual Profit.** + +--- + +### πŸ›‘οΈ Why LSL-1.0? + +- **Business Ready:** Safe for commercial use. Your proprietary logic stays yours; our core logic stays ours. + +- **Patent Disarmament:** Includes a "Cold War" clause. If you sue for patents, you lose your license. Peace through strength. + +- **No "Viral" Infection:** Unlike the Commonwealth License, this does not force your entire app open. It acts as a firewall between the Engine and the App. + +- **Fortified:** Governed by **Dutch Law** (Amsterdam) for absolute _Rechtssicherheit_. + + +_For the full legal text, see the `LICENSE` file._ \ No newline at end of file diff --git a/legal/LICENSE_UNBOUND.md b/legal/LICENSE_UNBOUND.md new file mode 100644 index 0000000..127f85d --- /dev/null +++ b/legal/LICENSE_UNBOUND.md @@ -0,0 +1,33 @@ +# The Libertaria Unbound License (LUL-1.0) + +### ⚑ Developer Summary (TL;DR) + +**This work is Unbound.** + +You have absolute freedom to: + +- Use it. + +- Change it. + +- Sell it. + +- Close it. + + +The only requirement is **Attribution**: You must keep our copyright notice and the license text in your distribution. + +Take this idea. Run with it. Make it the standard. + +--- + +### πŸ›‘οΈ Why LUL-1.0? + +- **Zero Friction:** Designed for protocols, specifications, and rapid adoption. We want this technology everywhere, even in the hands of competitors. + +- **Patent Disarmament:** Even though it is permissive, you are still protected by our "Cold War" patent grant. + +- **Fortified:** Governed by **Dutch Law** (Amsterdam). Simple, but legally bulletproof. + + +_For the full legal text, see the `LICENSE` file._ \ No newline at end of file diff --git a/sdk/LICENSE b/sdk/LICENSE new file mode 100644 index 0000000..7f0e04c --- /dev/null +++ b/sdk/LICENSE @@ -0,0 +1,4 @@ +This directory is licensed under The Libertaria Sovereign License v1.0 (LSL-1.0). +See ../legal/LICENSE_SOVEREIGN.md for full text. + +SPDX-License-Identifier: LSL-1.0 diff --git a/janus-sdk/README.md b/sdk/janus-sdk/README.md similarity index 100% rename from janus-sdk/README.md rename to sdk/janus-sdk/README.md diff --git a/janus-sdk/libertaria/context.jan b/sdk/janus-sdk/libertaria/context.jan similarity index 100% rename from janus-sdk/libertaria/context.jan rename to sdk/janus-sdk/libertaria/context.jan diff --git a/janus-sdk/libertaria/identity.jan b/sdk/janus-sdk/libertaria/identity.jan similarity index 100% rename from janus-sdk/libertaria/identity.jan rename to sdk/janus-sdk/libertaria/identity.jan diff --git a/janus-sdk/libertaria/lib.jan b/sdk/janus-sdk/libertaria/lib.jan similarity index 100% rename from janus-sdk/libertaria/lib.jan rename to sdk/janus-sdk/libertaria/lib.jan diff --git a/janus-sdk/libertaria/memory.jan b/sdk/janus-sdk/libertaria/memory.jan similarity index 100% rename from janus-sdk/libertaria/memory.jan rename to sdk/janus-sdk/libertaria/memory.jan diff --git a/janus-sdk/libertaria/message.jan b/sdk/janus-sdk/libertaria/message.jan similarity index 100% rename from janus-sdk/libertaria/message.jan rename to sdk/janus-sdk/libertaria/message.jan diff --git a/l4-feed/duckdb.zig b/sdk/l4-feed/duckdb.zig similarity index 100% rename from l4-feed/duckdb.zig rename to sdk/l4-feed/duckdb.zig diff --git a/l4-feed/feed.zig b/sdk/l4-feed/feed.zig similarity index 100% rename from l4-feed/feed.zig rename to sdk/l4-feed/feed.zig