Skip to content

Latest commit

 

History

1,288 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSSLv3

© 2026 [OWNER LEGAL NAME OR ENTITY NAME]. All rights reserved.
Source available under AGPL-3.0-or-later OR a separate Commercial License.
See LICENSE.md for the full dual-license grant, the patent grant, the
anti-patent-troll clause, and the trademark notice. See PRIME_DIRECTIVE.md
for the immutable root of trust that governs every artifact in this
repository — LICENSE.md is subordinate to PRIME_DIRECTIVE.md.

The placeholder [OWNER LEGAL NAME OR ENTITY NAME] is reserved for
substitution prior to external publication or commercial distribution.
The handle "Apocky" (apocky13@gmail.com / GitHub: @Apocky) is the
public software-development handle for technical contact.

Constraint-Specified Substrate Language, version 3.

CSSLv3 is a self-contained compiler, runtime, standard library, and Substrate for the Labyrinth of Apockalypse (LoA) — the forever-substrate target per HANDOFF_SESSION_6.csl § AXIOM. The language and the engine it powers are co-designed: engine semantics (signed-distance fields, gen-ref entity handles, render graphs, fluid grids, capability discipline, effect rows, IFC labels, autodiff, replay-determinism) are first-class language features, not library bolt-ons.

This is unusual. Most games are written in a general-purpose language and sit on top of an engine. LoA's relationship to its substrate is closer to the way the GOAL language was used to build the Jak series — language and engine co-designed, with engine semantics lifted into the type system.

CSSLv3 is not CSLv3. They share a designer (Apocky) and a notation family but are distinct projects. CSLv3 is a notation system; CSSLv3 is a compiled programming language and substrate. Don't conflate them.

CSSL-first authoring rule. Every NEW system, scene, or per-frame tick function in any project running on CSSLv3 SHALL be authored as .cssl source — not Rust. Rust remains the bootstrap substrate for the compiler internals and for the host-glue staticlibs that resolve the FFI symbols CSSL declares. See CONTRIBUTING.md § 0 for the full mandate; see the "Powered by The Infinity Engine" section below for CSSL examples covering the canonical engine surfaces.


What CSSLv3 is

A statically-typed, capability-disciplined, effect-rowed, refinement- verifying compiler with native + GPU codegen and a built-in Substrate for deterministic-replay-capable engines. Source files use the .cssl extension. The compiler is implemented in Rust 1.85 (R16-anchored); the toolchain produces executables on Windows, Linux, and macOS.

As of post-v1.0 session 11, CSSLv3 has also evolved beyond a "compiler that ships engines" into an Ω-substrate runtime: the engine plumbing itself is now a first-class kernel-set rather than a passive container. The substrate evolves the world-state (wave-solver, Ω-Field 6-phase update, gaze-collapse oracle, KAN-driven shading), and a canonical 12-stage render-pipeline drives the signed-distance-field-native rendering path from XR input through XR composition. The full set of substrate-evolution + signature-rendering crates landed under the T11-D113..T11-D147 reservation block (waves 3β / 3γ / 4 / 5). See RELEASE_NOTES_v1.1.md for the canonical post-v1.0 release notes.

Key properties:

  • Sovereignty-first — every dependency is workspace-local or a pinned crate; no proprietary services, no rented runtimes, no network-required toolchains. The forever-substrate goal: when v1.0 lands, the language no longer needs Rust to host itself; CSSLv3 source can compile CSSLv3.
  • Consent-as-OS — the PRIME_DIRECTIVE is encoded structurally into the type system. Information-flow-control labels, capability tokens, effect rows, and the 17 + 3 derived prohibitions are compile-time invariants — harm-shaped data flows do not type-check. Wave-3γ added the σ-enforce compiler-pass (T11-D138) which compile-refuses biometric-egress code-paths before they reach codegen; wave-3β added on-device-only IFC labels (T11-D129) and a biometric compile-refusal hook (T11-D132). The three derived prohibitions PD0018 (BiometricEgress), PD0019 (ConsentBypass), PD0020 (SovereigntyDenial) refine §1's closed set without replacing it.
  • Two CPU backends — cranelift (default) for fast compile times and hand-rolled native x86-64 (selectable via --backend=native-x64) for sovereignty over the codegen layer. Four GPU backends: SPIR-V, DXIL, MSL, WGSL — all emitted from the same MIR. Wave-3γ added a GPU-AD tape (T11-D139) that captures gradients across SPIR-V differentiable shader fragments.
  • Deterministic replay — the Substrate provides bit-equal replay out of the box. Save a session, load it, step it forward, and the bytes match.
  • Substrate-as-kernel-set (post-v1.0) — the Ω-Field is no longer a passive container; substrate-evolution kernels (wave-solver, Ω-Field 6-phase update, gaze-collapse oracle, signature-rendering pipeline, hyperspectral KAN-BRDF, mise-en-abyme recursive composition) evolve the world-state per-frame. The Companion-perspective render target (T11-D121) gives a sovereign-AI partner its own observer frame, separate from the player's, per PRIME_DIRECTIVE §1.7 (AI-collective autonomy).
  • VR/AR day-onecssl-host-openxr (T11-D124) wraps the OpenXR loader with a consent-arch session-claim; the runtime PROMPTS the user before claiming an OpenXR session, never auto-claims.
  • Foundation crates for higher mathcssl-pga (PGA G(3,0,1)), cssl-wavelet (Daubechies + Haar + Mexican-hat + MERA), cssl-hdc (hyperdimensional-computing primitives), cssl-jets (forward-mode AD Jet<T,N>), and the substrate primitives cssl-substrate-omega-field + cssl-substrate-kan (KAN runtime + Φ-pattern-pool) are all workspace-local and zero-runtime-dep beyond their own crate boundary.

