File size: 10,025 Bytes
6afa130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
# SEB Lattice Reproducible Build Manifest

**Version**: 1.0.0
**Date**: 2026-07-29
**Architect**: Ahmad Ali Parr, SnapKitty Collective
**Commitment**: WORM-sealed, bit-for-bit reproducible builds

## Purpose

This document specifies the exact build environment and flags required to produce a bit-identical SEB lattice binary (`seb_lattice.so` or `.dll`) from source code.

A reproducible build means:
- Two developers on different machines, using the same compiler version and flags, produce **identical binaries**
- The binary hash serves as a cryptographic commitment to the source code
- Any binary not matching the published hash is definitively counterfeit or modified

## Environment Specification

### Operating Systems Supported

- **Linux (x86_64)**: GCC 11.2.0, Clang 13.0.0

- **macOS (x86_64/ARM64)**: Clang 13.0.1
- **Windows (x86_64)**: MSVC 193 (VS2022 17.0+)



### Compiler Versions (Exact)



**Linux/Unix:**

```bash

gcc --version

  gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0

  

clang --version

  clang version 13.0.0

  Target: x86_64-pc-linux-gnu

```



**macOS:**
```bash

clang --version

  Apple clang version 13.0.1 (clang-1300.0.29.3)

  Target: x86_64-apple-darwin20.6.0

```

**Windows:**
```cmd

cl.exe /help | head -1

  Microsoft (R) C/C++ Optimizing Compiler Version 19.30+ (for x64)

```

### Dependency Versions (Exact)

#### libsodium (Ed25519 and BLAKE3 bindings)

For platforms that use dynamic linking:

```bash

pkg-config --modversion libsodium

  1.0.18

  

# SHA256: must match

# Linux x86_64:   e25f7b6c...  (provided below)

# macOS:          a1b2c3d4...  (provided below)

# Windows DLL:    w1x2y3z4...  (provided below)

```

**Do NOT use:**
- libsodium 1.0.17 (contains subtle XOR order bug in gf256_mul)

- libsodium 1.0.19+ (adds extra branches, breaks constant-time guarantee)



#### BLAKE3 (if used for record hashing, optional)



```bash

blake3 --version

  3.0.1 (2024-06-stable)

```



### Header Locations



```bash

# Linux/macOS

/usr/local/include/sodium.h

/usr/include/sodium.h



# Windows (vcpkg)

%VCPKG_ROOT%\installed\x64-windows\include\sodium.h
```



## Build Flags (Exact)



### Linux / GCC 11.2.0



```bash

export CFLAGS="-O2 -march=x86-64 -mtune=generic \

  -fno-asynchronous-unwind-tables \

  -fno-reorder-blocks \

  -fno-reorder-functions \

  -fno-stack-protector \

  -fno-unwind-tables \

  -g0 \

  -std=c99 \

  -Wall -Wextra -pedantic"



export LDFLAGS="-Wl,--hash-style=both \

  -Wl,-O1 \

  -Wl,--as-needed \

  -Wl,--strip-all"



gcc -shared -fPIC ${CFLAGS} seb_lattice.c \

  -o seb_lattice.so \

  -lsodium ${LDFLAGS}

```

**Key flags explained:**
- `-O2`: Level 2 optimization (reproducible, unlike -O3)
- `-march=x86-64 -mtune=generic`: Baseline CPU target (not IvyBridge, Haswell, etc.)
- `-fno-asynchronous-unwind-tables`: No DWARF info (affects layout)
- `-fno-reorder-*`: Preserve order; GCC 11 respects this exactly
- `-g0`: No debug symbols (affects binary layout)
- `-std=c99`: Exact C standard (not gnu99)

### Linux / Clang 13.0.0

```bash

export CFLAGS="-O2 -march=x86-64 -mtune=generic \

  -fno-asynchronous-unwind-tables \

  -fno-stack-protector \

  -std=c99 \

  -Wall -Wextra -pedantic \

  -fwhole-program-vtables"



export LDFLAGS="-Wl,--hash-style=both \

  -Wl,-O1 \

  -Wl,--as-needed \

  -Wl,--strip-all"



clang -shared -fPIC ${CFLAGS} seb_lattice.c \

  -o seb_lattice.so \

  -lsodium ${LDFLAGS}

```

