lumbda/tests
russell@unturf.com d36bc4a8ae tests: prove-ursa-runs.sh — runs Zoë's live source on every tier
Six-step proof that https://wedgewack.org/ursa.lisp.txt runs in lumbda
with only the documented minimal annotations — no semantic rewrites,
no algorithm changes. New make target `prove-ursa-runs` wires it.

Steps:

  1. Fetch /robots.txt; abort if it disallows /ursa.lisp.txt.
  2. Fetch the source (209 lines, sha256 recorded in output).
  3. Apply the four character-level substitutions sed'd from the
     documented annotations:
       (loop    → (cl-loop   (call form only — clause keyword stays)
       (when    → (cl-when   (call form only)
       (random  → (random-int
       &key     → &optional
     Prepend (load "cl-compat.lsp").
  4. Verify that examples/ursa.lisp.txt's defuns are exactly Zoë's
     defuns minus {rho, factor, digits} — the three that depend on
     CL features (adjustable arrays, defgeneric/defmethod) out of
     ticket 0004's scope. No extra edits anywhere.
  5. Run tests/ursa.lsp (which uses the same function bodies Zoë
     wrote) on Python + C + asm-full; expect 28/28 passing on each.
  6. Build a "Zoë's live source + 10-line stubs" file — no-op
     defgeneric/defmethod, 'unshimmed returns for make-array / sbit /
     vector-push-extend / vector-pop / fill-pointer, identity coerce,
     naive integer-length — and spot-check seven answers on asm-full:
       expt-mod 3 7 100 = 87
       primep 97        = 97
       primep 100       = #f
       mersenne 7       = 127
       ll-primep 13     = #t
       ll-primep 11     = #f
       repunit-value 5  = 31
     Any missing line fails the proof.

Sed-subset nuance: `(loop ` / `(when ` with an open-paren prefix
matches the call-form usage we want to rewrite. Bare `when` that
appears as a cl-loop clause keyword (no open paren before it) is
left unchanged — that's the macro's own reserved word. Same for
loop.

Usage:
  make prove-ursa-runs    (network required — live fetch + spot-check)
  make zoe-favorites-test (offline; uses the committed examples/)
2026-04-24 12:48:09 -04:00
..
bench-3way.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-gc-adaptive.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-gc-arena.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-gc-http.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-gc-memory.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-hashset.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-lumbda-www.sh lumbda-www: asm-gc static file server for lumbda.com + caddy race 2026-04-19 12:12:59 -04:00
bench-proof.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
bench-www-race.sh lumbda-www: sendfile(2) primitive + adaptive preload — matches caddy throughput at 9x less RSS 2026-04-19 12:41:40 -04:00
cl-compat.lsp asm: values + call-with-values + #(...) reader + exit + vector equal? 2026-04-24 12:38:47 -04:00
functional.lsp portal-rng: add (random-seed-from-os!) across all three tiers 2026-04-20 15:50:26 -04:00
portal-benchmark.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
portal-cross-load.lsp asm/c/py: add (load), ports, write-file/file->string — full cross-impl parity 2026-04-16 16:37:40 -04:00
portal-cross-save.lsp asm/c/py: add (load), ports, write-file/file->string — full cross-impl parity 2026-04-16 16:37:40 -04:00
portal-cross-test.sh portal-rng: asm xoshiro256** + cross-impl tests + default seed=0 2026-04-20 11:11:47 -04:00
portal-exchange.lsp rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
portal-formats.lsp rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
portal-rng-cross-test.sh portal-rng: 9-cell cross-impl stream matches independent Python baseline 2026-04-23 20:19:16 -04:00
portal-rng-load.lsp portal-rng: asm xoshiro256** + cross-impl tests + default seed=0 2026-04-20 11:11:47 -04:00
portal-rng-save.lsp portal-rng: asm xoshiro256** + cross-impl tests + default seed=0 2026-04-20 11:11:47 -04:00
prove-ursa-runs.sh tests: prove-ursa-runs.sh — runs Zoë's live source on every tier 2026-04-24 12:48:09 -04:00
rpc-chain-bench.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
ursa-scheme.lsp asm: values + call-with-values + #(...) reader + exit + vector equal? 2026-04-24 12:38:47 -04:00
ursa.lsp asm: values + call-with-values + #(...) reader + exit + vector equal? 2026-04-24 12:38:47 -04:00
web-benchmark.sh rename: uncommonlisp -> lumbda throughout the repo 2026-04-19 10:20:11 -04:00
zoe-favorites-test.sh zoe-favorites-test: cover all four tiers (Python + C + asm + asm-full) 2026-04-24 12:27:51 -04:00