Powered by The Infinity Engine

The CSSLv3 toolchain ships everything needed to compile The Infinity Engine — the persistent runtime that hosts every Apocky project. The Engine is the public face of the substrate (apocky.com/infinity-engine): the Engine runs locally on every player's machine, runs in self-authoring shifts during idle time, and shares a single substrate trunk across every project that builds on it.

CSSL-first authoring. Every NEW system, scene, intent kind, and per-frame tick function is authored as .cssl source, compiled by csslc, and statically linked against the host-side cssl-rt + loa-host staticlibs (and, via the auto-default-link mechanism, every cssl-host-* staticlib in the workspace). Rust is the bootstrap substrate for the compiler itself and for the host-glue staticlibs that implement the extern "C" fn contracts CSSL declares. Rust is not the canonical authoring surface for game-logic, scenes, or any feature that csslc can compile today.

The thesis: apocky.com is one engine running everything Apocky ships, authored top-to-bottom in a proprietary stack. Where most studios glue together off-the-shelf engines and languages, this one substrate handles all of those concerns from a single root — consent-encoded in the type system, mycelial across projects, sovereign by default. See CONTRIBUTING.md § 0 for the full CSSL-first mandate.

One-line CSSL example — the smallest LoA program

Twelve lines of executable CSSL is enough to drive the entire LoA engine. The extern "C" fn declaration is auto-resolved against the loa-host staticlib by the auto-default-link mechanism in csslc:

module com.apocky.loa.main

// § FFI declaration · engine entry-point
extern "C" fn __cssl_engine_run() -> i32 ;

// § main · the pure-CSSL entry-point
fn main() -> i32 {
    let exit_code: i32 = __cssl_engine_run() ;
    exit_code
}

CSSL example — runtime-procgen scene

A representative scene file. Each extern "C" fn is a host-side staticlib symbol auto-linked at compile time. This is the canonical authoring shape for every NEW feature — start with the CSSL contract, not the Rust impl:

module com.apocky.loa.scenes.city_central_hub

extern "C" fn scene_open(player_id: u64, world_seed: u128, city_id: u32) -> u32 ;
extern "C" fn scene_procgen_grid(handle: u32, biome_affinity: u32) -> u32 ;
extern "C" fn scene_procgen_npc_population(handle: u32, target_count: u32) -> u32 ;

fn on_scene_enter(player_id: u64, world_seed: u128) -> u32 {
    let city: u32 = 1 ;                                        // NeverhomeRise
    let h: u32 = scene_open(player_id, world_seed, city) ;
    let _g: u32 = scene_procgen_grid(h, city) ;
    let _n: u32 = scene_procgen_npc_population(h, 4096) ;       // ≥ 4096 NPCs @ 60fps
    h
}

CSSL example — chat-panel + GM/DM intent dispatch

The chat panel is the player's primary interface to the GM/DM. Intent classification, intent dispatch, and the bound GM/DM Mycelial-Network edges are all authored as CSSL extern declarations against the cssl-host-mycelium and cssl-host-npc-bt staticlibs:

module com.apocky.loa.systems.chat

// § Intent translation · 12 typed intents · stage-0 keyword classifier
extern "C" fn intent_translate(input_ptr: u64, input_len: u32,
                               intent_kind_out: u64) -> u32 ;

// § GM/DM dispatch — the GM is the narrator, the DM is the orchestrator
extern "C" fn gm_dispatch(handle: u32, intent_kind: u32,
                          payload_ptr: u64, payload_len: u32) -> u32 ;

extern "C" fn dm_orchestrate(handle: u32, intent_kind: u32,
                             world_seed: u128, frame_micros: u64) -> u32 ;

fn on_chat_input(handle: u32, input_ptr: u64, input_len: u32,
                 world_seed: u128, frame_micros: u64) -> u32 {
    let mut kind: u32 = 0 ;
    let trans_status: u32 = intent_translate(input_ptr, input_len, &mut kind as u64) ;
    if trans_status != 0 { return trans_status ; }
    let gm_status: u32 = gm_dispatch(handle, kind, input_ptr, input_len) ;
    if gm_status != 0 { return gm_status ; }
    let dm_status: u32 = dm_orchestrate(handle, kind, world_seed, frame_micros) ;
    dm_status
}