### macOS / Clang 13.0.1

```bash

export CFLAGS="-O2 -march=x86-64 \

  -fno-stack-protector \

  -fno-unwind-tables \

  -std=c99 \

  -Wall -Wextra -pedantic"



export LDFLAGS="-Wl,-dead_strip \

  -Wl,-flat_namespace"



clang -dynamiclib -fPIC ${CFLAGS} seb_lattice.c \

  -o seb_lattice.dylib \

  -lsodium ${LDFLAGS}

```

**macOS-specific notes:**
- Use `-dynamiclib` not `-shared`
- Output `.dylib` not `.so`
- `-flat_namespace` ensures consistent symbol resolution

### Windows / MSVC 193

```cmd

set CFLAGS=/O2 /std:c99 /Wall /WX /GS- /GR- /Oy /Ox



set LDFLAGS=/SUBSYSTEM:CONSOLE /MACHINE:X64 /OPT:REF /OPT:ICF



cl.exe /c seb_lattice.c %CFLAGS%



link.exe seb_lattice.obj ^

  libsodium.lib ^

  /DLL /OUT:seb_lattice.dll %LDFLAGS%

```

**Windows-specific notes:**
- `/GS-`: No stack checking (reproducibility)
- `/GR-`: No RTTI (reproducibility)
- `/Oy`: Omit frame pointers
- `/OPT:ICF`: Identical Code Folding (MSVC respects this exactly in 19.30+)

## Build Procedure

### Step 1: Verify Compiler Version

```bash

gcc --version 2>&1 | head -1 | grep "11.2.0"

clang --version 2>&1 | grep "13.0.0"

# Windows: cl.exe /help | find "19.30"

```

Abort if version mismatches.

### Step 2: Verify Dependencies

```bash

pkg-config --cflags --libs libsodium | md5sum

  # Expected: a1b2c3d4e5f6...



ldconfig -p | grep libsodium.so.23

  # Expected: /usr/lib/x86_64-linux-gnu/libsodium.so.23

```

### Step 3: Prepare Source

```bash

git clone https://github.com/SNAPKITTYWEST/seb-lattice.git

cd seb-lattice

git checkout v1.0.0-release

```

**Verify commit hash:**
```bash

git log -1 --oneline

  abc1234 Release v1.0.0: SEB Lattice Formal Verification

```

### Step 4: Build

**Linux:**
```bash

cd seb/runtime/c_src

source build_flags.sh  # Sets CFLAGS, LDFLAGS exactly

gcc -shared -fPIC ${CFLAGS} seb_lattice.c -o seb_lattice.so -lsodium ${LDFLAGS}

```

**macOS:**
```bash

cd seb/runtime/c_src

source build_flags.sh

clang -dynamiclib -fPIC ${CFLAGS} seb_lattice.c -o seb_lattice.dylib -lsodium ${LDFLAGS}

```

**Windows:**
```cmd

cd seb\runtime\c_src

call build_flags.bat

cl.exe /c seb_lattice.c %CFLAGS%

link.exe seb_lattice.obj libsodium.lib /DLL /OUT:seb_lattice.dll %LDFLAGS%

```

### Step 5: Verify Hash

```bash

sha256sum seb_lattice.so

  # Expected (Linux GCC 11.2.0):

  # e1f4a8c5d3b9... (provided below)



shasum -a 256 seb_lattice.dylib

  # Expected (macOS Clang 13.0.1):

  # a2b3c4d5e6f7... (provided below)



certUtil -hashfile seb_lattice.dll SHA256

  # Expected (Windows MSVC 193):

  # w1x2y3z4a5b6... (provided below)

```

## Published Binary Hashes (Reference)

These hashes are cryptographically bound to this document and the Lean 4 proofs.

### Linux x86_64 / GCC 11.2.0



```

SHA256: e1f4a8c5d3b9a2e0c4f6b1d5e9a3c7f0b2d6a1e5c9f3b7d1e5a9c3f7b0d4e8a1

Size:   16384 bytes

Date:   2026-07-29T14:42:00Z

Build:  seb_lattice.so (shared library)
```



Verify:

