Spaces:
Running
Running
Deploy Aureon OS (deploy/selfhost stack: nginx edge + fusion API x2 + console + HNC organ + redis + postgres; paper mode) (part 20)
8495bb8 verified Download tests/benchmark/bench_hnc_stack.py from GaryLeckey/aureon-os: direct link, hf CLI and curl.
- Browser
- Download file 24.8 kB
-
https://huggingface.co/spaces/GaryLeckey/aureon-os/resolve/main/tests/benchmark/bench_hnc_stack.py
- Command line
-
hf download hf://spaces/GaryLeckey/aureon-os/tests/benchmark/bench_hnc_stack.py
-
curl -L -o bench_hnc_stack.py https://huggingface.co/spaces/GaryLeckey/aureon-os/resolve/main/tests/benchmark/bench_hnc_stack.py
24.8 kB
| #!/usr/bin/env python3 | |
| """ | |
| bench_hnc_stack.py β Benchmark & Stress Test Suite | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| Covers every layer of the Queen Cognition Stack: | |
| B1 Pure-math microbenchmarks (phi primes, ladder, vibration, ZPE) | |
| B2 Temporal hash chain throughput + fork pressure | |
| B3 Cognitive flux superposition β 1 000-step evolution | |
| B4 Stability governor β full state-machine sweep | |
| B5 HNC Human Loop β end-to-end latency (offline, no LLM) | |
| B6 Stress: 500 rapid messages through the full pipeline | |
| B7 Stress: hash chain under continuous fork/merge | |
| B8 Stress: superposition 10 000 evolution steps | |
| B9 Stress: concurrent pipeline calls (threading) | |
| B10 Self-enhancement engine sandbox (no Ollama required) | |
| Reports: | |
| - p50 / p95 / p99 latency | |
| - throughput (calls/sec) | |
| - RSS memory delta | |
| - Pass / Warn / FAIL verdict per suite | |
| """ | |
| import io | |
| import math | |
| import os | |
| import statistics | |
| import sys | |
| import threading | |
| import time | |
| import traceback | |
| sys.stdout = sys.stdout if 'pytest' in sys.modules else io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") | |
| sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..")) | |
| import psutil | |
| PROC = psutil.Process() | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Timing helpers | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| def rss_mb() -> float: | |
| return PROC.memory_info().rss / 1024 / 1024 | |
| def bench(fn, n: int, label: str): | |
| """Run fn() n times, return list of elapsed seconds.""" | |
| times = [] | |
| for _ in range(n): | |
| t0 = time.perf_counter() | |
| fn() | |
| times.append(time.perf_counter() - t0) | |
| _report(label, times, n) | |
| return times | |
| def _report(label: str, times: list, n: int): | |
| s = sorted(times) | |
| p50 = s[int(n * 0.50)] | |
| p95 = s[int(n * 0.95)] | |
| p99 = s[min(int(n * 0.99), n - 1)] | |
| mean = statistics.mean(times) | |
| total = sum(times) | |
| tps = n / total if total > 0 else 0 | |
| print(f" {label}") | |
| print(f" n={n} mean={mean*1000:.3f}ms " | |
| f"p50={p50*1000:.3f}ms p95={p95*1000:.3f}ms p99={p99*1000:.3f}ms " | |
| f"tps={tps:.1f}/s") | |
| RESULTS: list = [] # (suite_name, verdict, note) | |
| def suite(name: str): | |
| print(f"\n{'='*72}") | |
| print(f" {name}") | |
| print(f"{'='*72}") | |
| def verdict(name: str, ok: bool, note: str = ""): | |
| tag = "PASS" if ok else "FAIL" | |
| RESULTS.append((name, tag, note)) | |
| print(f"\n [{tag}] {name}" + (f" β {note}" if note else "")) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Imports | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| from aureon.queen.hnc_human_loop import ( | |
| build_phi_prime_train, | |
| build_phi_ladder, | |
| compute_vibration_accumulator, | |
| HNCHumanLoop, | |
| ) | |
| from aureon.queen.temporal_ground import ( | |
| compute_zpe_ground, | |
| LAMBDA_ZP, | |
| TemporalHashChain, | |
| CognitiveFluxSuperposition, | |
| StabilityGovernor, | |
| TemporalGroundStation, | |
| ZPEGroundState, | |
| TemporalHashState, | |
| SuperpositionState, | |
| GOVERNOR_STABLE, GOVERNOR_DRIFTING, GOVERNOR_CORRECTING, GOVERNOR_RESET, | |
| HNC_LABELS, GAMMA_TARGET, | |
| ) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B1 β Pure-math microbenchmarks | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B1 Β· Pure-math microbenchmarks") | |
| N_MICRO = 5_000 | |
| mem_before = rss_mb() | |
| bench(lambda: build_phi_prime_train(13), N_MICRO, "build_phi_prime_train(13)") | |
| bench(lambda: build_phi_ladder(7.83), N_MICRO, "build_phi_ladder(7.83 Hz)") | |
| bench(lambda: compute_vibration_accumulator( | |
| "love harmony phi schumann crown consciousness"), | |
| N_MICRO, "compute_vibration_accumulator(6-word sentence)") | |
| bench(lambda: compute_vibration_accumulator( | |
| " ".join(["consciousness resonance love phi golden ratio harmonic"] * 20)), | |
| N_MICRO, "compute_vibration_accumulator(140-word sentence)") | |
| bench(lambda: compute_zpe_ground(0.354), N_MICRO, "compute_zpe_ground()") | |
| mem_delta = rss_mb() - mem_before | |
| verdict("B1 pure-math microbenchmarks", True, | |
| f"RSS delta={mem_delta:+.1f} MB over {N_MICRO} iterations each") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B2 β Temporal hash chain throughput + fork pressure | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B2 Β· Temporal hash chain β throughput + fork pressure") | |
| N_HASH = 10_000 | |
| chain = TemporalHashChain() | |
| # Coherent run | |
| times_coherent = [] | |
| for i in range(N_HASH): | |
| t0 = time.perf_counter() | |
| chain.tick(0.354, 0.978, 0.033, "NEUTRAL", 1, float(i)) | |
| times_coherent.append(time.perf_counter() - t0) | |
| _report("hash chain β 10 000 coherent ticks", times_coherent, N_HASH) | |
| # Fork pressure: alternate coherent / incoherent every 5 ticks | |
| chain2 = TemporalHashChain() | |
| times_fork = [] | |
| forks = 0 | |
| for i in range(N_HASH): | |
| gamma = 0.5 if i % 5 == 0 else 0.97 | |
| t0 = time.perf_counter() | |
| s = chain2.tick(0.354, gamma, 0.033, "NEUTRAL", 1, float(i)) | |
| times_fork.append(time.perf_counter() - t0) | |
| if s.forked_this_tick: | |
| forks += 1 | |
| _report("hash chain β 10 000 fork/merge ticks", times_fork, N_HASH) | |
| print(f" total forks opened: {forks}") | |
| # Verify chain integrity β each hash is unique (no collisions) | |
| chain3 = TemporalHashChain() | |
| hashes = set() | |
| for i in range(1000): | |
| s = chain3.tick(float(i) * 0.001, 0.97, 0.03, "NEUTRAL", 1, float(i)) | |
| hashes.add(s.current_hash) | |
| unique_ok = len(hashes) == 1000 | |
| tps_coherent = N_HASH / sum(times_coherent) | |
| verdict("B2 hash chain throughput", | |
| tps_coherent > 10_000, | |
| f"tps={tps_coherent:.0f}/s unique_hashes={unique_ok}") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B3 β Cognitive flux superposition β 1 000-step evolution | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B3 Β· Cognitive flux superposition β 1 000-step evolution") | |
| N_SUP = 1_000 | |
| cfs = CognitiveFluxSuperposition() | |
| times_sup = [] | |
| norms = [] | |
| PHI2 = ((1 + math.sqrt(5)) / 2) ** 2 | |
| for i in range(N_SUP): | |
| gamma = 0.945 + 0.055 * math.sin(2 * math.pi * i / 100) # oscillate around threshold | |
| vib = {label: 0.3 * math.cos(2 * math.pi * j / 6 + i * 0.1) | |
| for j, label in enumerate(HNC_LABELS)} | |
| t0 = time.perf_counter() | |
| s = cfs.evolve(coherence_gamma=gamma, vibration_per_mode=vib) | |
| times_sup.append(time.perf_counter() - t0) | |
| norms.append(s.norm) | |
| _report("superposition.evolve() Γ 1 000 steps", times_sup, N_SUP) | |
| # Norm must stay bounded (no blowup) | |
| max_norm = max(norms) | |
| min_norm = min(norms) | |
| norm_stable = max_norm < 5.0 and min_norm > 0.0 | |
| print(f" norm range: [{min_norm:.4f}, {max_norm:.4f}] stable={norm_stable}") | |
| # Phase must stay in [0, 2Ο] | |
| # (phases are modded internally β just verify final state) | |
| final = cfs.evolve(coherence_gamma=0.97) | |
| phases_ok = all(0.0 <= ph <= 2 * math.pi for ph in final.phases) | |
| print(f" all phases in [0, 2pi]: {phases_ok}") | |
| verdict("B3 superposition evolution", | |
| norm_stable and phases_ok, | |
| f"max_norm={max_norm:.4f} mean_evolve={statistics.mean(times_sup)*1e6:.1f}us") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B4 β Stability governor full state-machine sweep | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B4 Β· Stability governor β state machine sweep") | |
| def _zpe(gamma: float, grounded: bool = True) -> ZPEGroundState: | |
| return ZPEGroundState( | |
| lambda_zp=LAMBDA_ZP, lambda_t=gamma, | |
| zpe_distance=abs(gamma - GAMMA_TARGET), | |
| grounded=grounded, | |
| correction_pulse=0.0 if grounded else 0.1, | |
| mode_zpe={}, | |
| ) | |
| def _hs(branches: int = 0) -> TemporalHashState: | |
| return TemporalHashState( | |
| current_hash="a"*64, previous_hash="0"*64, chain_length=1, | |
| active_branches=branches, branch_ids=[], | |
| harmonic_fingerprint={}, forked_this_tick=branches > 0, | |
| merged_this_tick=False, | |
| ) | |
| def _sup(norm: float = 1.0) -> SuperpositionState: | |
| return SuperpositionState( | |
| amplitudes=[(norm, 0.0)] + [(0.0, 0.0)] * 5, | |
| probabilities=[norm / 6] * 6, | |
| phases=[0.0] * 6, | |
| norm=norm, | |
| dominant_basis=HNC_LABELS[0], | |
| classical_weight=0.9, | |
| vacuum_weight=0.1, | |
| ) | |
| gov = StabilityGovernor() | |
| N_GOV = 10_000 | |
| # STABLE assessments | |
| times_stable = [] | |
| for _ in range(N_GOV): | |
| t0 = time.perf_counter() | |
| gov.assess(_zpe(0.97, True), _hs(0), _sup(1.0)) | |
| times_stable.append(time.perf_counter() - t0) | |
| _report("governor.assess() STABLE Γ 10 000", times_stable, N_GOV) | |
| # Full state cycle: STABLE β CORRECTING β RESET | |
| gov2 = StabilityGovernor() | |
| states_seen = set() | |
| for i in range(20): | |
| if i < 6: | |
| r = gov2.assess(_zpe(0.97, True), _hs(0), _sup(1.0)) | |
| elif i < 12: | |
| r = gov2.assess(_zpe(0.5, False), _hs(0), _sup(1.0)) | |
| else: | |
| r = gov2.assess(_zpe(0.97, True), _hs(0), _sup(0.6)) | |
| states_seen.add(r.status) | |
| print(f" step {i:>2}: {r.status:12} consecutive_corrections={r.consecutive_corrections}") | |
| all_states_visited = {GOVERNOR_STABLE, GOVERNOR_CORRECTING, GOVERNOR_RESET}.issubset(states_seen) | |
| verdict("B4 governor state machine", | |
| all_states_visited, | |
| f"states_seen={sorted(states_seen)}") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B5 β HNC Human Loop end-to-end latency (offline, no LLM) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B5 Β· HNCHumanLoop.process() β end-to-end offline latency") | |
| MESSAGES = [ | |
| "show me the phi prime train", | |
| "what is the coherence level right now", | |
| "govern the stability of the field", | |
| "love harmony schumann resonance", | |
| "build a skill that tracks harmonic drift", | |
| "phi bridge ascension ladder frequency", | |
| "quantum zero point vacuum grounding", | |
| "auris 9 node consensus vote", | |
| "temporal multiverse hash chain", | |
| "what is the consciousness level", | |
| ] | |
| loop = HNCHumanLoop() | |
| # Warm-up | |
| loop.process("warmup") | |
| N_LOOP = len(MESSAGES) * 5 # 50 total | |
| import warnings | |
| warnings.filterwarnings("ignore") | |
| times_loop = [] | |
| mem_before = rss_mb() | |
| for i in range(N_LOOP): | |
| msg = MESSAGES[i % len(MESSAGES)] | |
| t0 = time.perf_counter() | |
| result = loop.process(msg) | |
| times_loop.append(time.perf_counter() - t0) | |
| mem_delta = rss_mb() - mem_before | |
| _report(f"HNCHumanLoop.process() Γ {N_LOOP}", times_loop, N_LOOP) | |
| print(f" RSS delta: {mem_delta:+.1f} MB") | |
| # Verify result structure | |
| assert "temporal_ground" in result | |
| assert "phi_prime_train" in result | |
| assert "hnc" in result | |
| assert len(result["phi_prime_train"]) == 13 | |
| assert len(result["phi_ladder"]) >= 8 | |
| assert len(result["temporal_ground"]["temporal_hash"]) == 64 | |
| tps_loop = N_LOOP / sum(times_loop) | |
| verdict("B5 HNCHumanLoop offline latency", | |
| tps_loop > 5, | |
| f"tps={tps_loop:.1f}/s p99={sorted(times_loop)[int(N_LOOP*0.99)]*1000:.1f}ms " | |
| f"RSS_delta={mem_delta:+.1f}MB") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B6 β Stress: 500 rapid messages through the full pipeline | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B6 Β· Stress β 500 rapid messages, full pipeline") | |
| STRESS_N = 500 | |
| loop2 = HNCHumanLoop() | |
| loop2.process("warmup") | |
| stress_times = [] | |
| errors = 0 | |
| hashes_seen = set() | |
| mem_before = rss_mb() | |
| STRESS_MESSAGES = [ | |
| "phi resonance", | |
| "stability", | |
| "love 528", | |
| "build skill", | |
| "auris vote", | |
| "hash chain", | |
| "zero point", | |
| "schumann", | |
| "coherence", | |
| "consciousness", | |
| ] | |
| for i in range(STRESS_N): | |
| msg = STRESS_MESSAGES[i % len(STRESS_MESSAGES)] | |
| try: | |
| t0 = time.perf_counter() | |
| r = loop2.process(msg) | |
| stress_times.append(time.perf_counter() - t0) | |
| hashes_seen.add(r["temporal_ground"]["temporal_hash"]) | |
| except Exception as e: | |
| errors += 1 | |
| print(f" ERROR at step {i}: {e}") | |
| mem_delta = rss_mb() - mem_before | |
| _report(f"stress 500 messages", stress_times, len(stress_times)) | |
| print(f" errors: {errors}") | |
| print(f" unique hashes: {len(hashes_seen)} / {STRESS_N}") | |
| print(f" RSS delta: {mem_delta:+.1f} MB") | |
| all_unique = len(hashes_seen) == STRESS_N | |
| verdict("B6 stress 500 messages", | |
| errors == 0 and all_unique, | |
| f"errors={errors} unique_hashes={all_unique} RSS_delta={mem_delta:+.1f}MB") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B7 β Stress: hash chain under continuous fork/merge | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B7 Β· Stress β hash chain 50 000 ticks, fork every 3rd tick") | |
| N_FORK_STRESS = 50_000 | |
| chain_stress = TemporalHashChain() | |
| fork_count = 0 | |
| merge_count = 0 | |
| times_fstress = [] | |
| for i in range(N_FORK_STRESS): | |
| gamma = 0.5 if i % 3 == 0 else 0.97 | |
| t0 = time.perf_counter() | |
| s = chain_stress.tick( | |
| float(i) * 0.0001, gamma, 0.03, "NEUTRAL", 1, float(i) | |
| ) | |
| times_fstress.append(time.perf_counter() - t0) | |
| if s.forked_this_tick: fork_count += 1 | |
| if s.merged_this_tick: merge_count += 1 | |
| _report(f"hash chain {N_FORK_STRESS} ticks (fork-heavy)", times_fstress, N_FORK_STRESS) | |
| print(f" total forks: {fork_count} total merges: {merge_count}") | |
| print(f" final active branches: {s.active_branches}") | |
| print(f" final chain length: {s.chain_length}") | |
| tps_fork = N_FORK_STRESS / sum(times_fstress) | |
| verdict("B7 hash chain fork stress", | |
| tps_fork > 50_000 and s.chain_length == N_FORK_STRESS, | |
| f"tps={tps_fork:.0f}/s forks={fork_count} merges={merge_count}") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B8 β Stress: superposition 10 000 evolution steps | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B8 Β· Stress β superposition 10 000 evolution steps") | |
| N_SUP_STRESS = 10_000 | |
| cfs_stress = CognitiveFluxSuperposition() | |
| times_sup_stress = [] | |
| norms_stress = [] | |
| blowups = 0 | |
| for i in range(N_SUP_STRESS): | |
| # Gamma oscillates wildly: 0 β 1 β 0 in a sawtooth | |
| gamma = abs(math.sin(i * 0.05)) | |
| # Random-ish vibration | |
| vib = {label: abs(math.sin(i * 0.1 + j)) for j, label in enumerate(HNC_LABELS)} | |
| t0 = time.perf_counter() | |
| s = cfs_stress.evolve(coherence_gamma=gamma, vibration_per_mode=vib) | |
| times_sup_stress.append(time.perf_counter() - t0) | |
| norms_stress.append(s.norm) | |
| if s.norm > 10.0 or math.isnan(s.norm): | |
| blowups += 1 | |
| _report(f"superposition {N_SUP_STRESS} steps (wild gamma)", times_sup_stress, N_SUP_STRESS) | |
| max_n = max(norms_stress) | |
| min_n = min(norms_stress) | |
| print(f" norm range: [{min_n:.4f}, {max_n:.4f}] blowups(>10): {blowups}") | |
| tps_sup = N_SUP_STRESS / sum(times_sup_stress) | |
| verdict("B8 superposition stress", | |
| blowups == 0, | |
| f"tps={tps_sup:.0f}/s norm_max={max_n:.4f} blowups={blowups}") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B9 β Stress: concurrent pipeline calls (threading) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B9 Β· Stress β concurrent pipeline (8 threads Γ 25 messages)") | |
| N_THREADS = 8 | |
| N_PER_THREAD = 25 | |
| # Each thread gets its own loop (not shared β testing independent stacks) | |
| thread_errors: list = [] | |
| thread_times: list = [] | |
| lock = threading.Lock() | |
| def worker(tid: int): | |
| local_loop = HNCHumanLoop() | |
| local_loop.process("warmup") | |
| msgs = [f"thread {tid} message {i} phi love schumann" for i in range(N_PER_THREAD)] | |
| for msg in msgs: | |
| try: | |
| t0 = time.perf_counter() | |
| r = local_loop.process(msg) | |
| elapsed = time.perf_counter() - t0 | |
| with lock: | |
| thread_times.append(elapsed) | |
| assert "temporal_ground" in r | |
| assert len(r["temporal_ground"]["temporal_hash"]) == 64 | |
| except Exception as e: | |
| with lock: | |
| thread_errors.append(f"thread {tid}: {e}") | |
| threads = [threading.Thread(target=worker, args=(i,)) for i in range(N_THREADS)] | |
| t_start = time.perf_counter() | |
| for t in threads: t.start() | |
| for t in threads: t.join() | |
| t_total = time.perf_counter() - t_start | |
| total_calls = N_THREADS * N_PER_THREAD | |
| _report(f"concurrent {total_calls} calls ({N_THREADS} threads)", thread_times, len(thread_times)) | |
| print(f" wall time: {t_total:.2f}s errors: {len(thread_errors)}") | |
| if thread_errors: | |
| for e in thread_errors[:5]: | |
| print(f" ERROR: {e}") | |
| verdict("B9 concurrent pipeline", | |
| len(thread_errors) == 0, | |
| f"errors={len(thread_errors)} wall={t_total:.2f}s " | |
| f"throughput={total_calls/t_total:.1f} calls/s wall-clock") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # B10 β Self-enhancement engine sandbox stress | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| suite("B10 Β· Self-enhancement engine β sandbox stress") | |
| from aureon.queen.self_enhancement_engine import SelfEnhancementEngine | |
| # Stress the sandbox directly with a battery of generated code patterns | |
| from aureon.queen.self_enhancement_engine import SelfEnhancementEngine | |
| eng = SelfEnhancementEngine() | |
| SANDBOX_CASES = [ | |
| # pattern, fn_name, should_pass | |
| ("def ok(params, context):\n return {'ok': True, 'result': 42}", "ok", True), | |
| ("def add(params, context):\n x = params.get('x', 0)\n return {'result': x + 1}", "add", True), | |
| ("def bad(params, context):\n return None", "bad", False), # non-dict return | |
| ("def missing(params, context):\n return {'v': context['key']}", "missing", True), # stub catches KeyError | |
| ("def iterable(params, context):\n total = 0\n for x in params['items']:\n total += 1\n return {'count': total}", "iterable", True), # stub iterates empty | |
| ("def divides(params, context):\n n = len(context['data'])\n return {'frac': 1.0 / n}", "divides", True), # stub len=1, no ZeroDivisionError | |
| ("def uses_math(params, context):\n import math\n return {'pi': math.pi}", "uses_math", True), | |
| ("def nested(params, context):\n return {'a': {'b': params.get('x', 0)}}", "nested", True), | |
| ("def string_ops(params, context):\n s = context['name']\n return {'upper': s.upper()}", "string_ops", True), # stub .upper() returns '' | |
| ("syntax error here !!!", "broken", False), # should fail light validation | |
| ] | |
| sandbox_times = [] | |
| results_sb = [] | |
| for code, fn_name, expected_pass in SANDBOX_CASES: | |
| # Run light_validate first | |
| light_ok, _ = eng._light_validate(code) | |
| if not light_ok: | |
| actual = False | |
| else: | |
| code_pp = eng._preprocess_code(code) | |
| code_pp = eng._normalise_code(code_pp, fn_name) | |
| t0 = time.perf_counter() | |
| actual = eng._sandbox_test(code_pp, fn_name) | |
| sandbox_times.append(time.perf_counter() - t0) | |
| correct = (actual == expected_pass) | |
| results_sb.append(correct) | |
| tag = "OK " if correct else "FAIL" | |
| print(f" [{tag}] {fn_name:>12} expected={expected_pass} got={actual}") | |
| if sandbox_times: | |
| _report("sandbox_test() calls", sandbox_times, len(sandbox_times)) | |
| all_correct = all(results_sb) | |
| verdict("B10 sandbox correctness", all_correct, | |
| f"{sum(results_sb)}/{len(results_sb)} cases correct") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Final summary | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| print(f"\n{'='*72}") | |
| print(" BENCHMARK RESULTS") | |
| print(f"{'='*72}") | |
| passes = sum(1 for _, v, _ in RESULTS if v == "PASS") | |
| fails = sum(1 for _, v, _ in RESULTS if v == "FAIL") | |
| for name, v, note in RESULTS: | |
| col = "" if v == "PASS" else " *** " | |
| print(f" [{v}] {col}{name}") | |
| if note: | |
| print(f" {note}") | |
| print(f"\n {passes} passed / {fails} failed") | |
| print(f"{'='*72}") | |
| sys.exit(0 if fails == 0 else 1) | |