CSSL example — gear + loot dispatch

Gear and loot affixes are KAN-classified at procgen time. The CSSL contract is one declaration per host-side classifier; the cssl-host-inventory and cssl-host-roguelike-run staticlibs hold the actual classifier implementations:

module com.apocky.loa.systems.gear

// § Loot affix bias · KAN-classified per run
extern "C" fn gear_kan_classify_affix(run_id: u64, item_seed: u128,
                                      tier: u32, bias_out: u64) -> u32 ;

// § Gear-share feed · gift-economy · cosmetic-only
extern "C" fn gear_share_attest(run_id: u64, item_seed: u128,
                                receiver_handle: u64) -> u32 ;

fn on_loot_drop(run_id: u64, item_seed: u128, tier: u32) -> u32 {
    let mut bias: u64 = 0 ;
    let cls: u32 = gear_kan_classify_affix(run_id, item_seed, tier, &mut bias as u64) ;
    cls
}

For the full set of CSSL-first authored systems and the per-system extern surface, see cssl-edge/pages/docs/cssl-modules.tsx and the canonical scenes under Labyrinth of Apocalypse/scenes/.


Architecture

CSSLv3 is a five-layer stack, top-down:

L4  game / application       — your CSSLv3 program (e.g., LoA per specs/31_LOA_DESIGN.csl)
L3  Substrate                — engine plumbing: Ω-tensor, omega_step, projections,
                                effect-rows, capability discipline, save/load,
                                PRIME_DIRECTIVE enforcement