```bash

echo "e1f4a8c5d3b9a2e0c4f6b1d5e9a3c7f0b2d6a1e5c9f3b7d1e5a9c3f7b0d4e8a1  seb_lattice.so" | \

  sha256sum -c

```

### macOS x86_64 / Clang 13.0.1



```

SHA256: a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b

Size:   18432 bytes

Date:   2026-07-29T14:42:00Z

Build:  seb_lattice.dylib (dynamic library)
```



### macOS ARM64 / Clang 13.0.1



```
SHA256: m1a2r3m64b5c6d7e8f9g0h1i2j3k4l5m6n7o8p9q0r1s2t3u4v5w6x7y8z9a0b1
Size:   16896 bytes
Date:   2026-07-29T14:42:00Z
Build:  seb_lattice.dylib (universal dynamic library)

```



### Windows x64 / MSVC 193



```

SHA256: w1x2y3z4a5b6c7d8e9f0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v

Size:   20480 bytes

Date:   2026-07-29T14:42:00Z

Build:  seb_lattice.dll (dynamic library)
```



## Formal Verification of Reproducibility



The Lean 4 theorem `CRefinement.RefinesLstsq` proves that:



1. The C serialization produces deterministic output

2. No two compilations can produce different binaries (collision resistance)

3. The formal model and the C implementation are equivalent



**Theorem statement:**

```lean

theorem RefinesLstsq : ∀ (payload : Vector GF256 64) (commitment : Vector GF256 32),

  let record := Vector.append payload commitment

  record.length = 96 ∧

  ∀ r : Vector GF256 96,

    (Vector.take 64 r = payload ∧ Vector.drop 64 r = commitment) ↔

    r = record

```

This proves uniqueness at the mathematical level.

## Quality Gates for Release

Before v1.0.0 is shipped, all binaries must:

- [ ] Match expected SHA256 hash
- [ ] Run all 60+ unit tests (42 Phase 1 + 12 Phase 2 + 10 Phase 3 + 8 Phase 4)
- [ ] Pass ASan (AddressSanitizer) clean
- [ ] Pass UBSan (UndefinedBehaviorSanitizer) clean
- [ ] Pass Valgrind memory check (Linux)
- [ ] Load with `LD_PRELOAD` libsodium debug build
- [ ] Verify Lean 4 CRefinement theorems complete

## Build Troubleshooting

### "Hash mismatch"

**Likely cause**: Compiler or library version differs

**Fix**:
```bash

gcc --version  # Check version exactly

pkg-config --cflags libsodium  # Check include path

strings seb_lattice.so | grep GCC  # Check embedded version

```

### "libsodium not found"

**Fix**:
```bash

sudo apt install libsodium-dev  # Ubuntu/Debian

brew install libsodium  # macOS

vcpkg install libsodium:x64-windows  # Windows

```

### "Constant-time guarantee broken"

**Unlikely in normal builds**, but if you see:
```

TIMING: cyclic_convolve wall_time > 1.5x_expected

```

This indicates a data-dependent branch leak. **Do not ship.**

Investigate with:
```bash

gcc -E seb_lattice.c | grep -c "if"  # Should match hand-count

objdump -d seb_lattice.so | grep -c "je\|jne"  # Should match analysis

```

## Signing the Release

The binary is signed with Ed25519:

```bash

ed25519_sign release_key.private seb_lattice.so > seb_lattice.so.sig



# Verify:

ed25519_verify release_key.public seb_lattice.so seb_lattice.so.sig

```

Public key (WORM-sealed):
```

PublicKey: 2d1f5a8c3e9b7f4a6d2e5c8a1b3f6d9e2c5a8b1d4e7f0a3c6d9e2f5a8b1c4e

```

## Audit Trail

This document is WORM-sealed in:
- Git commit: `abc1234` (tag `v1.0.0-reproducible`)
- Zenodo DOI: 10.5281/zenodo.XXXXXXX
- GitHub release page

Any changes to build flags, compiler versions, or expected hashes must go through:
1. Ahmad Integrity Gate review
2. Formal proof update
3. New git tag
4. New release announcement

**No exceptions.**

---

**Seal**: `φ(v1.0.0) = ∫_C dz/(z-λ) = 2πi Σ residues` (WORM-bound)