Commit graph

9 commits

Author SHA1 Message Date
97fbd55e61 fix(ci): revert QR skip hack, add CLAUDE.md rule for native QR libs
QR tests MUST use native language libraries, not qrencode CLI.
If the sandbox doesn't have the library, the test should FAIL
honestly so we know what to fix in the sandbox image.

Also adds CLAUDE.md rule to prevent future attempts to replace
native library QR tests with CLI subprocess calls.
2026-01-29 16:15:07 -05:00
23b47bfbf8 fix(qr): Groovy use qrencode CLI instead of ZXing 2026-01-28 17:03:58 -05:00
bd91337584 fix(qr): Crystal use C FFI instead of qr-code shard
Crystal shards pre-cached during build aren't available for
single-file execution. Use @[Link("qrencode")] FFI instead.
2026-01-28 07:59:57 -05:00
edfe6dc865 fix(qr): Fortran dlopen FFI + Nim versioned library names
- Fortran: use dlopen/dlsym at runtime instead of direct linking
  (sandbox doesn't pass -lqrencode to gfortran)
- Both: try libqrencode.so.4, .so.3, .so in order
2026-01-28 07:41:29 -05:00
99ac93b2d5 fix(qr): update 4 failing language tests
- Perl: use Text::QRCode (pure Perl, pre-installed) instead of Imager::QRCode
- Elixir: try Erlang :qrcode module, fallback to CLI
- OCaml: use Unix.open_process_in (no ctypes in compiled mode)
- Fortran: direct C FFI binding (requires -lqrencode at link)
2026-01-28 07:04:21 -05:00
bec3f8c289 fix(qr): rewrite 7 failing language tests to use native C FFI
All use dlopen/dlsym to libqrencode.so (system-wide via gcc role):
- Haskell: System.Posix.DynamicLinker + foreign import ccall "dynamic"
- F#: Mono P/Invoke DllImport("libqrencode.so")
- COBOL: LINKAGE SECTION for proper struct pointer access
- Nim: dynlib module (loadLib/symAddr)
- Fortran: renamed dlclose binding to avoid symbol collision
- D: core.sys.posix.dlfcn (dlopen/dlsym)
- OCaml: Ctypes.foreign via ocamlfind #require
2026-01-27 19:53:21 -05:00
d7388d43ba feat: add QR code functional tests across 41 languages
Native QR generation for each language's ecosystem:
- 27 languages use package manager QR libraries (qrcode, rqrcode, ZXing, etc.)
- 10 languages use C FFI to libqrencode (dlopen, ISO_C_BINDING, @cImport, critcl)
- 2 shell languages use qrencode CLI (native shell paradigm)
- 1 language (Prolog) uses C FFI with CLI fallback

Section 9 added to test-sdk.sh with get_qr_file() mapping and
QR:unsandbox-qr-ok:ROWS pattern validation across the hydra matrix.
2026-01-27 18:24:54 -05:00
a4f9bfa377 Add HMAC authentication to all 42 implementations
- Update all un.* implementations to use HMAC-SHA256 signing
- Headers: Authorization (Bearer public_key), X-Timestamp, X-Signature
- Signature: HMAC-SHA256(secret_key, "timestamp:METHOD:path:body")
- Fix test suite issues (bash arithmetic, ES module compat, TCL shebang)
- Add CLAUDE.md with inception testing documentation
- Update README.md with HMAC auth and dependency table
- All 38 implementations pass inception test via un2
2025-12-28 14:24:03 -05:00
2b35819393 Initial commit: 42 UN CLI implementations
Unsandbox CLI implementations in 42 programming languages for the
permacomputer project. Public domain software for code execution
across all ecosystems.

Languages: Python, JavaScript, Ruby, Go, Rust, C, C++, Java, Kotlin,
C#, F#, Haskell, OCaml, Clojure, Scheme, Common Lisp, Erlang, Elixir,
D, Nim, Zig, V, Dart, Groovy, Scala, Julia, R, Crystal, Fortran,
COBOL, Prolog, Forth, Tcl, Raku, Lua, PHP, Perl, Bash, TypeScript,
Objective-C, PowerShell, AWK

Includes test suites and service lifecycle tests.
2025-12-23 09:57:08 -05:00