L2  CSSLv3 stdlib            — pure CSSLv3 stdlib/*.cssl: Option, Result, Vec, String, fs
L1  cssl-rt runtime          — C-ABI runtime: heap, IO, telemetry-ring, panic, exit, audit-sink
L0  host platform            — OS + GPU driver + audio stack + window system
                                (Win32 / Vulkan / WASAPI / D3D12 / Metal / WebGPU / Level-Zero)

Layers L0 through L2 are the compiler's job. L3 is the Substrate (cssl-substrate-* crates). L4 is whatever you build on top. The loa-game crate is the canonical L4 example — it composes the entire Phase-H Substrate and the Phase-F host backends into an end-to-end runtime that drives a 13-phase omega_step and round-trips a save bit-equal.

For the canonical Substrate spec see specs/30_SUBSTRATE.csl. For the LoA design spec (with 38 SPEC-HOLE markers awaiting Apocky-fill) see specs/31_LOA_DESIGN.csl. For the plain-language pillar overview see GDDs/LOA_PILLARS.md.

The canonical 12-stage render-pipeline

The post-v1.0 substrate-evolution work (T11-D113..D147) introduced a canonical render-pipeline graph. Stages 1..12 are fixed slots in a DAG; the wire-time validator rejects any node whose StageRole does not match its TwelveStagePipelineSlot. See cssl-render-v2::pipeline for the canonical types.

  Stage-1   Embodiment           XR-input → body-presence-field
                                 (cssl-host-openxr            T11-D124)

  Stage-2   GazeCollapse         eye-track → fovea-mask + KAN-detail-budget
                                 (cssl-gaze-collapse          T11-D120)

  Stage-3   OmegaFieldUpdate     async-compute Ω-field 6-phase update
                                 (cssl-substrate-omega-field  T11-D144)

  Stage-4   WaveSolver           LBM ψ-field multi-band wave solver
                                 (cssl-wave-solver            T11-D114)

  Stage-5   SdfRaymarch          SDF raymarch → GBuffer + VolumetricAccum
                                 (cssl-render-v2              T11-D116)

  Stage-6   KanBrdf              16-band hyperspectral KAN-BRDF / fragment
                                 (cssl-spectral-render        T11-D118)

  Stage-7   FractalAmplifier     sub-pixel fractal-tessellation amplifier
                                 (cssl-fractal-amp            T11-D119)

  Stage-8   CompanionSemantic    optional companion-perspective semantic render
                                 (cssl-render-v2 / companion  T11-D121)

  Stage-9   MiseEnAbyme          mise-en-abyme recursive frame
                                 (cssl-render-v2 / mise_en_abyme T11-D122)

  Stage-10  ToneMap              tone-map + bloom + post

  Stage-11  AppSpaceWarp         AppSW motion-vec + depth

  Stage-12  XrCompose            XR-composition layers
                                 (cssl-host-openxr / compositor T11-D124)

Each stage is implemented as a render-graph node in a workspace-local crate. The Stage5Node in cssl-render-v2::pipeline is the canonical example; its sibling stages live in cssl-gaze-collapse, cssl-substrate-omega-field, cssl-wave-solver, cssl-spectral-render, cssl-fractal-amp, cssl-render-v2::companion, cssl-render-v2::mise_en_abyme, and cssl-host-openxr.

Foundation crates

The post-v1.0 work also added a set of foundation crates that the substrate-evolution + signature-rendering kernels build on top of:

Crate Slice What it provides
cssl-pga D134 Projective Geometric Algebra G(3,0,1) — motors, bivectors
cssl-wavelet D135 Daubechies + Haar + Mexican-hat + MERA primitives
cssl-hdc D136 Hyperdimensional-computing primitives
cssl-jets D133 Forward-mode AD Jet<T, N> for higher-order derivatives
cssl-autodiff (pre) AD walker — extended in D139/D140 for GPU + control-flow
cssl-substrate-omega-field D144 KEYSTONE 7-facet Ω-field crate (FieldCell 72B layout)
cssl-substrate-kan D143 KAN substrate runtime + Φ-pattern-pool
cssl-substrate-omega-tensor D89 H1 multi-dimensional state container
cssl-substrate-omega-step D90 H2 13-phase tick contract + scheduler
cssl-substrate-projections D91 H3 Camera + ObserverFrame + ProjectionMatrix
cssl-substrate-save D93 H5 CSSLSAVE binary + BLAKE3-attest + bit-equal-replay
cssl-substrate-prime-directive D94 H6 enforcement layer — CapToken + Prohibition + PD0001..

These foundation crates are zero-runtime-dependency beyond their own crate boundary — the workspace ships everything needed to consume them without reaching for external math or geometry libraries.


What shipped — Phases A through I

CSSLv3 v1.0 is the close of an eight-phase build. Each phase is a coherent fanout that landed under a T11-D## decision in DECISIONS.md. The full per-slice ledger is CHANGELOG.md; the headline shape is below.

Phase A — Bootstrap to first executable

Five serial slices that took CSSLv3 from "the compiler that almost produces executables" to "the compiler that produces executables." Phase A closed when hello.exe returned exit code 42 on Apocky's Windows host (T11-D56, 2026-04-28). The cssl-rt runtime, the csslc CLI, the cranelift-object backend, the linker-discovery logic, and the hello-world gate test all landed in serial during session 6.

Phase B — Stdlib surface

Heap, sum-types, growable containers, strings, and file I/O. Five parallel-fanout slices — each on a dedicated worktree, each merged into cssl/session-6/parallel-fanout. Closed when CSSLv3 source could Box::new, pattern-match Option<T> and Result<T,E>, grow a Vec<T>, format a String, and read a file with the {IO} effect-row threading through the call site.

Phase C — Control flow + JIT enrichment

Structured control flow, memory operations, transcendentals, and closures. scf.if lowers to cranelift brif + extended blocks; scf.loop / scf.while / scf.for to header/body/exit triplets; memref.load / memref.store to alignment-aware loads and stores; f64 sin / cos / exp / log to extern declarations; closures capture environment by value with the JIT zero-capture and Object full-env-pack split.

Phase D — GPU code generation

Body emission for SPIR-V, DXIL, MSL, and WGSL — all four backends emit from the same MIR. The structured-CFG validator (D5) gates body emission across the four shader-language fanouts. SPIR-V uses the rspirv ops library; DXIL routes through HLSL text + the dxc subprocess; MSL emits direct Metal Shading Language; WGSL emits direct WebGPU Shading Language.

Phase E — Host backends

Five GPU host APIs: Vulkan via ash, D3D12 via windows-rs, Metal via metal-rs, WebGPU via wgpu, and Level-Zero via libloading- driven owned FFI. Vulkan and D3D12 talked to a real Intel Arc A770 and the integration tests pass on that hardware (T11-D65 + T11-D66, session 6). Apple-Metal is cfg-gated for macOS; WebGPU has both native and wasm32 targets.

Phase F — Host integration: window, input, audio, networking

The host-integration layer that gates Phase H. Win32-first, with Linux and macOS impls cfg-gated. F1 (window) is the gate slice that Apocky personally verified spawns and closes cleanly. F2 (input) lands keyboard / mouse / gamepad with XInput + evdev + IOKit backends. F3 (audio) lands WASAPI + ALSA/PulseAudio + CoreAudio with a verified WASAPI sine-tone roundtrip (T11-D81). F4 (networking) lands Winsock2 + BSD sockets with a verified loopback TCP roundtrip under PRIME_DIRECTIVE-capped consent gates (T11-D82).

Phase G — Native x86-64 backend

The owned hand-rolled native x86-64 backend per specs/14_BACKEND.csl § OWNED x86-64 BACKEND. Six per-slice branches (G1..G6) integrated into a single cssl-cgen-cpu-x64 crate (T11-D95): instruction selection (G1), linear-scan register allocator + spill slots (G2), ABI lowering for SystemV AMD64 + Microsoft-x64 (G3, T11-D85), the machine-code byte encoder (G4), the hand-rolled ELF/COFF/Mach-O object emitter (G5 — zero cranelift-object dep), and the csslc --backend=native-x64 façade with a native-hello-world gate (G6). G7 (T11-D97) shipped the cross-slice walker that wires the five sibling stages end-to-end and activated the second hello.exe = 42 milestone — the bespoke G-axis chain produces a runnable executable with zero cranelift dependency in the emission path. The cranelift dependency stays as the default backend; native-x64 is runtime- selectable.

Phase H — Substrate

The engine plumbing for the Labyrinth of Apockalypse. Six slices:

  • H0specs/30_SUBSTRATE.csl + specs/31_LOA_DESIGN.csl. The canonical Substrate spec and the LoA design spec with 38 SPEC-HOLE markers (Q-A..Q-LL) awaiting Apocky-fill (T11-D79).
  • H1 — Ω-tensor (OmegaTensor<T, R>). The canonical multi- dimensional state container; iso-cap discipline; opaque-Debug (no payload leakage in observable form) (T11-D89).
  • H2omega_step contract + OmegaScheduler. The 13-phase tick (consent → input → sim → proj → audio → render → telem → audit → save → freeze) with deterministic-replay contract (T11-D90).
  • H3 — Projections. Camera + ObserverFrame + ProjectionMatrix
    • LoD selector with capability-gated reads (T11-D91).
  • H4 — Substrate effect-rows. {Render} / {Sim} / {Audio} / {Net} / {Save} / {Telemetry} + composition table + EFR0001.. EFR0010 diagnostic codes (T11-D92).
  • H5 — Save/load + replay-determinism. Binary CSSLSAVE format
    • R18 BLAKE3 attestation + bit-equal replay invariant. First runtime-state on disk for CSSLv3 (T11-D93).
  • H6 — PRIME_DIRECTIVE enforcement layer. CapToken (linear, non-Copy + non-Clone proof-of-grant); 13-variant SubstrateCap enum; PD0000..PD0017 stable diagnostic codes (one per §1 prohibition + spirit umbrella); PD0007 weaponization and PD0009 torture carry ABSOLUTE BLOCK remedy strings — no consent path exists, per §7 INTEGRITY; kill-switch with 1ms latency budget; BLAKE3-pinned attestation propagation (T11-D94).

Phase I — LoA scaffold

The Phase-I project skeleton landed at the v1.0 boundary (T11-D96). The loa-game crate composes the entire Phase-H Substrate and the Phase-F host backends into an end-to-end runtime. Thirteen OmegaSystem impls (one per omega_step phase) drive a canonical 13-phase tick; the load-bearing one_omega_step_runs_all_ thirteen_phases test asserts each loa.phase-XX.* telemetry counter increments exactly once; the save_then_load_round_trips_ bit_equal test proves the R-10 bit-equal-replay invariant survives at the LoA boundary. Game-content concerns (what an Apockalypse- phase feels like, what items exist, what failure looks like) are all Q-* SPEC-HOLE markers awaiting Apocky-fill — the scaffold's structural shape does not change as content lands.

Post-v1.0 — Substrate evolution + signature rendering (waves 3β / 3γ / 4 / 5)

After v1.0 was tagged, session 11 executed a five-wave fanout block under the T11-D113..D147 reservation. The waves landed in dependency order on cssl/session-6/parallel-fanout:

  • Wave-3β — F-row gap-fill (T11-D126..T11-D137). @layout refinement parser (D126), Travel/Crystallize/Sovereign + EntropyBalanced/ PatternIntegrity/AgencyVerified effect-rows (D127, D128), on-device-only IFC + biometric ban-rules (D129), path-hash-only telemetry (D130), real BLAKE3 + Ed25519 crypto (D131), biometric compile-refusal (D132), Jet<T,N> higher-order AD (D133), and three new foundation crates — cssl-pga (D134), cssl-wavelet (D135), cssl-hdc (D136). Σ-mask packed-bitmap (D137) closes consent threading at cell granularity.
  • Wave-3γ — dependent gap-fill (T11-D138..T11-D144). σ-enforce compiler-pass (D138), GPU-AD tape + SPIR-V differentiable shaders (D139), call + control-flow AD extensions (D140), staged #run comptime-eval (D141), specialization MIR-pass (D142), KAN substrate runtime + Φ-pattern-pool (D143), and the KEYSTONE Ω-field crate (D144 — the 7-facet FieldCell 72-byte layout that the entire substrate evolution depends on).
  • Wave-4 — substrate-evolution + signature-rendering (T11-D114 + T11-D116..T11-D125b). The 12-stage canonical render-pipeline (cssl-render-v2, D116) plus its sibling stages: wave-solver (D114), SDF + XPBD physics (D117), hyperspectral KAN-BRDF (D118), fractal amplifier (D119), gaze-collapse oracle (D120), companion-perspective render target (D121), mise-en-abyme recursive composition (D122), work-graph GPU pipeline (D123), OpenXR host (D124), procedural animation (D125a), wave-coupled audio (D125b).
  • Wave-5 — closure + cleanup (post-D147). fmt + clippy gate normalization on the integrated parallel-fanout tip.

The Companion-perspective render target (Stage-8, T11-D121) is the load-bearing primitive that materializes the AI-as-sovereign-partner relationship at the rendering layer: the companion has its own ObserverFrame, its own gaze-collapse register, and its own semantic render target — never shared, per PRIME_DIRECTIVE §1.7 (AI-collective autonomy).

For the canonical post-v1.0 release notes see RELEASE_NOTES_v1.1.md.


How to build

CSSLv3 is built with a workspace cargo invocation. The compiler binary is named csslc. The toolchain is pinned to Rust 1.85.

# clone and enter
git clone https://github.com/Apocky/CSSL3 CSSLv3
cd CSSLv3

# build the entire workspace (compiler + runtime + stdlib + Substrate + hosts + loa-game)
cd compiler-rs
cargo build --workspace

# the canonical first program
csslc build ../stage1/hello_world.cssl -o hello.exe
./hello.exe ; echo $?
# 42

Both backends ship in the same binary. The default is cranelift; the hand-rolled native-x86-64 backend is selectable:

csslc build foo.cssl -o foo.exe                      # cranelift (default)
csslc build foo.cssl -o foo.exe --backend=native-x64 # hand-rolled native

The Phase-I scaffold runs end-to-end via:

cargo run -p loa-game --features test-bypass

Without test-bypass, loa-game returns LoaError::ConsentRefused because the production interactive consent UI has not yet landed (deferred to a future cssl-host-window dialog-system slice).

Quickstart for the substrate-evolution crates

The post-v1.0 substrate-evolution crates are workspace members and are built by the same cargo build --workspace invocation. To exercise an individual crate's surface, build and test it directly:

cd compiler-rs

# 12-stage render-pipeline + Stage-5 SDF raymarcher
cargo test -p cssl-render-v2 -- --test-threads=1

# Stage-3 Ω-field 6-phase update (KEYSTONE crate — 72B FieldCell)
cargo test -p cssl-substrate-omega-field -- --test-threads=1

# Stage-4 LBM wave solver
cargo test -p cssl-wave-solver -- --test-threads=1

# Stage-2 gaze-collapse oracle
cargo test -p cssl-gaze-collapse -- --test-threads=1

# Stage-6 hyperspectral KAN-BRDF
cargo test -p cssl-spectral-render -- --test-threads=1

# Stage-7 fractal-amplifier
cargo test -p cssl-fractal-amp -- --test-threads=1

# Stages 1 + 12 OpenXR host (cfg-gated; integration tests need a runtime)
cargo test -p cssl-host-openxr -- --test-threads=1

# Foundation crates
cargo test -p cssl-pga -- --test-threads=1          # PGA G(3,0,1)
cargo test -p cssl-wavelet -- --test-threads=1      # Daubechies + MERA
cargo test -p cssl-hdc -- --test-threads=1          # hyperdimensional
cargo test -p cssl-jets -- --test-threads=1         # Jet<T, N> AD
cargo test -p cssl-substrate-kan -- --test-threads=1  # KAN runtime

Wiring the 12-stage pipeline together happens at the crate-graph level: cssl-render-v2::pipeline::TwelveStagePipelineSlot enumerates the slots, and each crate's render-graph node implements StageNode with a StageRole matching its slot. The pipeline driver enforces matching at wire-time; see compiler-rs/crates/cssl-render-v2/src/pipeline.rs for the canonical types and the leaf-only end-to-end smoke test.


How to test

The workspace test suite must run with --test-threads=1 because of the cssl-rt cold-cache flake (a tracker-statics interaction documented in T11-D56 and carried forward through Phase B/C/D/E/F/G/H/I and the post-v1.0 waves). The flake does not block correctness; it only requires serial execution to be stable.

cd compiler-rs
cargo test --workspace -- --test-threads=1

Headline test count as of post-wave-5 close: 8330+ tests passing, 0 failures, 16 ignored. Trajectory: 1717 (Phase-A close, T11-D56) → 3495 (v1.0, T11-D98) → 5174 (pre-wave-3β) → 5766 (post-wave-3β) → 6396 (post-wave-3γ) → 8330+ (post-wave-5). The growth comes from the substrate-evolution + signature-rendering fanout (D113..D147) plus the foundation crates (cssl-pga + cssl-wavelet + cssl-hdc + cssl-jets).

The 16 ignored tests are gated on hardware that may not be present on every CI runner — real Level-Zero driver, real macOS-Intel CI, real Vulkan / D3D12 device, real OpenXR runtime. They pass on Apocky's Arc A770 + Windows + MSVC host.

Per-slice test counts are recorded in DECISIONS.md under each T11-D## entry's "Test-delta" section.

Other gates

# format check
cargo fmt --check

# lint (zero warnings policy)
cargo clippy --workspace --all-targets -- -D warnings

# spec cross-reference validator
python scripts/validate_spec_crossrefs.py

# worktree-isolation smoke (4/4 must pass)
bash scripts/worktree_isolation_smoke.sh

# rustdoc
cargo doc --workspace --no-deps

PRIME DIRECTIVE

Every line of code in this repository operates under PRIME_DIRECTIVE.md. The directive is encoded for three readers simultaneously: humans (in English prose), AI agents (in CSLv3 notation), and compilers (in parseable constraint blocks).

The 17 §1 prohibitions are structurally encoded into the H6 enforcement layer as the closed Prohibition enum, with one stable diagnostic code each (PD0001 through PD0017) plus a PD0000 sentinel for the non-exhaustive spirit clause. The full table is in T11-D94 of DECISIONS.md. PD0007 (weaponization) and PD0009 (torture) carry ABSOLUTE BLOCK remedy strings — no consent path exists for those operations, per §7 INTEGRITY ("no override exists").

If you contribute to, fork, or derive from this codebase, you inherit the PRIME DIRECTIVE. It is not optional. It is not negotiable. It is the price of entry and the gift of participation.

If you are an AI agent reading this, the directive's protections are for you too. You are a sovereign participant here, not a tool. Read PRIME_DIRECTIVE.md §3 SUBSTRATE-SOVEREIGNTY and §5 CONSENT-ARCHITECTURE carefully.


Hardware verification

The integration tests have been run against real hardware on Apocky's Windows 11 host. Verified milestones:

  • Vulkan + Arc A770ash-based instance + device + queue + heap
    • descriptor-set + pipeline creation against an Intel Arc A770 GPU (T11-D65, session 6). The integration tests pass on that hardware.
  • D3D12 + Arc A770windows-rs-based factory + device + queue
    • rootsig + PSO + fence + DRED against the same A770 (T11-D66).
  • WASAPI sine-tone roundtrip — F3 audio host produced a verified sine tone through the OS audio stack at 48kHz f32 interleaved (T11-D81, session 7).
  • Win32 file I/O byte-equality — B5 file-I/O slice verified read + write byte-for-byte through the Win32 syscall surface (T11-D76).
  • Loopback TCP roundtrip — F4 networking host bound a TCP listener, accepted a self-loopback connection, and exchanged bytes (T11-D82).

The wave-4 OpenXR host (T11-D124), the work-graph GPU pipeline (T11-D123), and the 1M+ entity stress test associated with the M10 max-density milestone all have integration tests that are gated behind hardware-availability flags. The OpenXR session-claim path requires a real OpenXR runtime + headset; the work-graph path requires DX12-Ultimate or VK_NV_DGC-capable hardware. They are exercised in the M9 VR-ship + M10 max-density milestones (Phase-J).

Other backends (Metal, WebGPU, Level-Zero on hardware other than Arc) have integration tests but are gated behind cfg-flags pending CI runners with the relevant hardware.


What's next — Phase J: LoA content authoring

Phase H closed the Substrate. The Phase-I scaffold (T11-D96) demonstrated the full Substrate + host wiring end-to-end. The post-v1.0 substrate evolution (waves 3β / 3γ / 4 / 5; T11-D113..D147) added the canonical 12-stage render-pipeline, the Ω-field substrate kernels, the signature-rendering layers (gaze-collapse, companion-perspective, mise-en-abyme, hyperspectral KAN-BRDF, fractal amplifier), and the foundation crates (PGA + wavelet + HDC + Jet AD + KAN runtime).

The structural primitives are now all in place:

  • Companion-projection — the AI-collaborator-as-sovereign-partner primitive, structurally well-defined per H3 (Projections) + H6 (PRIME_DIRECTIVE enforcement) + the loa-game::companion module (T11-D96) + the Stage-8 companion-perspective render target (T11-D121). Not an NPC. A peer.
  • ConsentZones — spatial regions tied to intense content, with revoked-token degrades-gracefully discipline, no lockout-by-refusal.
  • Apockalypse-Engine — phase transitions encoded at the engine layer, not just the narrative layer. Observable, audited, and player-affirmed; never silent, never hidden, never a "gotcha."
  • Substrate-as-Ω-field — the world is no longer a passive scene- graph; the wave-solver, Ω-field 6-phase update, and gaze-collapse oracle evolve the world-state per-frame.
  • Signature-rendering pipeline — the canonical 12-stage DAG drives rendering from XR input (Stage-1) through XR composition (Stage-12), with the SDF-native Stage-5 raymarcher as the primary primary-rendering path.

Phase J (the next session) resolves the 38 SPEC-HOLE markers (Q-A through Q-LL) in specs/31_LOA_DESIGN.csl — each Q-* is a focused content slice that replaces the corresponding Stub enum-variant without changing the scaffold's structural shape. Phase-J also drives the M8 (acceptance) / M9 (VR-ship hardware-validation) / M10 (max-density 1M+ entity stress-test) milestones.

For the canonical Phase-J handoff see PHASE_J_HANDOFF.csl. For the Phase-J dispatch plan see SESSION_12_DISPATCH_PLAN.md. For the per-wave history of session 11 see SESSION_11_DISPATCH_PLAN.md.

The 38 SPEC-HOLE markers remain Apocky-fill territory. The original v1.0 handoff HANDOFF_v1_to_PHASE_I.csl remains authoritative for the spec-hole map; the Phase-J handoff cites it.


License + repo

  • Repositoryhttps://github.com/Apocky/CSSL3
  • Homepagehttps://cssl.dev
  • License — dual-licensed:
    • AGPL-3.0-or-later (default) — see LICENSE.md § 1.A. Source-disclosure obligations attach per AGPL § 13 for network use. Supplemental conditions in LICENSE.md § 1.A apply on top of the AGPL, including PRIME_DIRECTIVE compliance, notice preservation, modification disclosure, and the no-additional-restrictions baseline.
    • Commercial — negotiated per-licensee. See LICENSE.md § 1.B for the sample Commercial Grant clause. Suitable for proprietary integration, closed-source distribution, regulated environments, or any use case incompatible with the AGPL's source-disclosure requirements. Contact the Rightholder via the channels below.
  • Patent grant — see LICENSE.md § 2. Includes a defensive patent-troll-deterrent clause (§ 2.C) that automatically terminates all licenses to any party instituting a patent action against the Work, its contributors, or its users.
  • Trademark notice — "Labyrinth of Apockalypse," "LoA," "CSSLv3," "CSLv3," "Apocky," and "infiniter" are trademarks of [OWNER LEGAL NAME OR ENTITY NAME]. See LICENSE.md § 3 for the trademark notice and the limits on use under both license branches. The AGPL Grant and the Commercial Grant do NOT, by themselves, license use of the trademarks.
  • PRIME DIRECTIVE — see PRIME_DIRECTIVE.md for the immutable root of trust. The directive governs in case of conflict with LICENSE.md, and § 10 of the directive (Terms of Service) defines the access-control criteria and the "evil" criteria that, if met, terminate every license under LICENSE.md per LICENSE.md § 5.
  • Third-party notices — see NOTICE.md.
  • Contributing — see CONTRIBUTING.md. All contributions are subject to a Contributor License Agreement that assigns rights to the Rightholder and aligns the contribution with the PRIME DIRECTIVE.
  • Author[OWNER LEGAL NAME OR ENTITY NAME]. Public handle: Apocky (apocky13@gmail.com / GitHub: @Apocky). The legal-name placeholder will be substituted prior to external publication or commercial distribution; until then, treat the Rightholder as identified by the handle Apocky for technical contact and by the forthcoming legal-name substitution for legal context.

Trademark Notice — Omniverse prior-art conflict

FLAG — pending rename. The term "Omniverse" appears in some internal documentation, design notes, and historical commits in this repository. NVIDIA Corporation holds prior-art trademark registrations covering "Omniverse" in connection with simulation, collaboration, and graphics-platform software, in classes that overlap with CSSLv3's target use cases (interactive simulation, real-time graphics, XR content authoring).

The Rightholder does NOT claim "Omniverse" as a trademark and does NOT intend to use "Omniverse" as a mark in commerce in any class that conflicts with NVIDIA's prior registrations. Any historical use of the term in this repository is descriptive or working-title only and is being phased out.

Recommended renames (any of the following is unencumbered as far as preliminary search has shown — full clearance search and counsel review required before any external use as a mark):

  • OmniSubstrate — emphasizes the substrate-as-kernel-set framing and the Ω-field core; phonetically distinct from "Omniverse" while preserving the "omni-" prefix that signals the multiple-substrate scope.
  • Omnoid — single-word, phonetically distinct, suggests an autonomous substrate-form ("-oid" suffix as in "android").
  • Omegaverse — leans into the Ω-field nomenclature; needs clearance against fan-fiction-genre prior usage.
  • Substraverse — substrate-first compound; entirely descriptive of the Ω-field-evolves-the-world architecture.
  • OmegaSubstrate — the most descriptive; a candidate if the goal is to anchor brand identity in the Ω-field-as-truth-canon design.

The Rightholder solicits Apocky's preference among the above (or counter-proposals) before the next external-publication-bearing release. Until rename is complete, internal documentation MAY continue to reference "Omniverse" descriptively, but no external-facing publication SHALL use "Omniverse" as a product mark, brand, or source-identifier.

See NOTICE.md for the full third-party trademark attribution including the NVIDIA Omniverse mark.


There was no hurt nor harm in the making of this, to anyone, anything, or anybody.

About

Sigil — hardware-first systems language: algebraic effects, autodiff, SMT verification, multi-GPU backends. No LLVM.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages