From c53525290774f54f1de48f86c177ee1fbdecc914 Mon Sep 17 00:00:00 2001 From: Robert Allan James Date: Thu, 17 Sep 2026 16:59:26 -0400 Subject: [PATCH] Build the DoE region reader + automated R/LaTeX report pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes the "still open" reader-tool note from §XXXV.10: scripts/ extract_doe_region.py spools DOE-PERSIST-TRIAL's on-disk binary ring off disk/artemis.img into a CSV -- direct file read by default, or via a real loop device (--loop, losetup) per the literal request. Independent Python reimplementation of doe_region.c's own ring-walk, verified against a live 3-record write/read round trip. analyse_multiuser_doe.R (house style, ggplot2/svglite) and multiuser_doe_report.tex (same preamble convention as bare_metal_doe_report.tex) auto-discover whatever data exists and degrade gracefully to a placeholder when a campaign has 0 trials so far -- the whole point being this can be rebuilt at any point during a multi-day campaign, including mid-run. build_multiuser_doe_report.sh chains extraction -> R -> svg_to_pdf.py -> pdflatex into one command. Found and fixed a real bug while verifying: the R script's SCRIPT_DIR detection silently wrote charts/tables/report output to the repo root instead of the analysis directory when invoked from a different cwd -- switched to the robust commandArgs() "--file=" idiom. Verified live both branches (0 trials and a real 3-record write), reverted synthetic test data and incidental svg_to_pdf.py churn on ~85 unrelated committed figures before committing. FABRIC-3.md §XXXV.11 has the full account. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01BWpNjdwPtFLuVLaAq44L9K --- FABRIC-3.md | 75 + capsules/BLOCK_MAP.md | 2 +- .../analysis/analyse_multiuser_doe.R | 285 + .../analysis/charts/multiuser_placeholder.svg | 34 + .../report/figures/multiuser_placeholder.pdf | Bin 0 -> 7453 bytes .../analysis/report/multiuser_doe_report.pdf | Bin 0 -> 255248 bytes .../analysis/report/multiuser_doe_report.tex | 148 + .../sections/multiuser_summary_autogen.tex | 4 + .../analysis/tables/multiuser_status.csv | 2 + .../runs/doe-amd64-20260917-165235.csv | 0 .../bare_metal/runs/multiuser-doe-trials.csv | 1 + .../amd64/qemu-amd64-20260917-165235.log | 9243 +++++++++++++++++ scripts/build_multiuser_doe_report.sh | 96 + scripts/extract_doe_region.py | 194 + 14 files changed, 10083 insertions(+), 1 deletion(-) create mode 100644 experiments/bare_metal/analysis/analyse_multiuser_doe.R create mode 100644 experiments/bare_metal/analysis/charts/multiuser_placeholder.svg create mode 100644 experiments/bare_metal/analysis/report/figures/multiuser_placeholder.pdf create mode 100644 experiments/bare_metal/analysis/report/multiuser_doe_report.pdf create mode 100644 experiments/bare_metal/analysis/report/multiuser_doe_report.tex create mode 100644 experiments/bare_metal/analysis/report/sections/multiuser_summary_autogen.tex create mode 100644 experiments/bare_metal/analysis/tables/multiuser_status.csv create mode 100644 experiments/bare_metal/runs/doe-amd64-20260917-165235.csv create mode 100644 experiments/bare_metal/runs/multiuser-doe-trials.csv create mode 100644 logs/20260917-165235/amd64/qemu-amd64-20260917-165235.log create mode 100755 scripts/build_multiuser_doe_report.sh create mode 100755 scripts/extract_doe_region.py diff --git a/FABRIC-3.md b/FABRIC-3.md index 0ea4167f..993a5c7a 100644 --- a/FABRIC-3.md +++ b/FABRIC-3.md @@ -5642,3 +5642,78 @@ scope per §XXXV.3 was the writer only, verified here by a one-off Python script bytes directly, not a maintained tool. Launching the first live multi-hour campaign is still a separate, later, explicit decision -- this entry closes the persistence-writer gap, nothing more. +### XXXV.11 -- The reader tool from §XXXV.10's own "still open" note: built, plus a full +R/LaTeX report pipeline, all live-verified (2026-09-17) + +Requested directly: "mount the virtual drive on a loop device... spool the csv's into a file +for the proper deeply detailed R/LaTeX report with svg charts... build that workflow script for +automated production of the PDF artifact while execution of the experiment is underway." Closes +the one item §XXXV.10 itself flagged as still missing. + +**Built:** +- `scripts/extract_doe_region.py` -- standalone reader, independent reimplementation of + `doe_region.c`'s own ring-walk logic in Python (same devblock_from_top fence math, same + head/tail/record_count ring-order walk) reading `disk/artemis.img` directly. Two modes: + `--img PATH` (default, no privilege needed -- opens the image as a plain file) and `--loop` + (attaches via `losetup --read-only`, needs sudo, detaches on exit -- the literal loop-device + step requested; noted in the script's own docstring that the ring is raw binary at a fixed + offset, not a filesystem, so there is nothing to `mount` in the POSIX sense once attached, it + reads exactly like a regular file). Read-only in both modes; a torn read mid-write from a + live campaign is rejected the same way `doe_region_ctrl_read()` itself rejects a bad + magic/version -- "not yet initialized," not a crash. +- `experiments/bare_metal/analysis/analyse_multiuser_doe.R` -- new analysis script, house style + (`ggplot2`/`svglite`, same `theme_light_report()` shape as `analyse_multirep.R`), but + deliberately NOT that script's fixed-manifest pattern: auto-discovers whatever CSV or CSV + directory it's given and **degrades gracefully to a placeholder table/chart when 0 trials + exist yet**, rather than erroring -- the explicit "while execution of the experiment is + underway" requirement. Also writes an auto-generated LaTeX fragment + (`report/sections/multiuser_summary_autogen.tex`) with the actual current trial count, fail + rate, and per-cell breakdown, computed fresh every run -- the report's own numbers stay + truthful across re-runs instead of going stale. +- `experiments/bare_metal/analysis/report/multiuser_doe_report.tex` -- new self-contained + report (same preamble/colour-palette convention as `bare_metal_doe_report.tex`), every + data-dependent figure wrapped in `\IfFileExists` so the report builds correctly whether 0 + trials or many have been extracted. +- `scripts/build_multiuser_doe_report.sh` -- orchestrates all of the above: extract -> R + analysis -> `svg_to_pdf.py` (existing, reused unmodified) -> `pdflatex` (twice, for + cross-references) -> `multiuser_doe_report.pdf`. `--csv PATH` skips disk extraction entirely + (smoke-testing against an arbitrary CSV); `--loop` passes through to the extractor. + +**Real bug found and fixed while verifying, not left in:** the R script's original +`SCRIPT_DIR` detection (`sys.frames()[[1]]$ofile`, the same pattern `analyse_multirep.R` already +uses) silently fell back to `getwd()` when invoked from the orchestration script's own working +directory -- wrote `charts/`, `tables/`, and `report/sections/` at the repo root instead of +under `experiments/bare_metal/analysis/`, confirmed live (all three stray directories actually +appeared there on the first orchestrated run). Fixed with the robust `commandArgs()` +`"--file="` idiom, re-verified correct placement, stray directories removed. Not touched in +`analyse_multirep.R` itself -- out of scope, not verified broken there, flag only. + +**Verified live, full pipeline, both branches:** +1. **No-data branch:** ran the full orchestration script against the current (post-§XXXV.10 + test-write-reverted) `disk/artemis.img` -- 0 trials, placeholder chart/table/summary + generated, real 2-page PDF produced, correctly states "No trial data has been persisted to + the DoE region yet." +2. **Populated branch:** booted amd64, wrote 3 synthetic trial records via `DOE-PERSIST-TRIAL` + at the console (one deliberately with `fail=1`), clean `BYE`. `extract_doe_region.py` + round-tripped all 3 records correctly, in ring order, byte-exact. Full orchestration run + (`--csv` override, to isolate the R/LaTeX stage from the disk-extraction stage) produced a + real 4-page PDF with correct auto-generated summary text ("3 completed trial(s)... Overall + fail rate... 33.3%...") and real embedded SVG-derived charts. +3. Reverted the synthetic test write from `disk/artemis.img` afterward (same convention as + §XXXV.10) and regenerated the final on-disk report/CSV against the real, empty state before + committing -- what's in the repo now honestly reflects "no campaign has run yet," not + leftover demo numbers. +4. Reverted an unrelated side effect caught before committing: `svg_to_pdf.py` (existing, + unmodified) re-converts every SVG in the shared `charts/` directory on each run, which + touched ~85 pre-existing, unrelated committed figure PDFs with meaningless + binary/metadata-only diffs (almost certainly `rsvg-convert` version drift, not content + changes) -- reverted before staging, confirmed only the new `multiuser_*` files remain + changed. + +**Not done, explicitly out of scope for this pass:** the actual multi-day campaign launch is +still a separate, deliberate decision -- this closes only the "how do we get a report out of +it" side. `--loop` mode was implemented per the literal request but not live-tested (the +default `--img` direct-file mode was what got exercised above; both modes share the same +`read_ring()` code path once handed a device/file path, so this is a thin, low-risk gap, not +an unverified core mechanism). + diff --git a/capsules/BLOCK_MAP.md b/capsules/BLOCK_MAP.md index 8d5b857f..3acd1c7f 100644 --- a/capsules/BLOCK_MAP.md +++ b/capsules/BLOCK_MAP.md @@ -1,5 +1,5 @@ # Capsule Block Manifest — Auto-generated - + diff --git a/experiments/bare_metal/analysis/analyse_multiuser_doe.R b/experiments/bare_metal/analysis/analyse_multiuser_doe.R new file mode 100644 index 00000000..7352c073 --- /dev/null +++ b/experiments/bare_metal/analysis/analyse_multiuser_doe.R @@ -0,0 +1,285 @@ +#!/usr/bin/env Rscript +# analyse_multiuser_doe.R +# StarForth LithosAnanke — Multiuser/Multitasking DoE Analysis +# +# Analyses trial-summary records from the multiuser/multitasking campaign +# (multiuser-doe.4th / per-isa-doe.4th, FABRIC-3.md §XXXIII/§XXXV) -- one +# row per completed trial: concurrency level (nw: 2/4/8) x mode (0=uniform, +# 1=heterogeneous), fail count, and trial-end fleet physics (fleet_k_q48, +# fleet_conserved, switch_count_cumulative). +# +# Unlike analyse_multirep.R/analyse_bare_metal.R (which analyse dense +# per-tick HB-ON streams from a fixed manifest of completed runs), this +# script auto-discovers whatever CSV(s) are present and is designed to be +# re-run repeatedly WHILE a campaign is still in progress -- it degrades +# gracefully to a "no data yet" placeholder rather than erroring when a +# campaign has produced 0 trials so far, and re-summarises from scratch +# each run against however many trials currently exist. Input format is +# extract_doe_region.py's own CSV schema, or (for smoke-testing this +# pipeline before real campaign data exists) any CSV in this shape. + +suppressPackageStartupMessages({ + library(ggplot2) + library(svglite) + library(dplyr) + library(scales) +}) + +# sys.frames()[[1]]$ofile is unreliable depending on how Rscript was +# invoked (silently falls back to getwd(), which is wrong whenever this +# is called from a different working directory -- e.g. an orchestration +# script that cd's to the repo root first). commandArgs()'s "--file=" +# entry is the robust Rscript idiom and is what's used here. +get_script_dir <- function() { + raw_args <- commandArgs(trailingOnly = FALSE) + file_arg <- grep("^--file=", raw_args, value = TRUE) + if (length(file_arg) == 1) { + return(dirname(normalizePath(sub("^--file=", "", file_arg)))) + } + tryCatch(dirname(normalizePath(sys.frames()[[1]]$ofile)), error = function(e) getwd()) +} +SCRIPT_DIR <- get_script_dir() +BASE_DIR <- normalizePath(file.path(SCRIPT_DIR, "..")) +OUT_CHARTS <- file.path(SCRIPT_DIR, "charts") +OUT_TABLES <- file.path(SCRIPT_DIR, "tables") +OUT_SECTION <- file.path(SCRIPT_DIR, "report", "sections", "multiuser_summary_autogen.tex") +dir.create(OUT_CHARTS, showWarnings = FALSE, recursive = TRUE) +dir.create(OUT_TABLES, showWarnings = FALSE, recursive = TRUE) +dir.create(dirname(OUT_SECTION), showWarnings = FALSE, recursive = TRUE) + +# LaTeX-escape a plain string for safe \newcommand/text use. +tex_escape <- function(s) { + s <- gsub("\\\\", "\\\\textbackslash{}", s) + s <- gsub("([%&_#{}$])", "\\\\\\1", s) + s +} + +write_tex_fragment <- function(lines) { + writeLines(lines, OUT_SECTION) + cat(sprintf(" Saved: %s\n", OUT_SECTION)) +} + +# ── input: first CLI arg is a CSV path, or a directory to scan; default +# is the extractor's own conventional output location ────────────────── +args <- commandArgs(trailingOnly = TRUE) +input_arg <- if (length(args) >= 1) args[1] else file.path(BASE_DIR, "runs", "multiuser-doe-trials.csv") + +cat("══════════════════════════════════════════════════════════════════\n") +cat(" StarForth LithosAnanke — Multiuser/Multitasking DoE Analysis\n") +cat("══════════════════════════════════════════════════════════════════\n\n") + +load_trials <- function(path) { + if (dir.exists(path)) { + files <- list.files(path, pattern = "\\.csv$", full.names = TRUE) + if (length(files) == 0) return(NULL) + dfs <- lapply(files, function(f) tryCatch(read.csv(f, stringsAsFactors = FALSE), error = function(e) NULL)) + dfs <- dfs[!sapply(dfs, is.null)] + dfs <- dfs[sapply(dfs, function(d) all(c("cfg","nw","mode","fail_count") %in% names(d)))] + if (length(dfs) == 0) return(NULL) + bind_rows(dfs) + } else if (file.exists(path)) { + df <- read.csv(path, stringsAsFactors = FALSE) + if (!all(c("cfg","nw","mode","fail_count") %in% names(df))) return(NULL) + df + } else { + NULL + } +} + +df <- load_trials(input_arg) +n_trials <- if (is.null(df)) 0 else nrow(df) +cat(sprintf(" Input: %s\n Trials found: %d\n\n", input_arg, n_trials)) + +Q48 <- 65536.0 + +write_placeholder <- function(reason) { + cat(sprintf(" %s -- writing placeholder tables/charts so the report build\n", reason)) + cat(" still completes (this pipeline is meant to be re-run while the\n") + cat(" campaign is still in progress).\n\n") + + placeholder_tbl <- data.frame(status = reason, trials_so_far = n_trials) + write.csv(placeholder_tbl, file.path(OUT_TABLES, "multiuser_status.csv"), row.names = FALSE) + + p <- ggplot() + + annotate("text", x = 0, y = 0, label = paste0(reason, "\n(", n_trials, " trials so far)"), + size = 6, colour = "grey40") + + theme_void() + svglite(file.path(OUT_CHARTS, "multiuser_placeholder.svg"), width = 8, height = 4) + print(p) + dev.off() + cat(" Saved: multiuser_placeholder.svg\n\n") +} + +if (n_trials == 0) { + write_placeholder("No trials persisted yet") + write_tex_fragment(c( + "% Auto-generated by analyse_multiuser_doe.R -- do not edit by hand.", + "No trial data has been persisted to the DoE region yet. This section", + "will populate automatically the next time this report is built after", + "the campaign has produced at least one completed trial." + )) + quit(save = "no", status = 0) +} + +# ── normalise / label factors ──────────────────────────────────────────── +df$nw <- factor(df$nw, levels = c(2, 4, 8)) +df$mode <- factor(df$mode, levels = c(0, 1), labels = c("uniform", "heterogeneous")) +df$cfg <- factor(df$cfg) +if (!"isa" %in% names(df) || all(df$isa == "" | is.na(df$isa))) df$isa <- "amd64" +df$isa <- factor(df$isa, levels = intersect(c("amd64","aarch64","riscv64"), unique(df$isa))) +df$fleet_k <- df$fleet_k_q48 / Q48 + +# ── 1. Per-cfg summary ─────────────────────────────────────────────────── +cat("Computing per-cfg summary (concurrency x mode)...\n") +cfg_tbl <- df %>% + group_by(nw, mode) %>% + summarise( + n_trials = n(), + n_fail = sum(fail_count > 0), + fail_rate = mean(fail_count > 0), + mean_fail_count = mean(fail_count), + mean_fleet_k = mean(fleet_k, na.rm = TRUE), + pct_conserved = mean(fleet_conserved == 1, na.rm = TRUE), + mean_switch_cnt = mean(switch_count_cumulative, na.rm = TRUE), + .groups = "drop" + ) +write.csv(cfg_tbl, file.path(OUT_TABLES, "multiuser_cell_summary.csv"), row.names = FALSE) +cat(" Saved: multiuser_cell_summary.csv\n") +print(as.data.frame(cfg_tbl)) +cat("\n") + +# ── 2. Per-ISA summary (only meaningful once >1 ISA present) ──────────── +if (nlevels(df$isa) > 1) { + cat("Computing per-ISA summary...\n") + isa_tbl <- df %>% + group_by(isa) %>% + summarise( + n_trials = n(), + fail_rate = mean(fail_count > 0), + mean_fleet_k = mean(fleet_k, na.rm = TRUE), + .groups = "drop" + ) + write.csv(isa_tbl, file.path(OUT_TABLES, "multiuser_isa_summary.csv"), row.names = FALSE) + cat(" Saved: multiuser_isa_summary.csv\n\n") +} + +# ── colour theme (house style, matches analyse_multirep.R) ────────────── +theme_light_report <- function() { + theme_minimal(base_size = 11) %+replace% + theme( + panel.grid.minor = element_blank(), + panel.grid.major = element_line(colour = "grey90"), + strip.text = element_text(face = "bold"), + plot.title = element_text(face = "bold", size = 12), + plot.subtitle = element_text(colour = "grey40", size = 9), + legend.position = "bottom" + ) +} + +save_svg <- function(plot, name, w = 10, h = 6) { + path <- file.path(OUT_CHARTS, paste0(name, ".svg")) + svglite(path, width = w, height = h) + print(plot) + dev.off() + cat(sprintf(" Saved: %s.svg\n", name)) + invisible(path) +} + +cat("Generating charts...\n\n") + +# ── CHART MU-1: fail rate by concurrency x mode ────────────────────────── +cat("[MU-1] Fail rate by concurrency x mode...\n") +p_fail <- ggplot(cfg_tbl, aes(x = nw, y = fail_rate, fill = mode)) + + geom_col(position = "dodge", alpha = 0.85) + + geom_text(aes(label = sprintf("%d/%d", n_fail, n_trials)), + position = position_dodge(width = 0.9), vjust = -0.4, size = 3) + + scale_y_continuous(labels = percent_format(accuracy = 1), limits = c(0, NA)) + + scale_fill_manual(values = c(uniform = "#4A90D9", heterogeneous = "#E07B39")) + + labs( + title = "Trial Fail Rate by Concurrency Level x Workload Mode", + subtitle = paste0(n_trials, " trials"), + x = "Concurrent workers", + y = "Fraction of trials with fail_count > 0" + ) + + theme_light_report() +save_svg(p_fail, "multiuser_fail_rate", w = 8, h = 6) + +# ── CHART MU-2: switch_count_cumulative distribution by concurrency ───── +cat("[MU-2] Switch count by concurrency...\n") +p_switch <- ggplot(df, aes(x = nw, y = switch_count_cumulative, fill = nw)) + + geom_boxplot(alpha = 0.8, outlier.alpha = 0.4) + + scale_fill_manual(values = c("2" = "#50C878", "4" = "#4A90D9", "8" = "#E07B39"), guide = "none") + + labs( + title = "Cumulative Preemptive Switch Count by Concurrency Level", + subtitle = "Stage-3 switch signal count at trial end, by number of concurrent workers", + x = "Concurrent workers", + y = "switch_count_cumulative" + ) + + theme_light_report() +save_svg(p_switch, "multiuser_switch_count", w = 8, h = 6) + +# ── CHART MU-3: fleet_k_q48 (conservation) across trials in run order ─── +cat("[MU-3] Fleet K conservation across trial sequence...\n") +df_seq <- df %>% arrange(run_id) +p_fleetk <- ggplot(df_seq, aes(x = run_id, y = fleet_k, colour = mode)) + + geom_point(alpha = 0.6, size = 1.5) + + geom_hline(yintercept = 1.0, colour = "grey50", linetype = "dashed") + + scale_colour_manual(values = c(uniform = "#4A90D9", heterogeneous = "#E07B39")) + + labs( + title = "Fleet Heat Conservation (K) Across the Trial Sequence", + subtitle = "Dashed line = Q48.16 conserved value (1.0); trial-end reads, shuffled run order", + x = "Run id (shuffled trial index)", + y = "fleet_k_q48 / 65536" + ) + + theme_light_report() +save_svg(p_fleetk, "multiuser_fleet_k_sequence", w = 10, h = 6) + +# ── CHART MU-4: per-ISA panel (only when >1 ISA present) ───────────────── +if (nlevels(df$isa) > 1) { + cat("[MU-4] Per-ISA fail rate panel...\n") + p_isa <- ggplot(df %>% group_by(isa, nw, mode) %>% + summarise(fail_rate = mean(fail_count > 0), .groups = "drop"), + aes(x = nw, y = fail_rate, fill = mode)) + + geom_col(position = "dodge", alpha = 0.85) + + scale_y_continuous(labels = percent_format(accuracy = 1), limits = c(0, NA)) + + scale_fill_manual(values = c(uniform = "#4A90D9", heterogeneous = "#E07B39")) + + facet_wrap(~ isa, ncol = 3) + + labs( + title = "Fail Rate by Concurrency x Mode, per ISA", + x = "Concurrent workers", + y = "Fraction of trials with fail_count > 0" + ) + + theme_light_report() + save_svg(p_isa, "multiuser_isa_panel", w = 12, h = 5) +} + +# ── summary ─────────────────────────────────────────────────────────────── +cat(sprintf("\n══════════════════════════════════════════════════════════════════\n")) +cat(sprintf(" Multiuser DoE analysis complete. %d trials, %d cfg cells.\n", + n_trials, nrow(cfg_tbl))) +cat(sprintf("══════════════════════════════════════════════════════════════════\n\n")) + +overall_fail_rate <- mean(df$fail_count > 0) +overall_conserved <- mean(df$fleet_conserved == 1, na.rm = TRUE) +cat(sprintf(" Overall fail rate: %.2f%%\n", overall_fail_rate * 100)) +cat(sprintf(" Fraction of trials conserved (fleet_conserved==1): %.2f%%\n", overall_conserved * 100)) + +# ── auto-generated LaTeX summary fragment (re-written every run) ──────── +isa_list <- paste(levels(df$isa), collapse = ", ") +cell_lines <- apply(cfg_tbl, 1, function(r) { + sprintf(" \\item %s workers, %s: %s trials, fail rate %.1f\\%%, mean fleet K = %.4f", + r["nw"], tex_escape(as.character(r["mode"])), r["n_trials"], + as.numeric(r["fail_rate"]) * 100, as.numeric(r["mean_fleet_k"])) +}) +write_tex_fragment(c( + "% Auto-generated by analyse_multiuser_doe.R -- do not edit by hand.", + sprintf("This report reflects \\textbf{%d} completed trial(s) persisted via", n_trials), + "\\texttt{DOE-PERSIST-TRIAL} as of the last extraction, spanning ISA(s)", + sprintf("\\texttt{%s}. Overall fail rate across all trials so far is", tex_escape(isa_list)), + sprintf("\\textbf{%.1f\\%%}; \\textbf{%.1f\\%%} of trials read", overall_fail_rate * 100, overall_conserved * 100), + "\\texttt{fleet\\_conserved==1} at trial end.", + "", + "\\begin{itemize}", + cell_lines, + "\\end{itemize}" +)) diff --git a/experiments/bare_metal/analysis/charts/multiuser_placeholder.svg b/experiments/bare_metal/analysis/charts/multiuser_placeholder.svg new file mode 100644 index 00000000..00d60a29 --- /dev/null +++ b/experiments/bare_metal/analysis/charts/multiuser_placeholder.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + +No trials persisted yet +(0 trials so far) + + + diff --git a/experiments/bare_metal/analysis/report/figures/multiuser_placeholder.pdf b/experiments/bare_metal/analysis/report/figures/multiuser_placeholder.pdf new file mode 100644 index 0000000000000000000000000000000000000000..496f4a3f4b61931c7c36cbdaec0e85406c350a04 GIT binary patch literal 7453 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%0AdEVBsU6;X(e$~rjIv~ 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 Z0v!DV&{yaM2vLw%yrK?Zu(mNA_#b~VO=bW9 literal 0 HcmV?d00001 diff --git a/experiments/bare_metal/analysis/report/multiuser_doe_report.tex b/experiments/bare_metal/analysis/report/multiuser_doe_report.tex new file mode 100644 index 00000000..eec749b6 --- /dev/null +++ b/experiments/bare_metal/analysis/report/multiuser_doe_report.tex @@ -0,0 +1,148 @@ +\documentclass[10pt,a4paper]{article} + +%% ── Packages ────────────────────────────────────────────────────────────────── +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[margin=2.5cm]{geometry} +\usepackage{graphicx} +\usepackage{subcaption} +\usepackage{booktabs} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{xcolor} +\usepackage{microtype} +\usepackage{parskip} +\usepackage{enumitem} +\usepackage[hidelinks,colorlinks=true,linkcolor=black,citecolor=black,urlcolor=blue]{hyperref} +\usepackage{lmodern} + +%% ── Colour palette (matches bare_metal_doe_report.tex) ───────────────────────── +\definecolor{sfblue}{RGB}{31,119,180} +\definecolor{sforange}{RGB}{255,127,14} +\definecolor{sfgreen}{RGB}{44,160,44} +\definecolor{sfgray}{RGB}{80,80,80} + +%% ── Figure path ─────────────────────────────────────────────────────────────── +\graphicspath{{figures/}} + +%% ── Title metadata ──────────────────────────────────────────────────────────── +\title{% + \textbf{LithosAnanke Multiuser/Multitasking Design of Experiments}\\[0.4em] + \large Concurrent Worker VM Load Across Three Instruction-Set Architectures +} +\author{% + R.\,A. James (Captain Bob)\\[0.2em] + \small StarForth Project \quad\texttt{robert.allan.james@gmail.com} +} +\date{% + Generated automatically by \texttt{scripts/build\_multiuser\_doe\_report.sh}\\[0.2em] + \textnormal{(Patent Pending --- Provisional Filed December 2025)} +} + +%% ═════════════════════════════════════════════════════════════════════════════ +\begin{document} + +\maketitle +\thispagestyle{empty} + +%% ── Abstract ────────────────────────────────────────────────────────────────── +\begin{abstract} +\noindent +This report analyses the multiuser/multitasking Design of Experiments +(FABRIC-3.md \S{}XXXIII/\S{}XXXV): a 6-cell factorial over concurrency level +(2, 4, or 8 simultaneously live worker VMs, each birthed and touched twice +by the Mama VM Hera) crossed with workload mode (uniform -- every worker +runs the same workload; heterogeneous -- worker $n$ runs workload +$n \bmod 10$), run per instruction-set architecture with a fixed seed. +Trial outcomes -- concurrency, mode, fail count, and trial-end fleet +physics (cumulative preemptive switch count, fleet heat conservation) -- +persist to a dedicated block-backed region on \texttt{disk/artemis.img} +(\texttt{DOE-PERSIST-TRIAL}, \S{}XXXV.10) rather than depending on a live +serial-log tail, so this report can be rebuilt at any point during a +multi-day campaign, including while it is still running, from whatever +trials have completed so far. +\end{abstract} + +\section{Current campaign status} + +\input{sections/multiuser_summary_autogen.tex} + +\IfFileExists{figures/multiuser_placeholder.pdf}{% + \begin{figure}[h] + \centering + \includegraphics[width=0.6\textwidth]{multiuser_placeholder.pdf} + \end{figure} +}{} + +\IfFileExists{figures/multiuser_fail_rate.pdf}{% +\section{Fail rate by concurrency and workload mode} + +\begin{figure}[h] + \centering + \includegraphics[width=0.75\textwidth]{multiuser_fail_rate.pdf} + \caption{Fraction of trials with \texttt{fail\_count > 0}, by concurrency + level (2/4/8 workers) and workload mode. Labels give (failed/total) trials + per cell.} +\end{figure} +}{} + +\IfFileExists{figures/multiuser_switch_count.pdf}{% +\clearpage +\section{Preemptive switch load} + +\begin{figure}[h] + \centering + \includegraphics[width=0.75\textwidth]{multiuser_switch_count.pdf} + \caption{Distribution of cumulative Stage-3 preemptive switch count at + trial end, by concurrency level. Higher concurrency is expected to drive + more switch events per trial.} +\end{figure} +}{} + +\IfFileExists{figures/multiuser_fleet_k_sequence.pdf}{% +\section{Fleet heat conservation across the trial sequence} + +\begin{figure}[h] + \centering + \includegraphics[width=\textwidth]{multiuser_fleet_k_sequence.pdf} + \caption{Trial-end fleet heat (\texttt{fleet\_k\_q48}, decoded from + Q48.16) across the shuffled trial run order. The dashed line marks the + conserved value (1.0); persistent drift away from it across the + sequence would indicate a real conservation violation rather than + per-trial noise.} +\end{figure} +}{} + +\IfFileExists{figures/multiuser_isa_panel.pdf}{% + \clearpage + \section{Per-ISA comparison} + \begin{figure}[h] + \centering + \includegraphics[width=\textwidth]{multiuser_isa_panel.pdf} + \caption{Fail rate by concurrency and mode, faceted by ISA -- populated + once more than one architecture's trials have been persisted.} + \end{figure} +}{} + +\section{Methodology notes} + +\begin{itemize} + \item \textbf{Persistence, not a serial-log dependency.} Earlier attempts + at this campaign relied entirely on a live QEMU serial-log tail and + were lost when the process was interrupted (FABRIC-3.md \S{}XXXV.10). + Every number in this report comes from \texttt{disk/artemis.img}'s + own on-disk DoE region, read directly by + \texttt{scripts/extract\_doe\_region.py} with no live QEMU process + required. + \item \textbf{Rebuildable mid-campaign.} This report's build script + (\texttt{scripts/build\_multiuser\_doe\_report.sh}) can be re-run at + any point -- including while a multi-day campaign is still executing + -- and will reflect however many trials have completed at that moment. + \item \textbf{Trial-summary, not per-tick.} Unlike the per-tick + \texttt{HB-ON} serial stream (which remains the authoritative live + instrumentation during a run), the persisted region stores one summary + record per completed trial (\S{}XXXV.4) -- sized to comfortably fit + the device budget for the full campaign, not a raw tick mirror. +\end{itemize} + +\end{document} diff --git a/experiments/bare_metal/analysis/report/sections/multiuser_summary_autogen.tex b/experiments/bare_metal/analysis/report/sections/multiuser_summary_autogen.tex new file mode 100644 index 00000000..9ddcb6ff --- /dev/null +++ b/experiments/bare_metal/analysis/report/sections/multiuser_summary_autogen.tex @@ -0,0 +1,4 @@ +% Auto-generated by analyse_multiuser_doe.R -- do not edit by hand. +No trial data has been persisted to the DoE region yet. This section +will populate automatically the next time this report is built after +the campaign has produced at least one completed trial. diff --git a/experiments/bare_metal/analysis/tables/multiuser_status.csv b/experiments/bare_metal/analysis/tables/multiuser_status.csv new file mode 100644 index 00000000..57e00894 --- /dev/null +++ b/experiments/bare_metal/analysis/tables/multiuser_status.csv @@ -0,0 +1,2 @@ +"status","trials_so_far" +"No trials persisted yet",0 diff --git a/experiments/bare_metal/runs/doe-amd64-20260917-165235.csv b/experiments/bare_metal/runs/doe-amd64-20260917-165235.csv new file mode 100644 index 00000000..e69de29b diff --git a/experiments/bare_metal/runs/multiuser-doe-trials.csv b/experiments/bare_metal/runs/multiuser-doe-trials.csv new file mode 100644 index 00000000..7e670c9a --- /dev/null +++ b/experiments/bare_metal/runs/multiuser-doe-trials.csv @@ -0,0 +1 @@ +isa,run_id,cfg,rep,nw,mode,fail_count,fleet_k_q48,fleet_conserved,switch_count_cumulative diff --git a/logs/20260917-165235/amd64/qemu-amd64-20260917-165235.log b/logs/20260917-165235/amd64/qemu-amd64-20260917-165235.log new file mode 100644 index 00000000..a788b2bd --- /dev/null +++ b/logs/20260917-165235/amd64/qemu-amd64-20260917-165235.log @@ -0,0 +1,9243 @@ +[=3hBdsDxe: loading Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0) +BdsDxe: starting Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0) +[=3hStarKernel UEFI Loader +Loading kernel from ESP... +[CKPT 001] Entered efi_main - ConOut live +RAW SERIAL UP +[CKPT 002] Serial (COM1) initialized +Monolithic build - kernel linked directly +Collecting boot information... +CmdLine: parsed OK +[CKPT 004] Command line parsed +[CKPT 005] Kernel stack allocation decided +[CKPT 006] Boot info collected (ACPI table located) +GOP: linear framebuffer found +[CKPT 007] GOP: linear framebuffer found +[CKPT 008] About to enter ExitBootServices retry loop +EBS... +EBS OK +Calling kernel_main (monolithic)... + + + _____ _ _ __ _ + / ____| | | |/ / | | + | (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| | + \___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ | + ____) | || (_| | | | . \ __/ | | | | | __/ | + |_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_| + +LithosAnanke v2.0.0 +Architecture: amd64 +Build: Sep 17 2026 14:36:43 + +UEFI BootServices: EXITED + +=== StarKernel Boot Information === +Memory map entries: 129 +Total memory: 1023 MB +Usable memory: 968 MB +=================================== + +PMM initialized. +PMM statistics: + Total pages: 249352 + Free pages : 247829 + Used pages : 1523 + Total MB : 974 + Free MB : 968 + Used MB : 5 + +VMM initialized (mapped RAM, CR3 switched) +VMM initialized (mapped RAM, CR3 switched) +VMM self-test: mapped OK at 0xffff800000000000 +VMM self-test complete. + +IDT installed. + +APIC: init... +APIC: IA32_APIC_BASE MSR=0x00000000fee00900 +APIC: stale-ISR drain: 0 EOI(s) issued +APIC: initialized (xAPIC MMIO, TPR=0, SIVR=0x1FF, EOI-clear) +APIC: init done + +I/O APIC: init... +I/O APIC: base=0xfec00000, gsi_base=0, overrides=5 + override: source=00 gsi=2 flags=0x0000 + override: source=05 gsi=5 flags=0x000d + override: source=09 gsi=9 flags=0x000d + override: source=0a gsi=10 flags=0x000d + override: source=0b gsi=11 flags=0x000d +i8042: keyboard ACKed enable-scanning +i8042: IRQ1 enabled in controller config byte +I/O APIC: keyboard IRQ1 routed (masked) + +Timer: init... +Timer: init start +Timer: PM_TMR_BLK discovered from FADT at port 1544 +Timer: VM mode detected (hypervisor present). +Timer: HPET calibration disabled (VM-exit MMIO would poison timing). +Timer: WARNING: invariant TSC not present under hypervisor. +Timer: continuing in RELATIVE mode (no determinism guarantees). +Timer: RDTSCP not present; using RDTSC (less serialized). +Timer: CPUID frequency unavailable; trying PM Timer... +Timer: trust=1 (0=NONE,1=REL,2=ABS), TSC=2103420256 Hz +Timer: init done + +Kernel heap initialized. +Heap statistics: + Total bytes: 536870872 + Free bytes: 536870872 + Used bytes: 0 + Peak bytes: 0 + Heap base addr: 24641536 + Heap end addr: 561512448 + +Heartbeat: init... +APIC Timer: calibrating... +APIC Timer: apic_hz=1008987326, tick_hz=100, initial_count=10089873 +APIC Timer: configured (masked, ready to start) +Heartbeat: init done +Kernel initialization complete. +Boot successful! + +Stadium: 83886 cells (5242 KB), 50 VM slots +VM: bootstrap parity... +VM arena allocated: 0xffff900000000000 + (5 MB) +[HADES][INFO ] [KRELTSC: 0] Registering FORTH-79 Standard word set... +[HADES][INFO ] [KRELTSC: 4259451] Registering FORTH-79 arithmetic words... +[HADES][INFO ] [KRELTSC: 61168359] FORTH-79 Standard word set registration complete +[Hera] POST: Running comprehensive test suite... +[Hera] [HADES][INFO ] [KRELTSC: 94832493] Starting comprehensive FORTH-79 modular test suite... +[Hera] [HADES][INFO ] [KRELTSC: 95633433] ============================================== +[Hera] [HADES][INFO ] [KRELTSC: 96429228] +[Hera] === Testing Module: Stack Words === +[Hera] [HADES][INFO ] [KRELTSC: 97655145] Running Stack Words Tests (Module 1: Foundation)... +[Hera] [HADES][TEST ] [KRELTSC: 98703465] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 99797292] Testing word: DUP +[Hera] [HADES][TEST ] [KRELTSC: 100554384] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 101551737] Running DUP.basic: 5 DUP . . CR +[Hera] 5 5 +[Hera] [HADES][TEST ] [KRELTSC: 112300482] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 113567181] Expected: Should print: 5 5 +[Hera] 5 5 +[Hera] 5 5 +[Hera] 5 5 +[Hera] 5 5 +[Hera] 5 5 +[Hera] [HADES][TEST ] [KRELTSC: 116457327] Running DUP.zero: 0 DUP . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 117687906] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 119063028] Expected: Should print: 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 121442013] Running DUP.negative: -42 DUP . . CR +[Hera] -42 -42 +[Hera] [HADES][TEST ] [KRELTSC: 122834964] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 124159266] Expected: Should print: -42 -42 +[Hera] -42 -42 +[Hera] -42 -42 +[Hera] -42 -42 +[Hera] -42 -42 +[Hera] -42 -42 +[Hera] [HADES][TEST ] [KRELTSC: 126836115] Running DUP.max_int: 2147483647 DUP . . CR +[Hera] 2147483647 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 128238621] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 129536253] Expected: Should duplicate max int +[Hera] 2147483647 2147483647 +[Hera] 2147483647 2147483647 +[Hera] 2147483647 2147483647 +[Hera] 2147483647 2147483647 +[Hera] 2147483647 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 132653199] Running DUP.min_int: -2147483648 DUP . . CR +[Hera] -2147483648 -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 134075004] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 135412767] Expected: Should duplicate min int +[Hera] -2147483648 -2147483648 +[Hera] -2147483648 -2147483648 +[Hera] -2147483648 -2147483648 +[Hera] -2147483648 -2147483648 +[Hera] -2147483648 -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 138549453] Running DUP.empty_stack: DUP +[Hera] [HADES][ERROR] [KRELTSC: 139525701] DUP: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 140306124] Expected error occurred +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 141746850] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 142789752] DUP: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 143967873] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 145030011] Testing word: DROP +[Hera] [HADES][TEST ] [KRELTSC: 145728030] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 146499360] Running DROP.basic: 5 7 DROP . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 147743715] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 149101239] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 151336836] Running DROP.zero: 42 0 DROP . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 152491206] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 153831615] Expected: Should drop zero, print 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 156196530] Running DROP.negative: 10 -5 DROP . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 157406613] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 158750214] Expected: Should drop negative, print 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 161152047] Running DROP.double_drop: 1 2 3 DROP DROP . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 162437226] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 163797375] Expected: Should print: 1 +[Hera] 1 +[Hera] [HADES][INFO ] [KRELTSC: 166765242] L8[TABLE]: Config 17 → 0 regime=2 score=26214 L1=0 L2=0 L3=0 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 169886997] Running DROP.triple_drop: 1 2 3 4 DROP DROP DROP . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 171207939] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 172566870] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 174881490] Running DROP.sequential: 5 DROP 6 DROP 7 . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 176127756] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 177476166] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 179787825] Running DROP.single_item: 99 DROP DEPTH . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 181059144] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 182432544] Expected: Should empty stack, depth=0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 184848279] Running DROP.depth_change: DEPTH 1 2 DROP DEPTH SWAP - . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 186436614] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 187794495] Expected: Should change depth by 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 190299984] Running DROP.preserve_depth: DEPTH 5 6 DROP DROP DEPTH = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 191836386] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 193163019] Expected: Should preserve net depth +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 195617100] L8[TABLE]: Config 0 → 1 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 197070951] Running DROP.max_int: 2147483647 DROP DEPTH . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 198354996] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 199678920] Expected: Should drop max int +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 202011810] Running DROP.min_int: -2147483648 DROP DEPTH . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 203294637] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 204622698] Expected: Should drop min int +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 206954349] Running DROP.with_dup: 5 DUP DROP . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 208125855] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 209484534] Expected: Should duplicate then drop +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 211880361] Running DROP.with_swap: 1 2 SWAP DROP . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 213242379] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 214643688] Expected: Should swap then drop +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 216998733] Running DROP.complex: 1 2 3 ROT DROP SWAP DROP . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 218468355] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 219823548] Expected: Should handle complex sequence +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 222393864] Running DROP.empty_stack: DROP +[Hera] [HADES][ERROR] [KRELTSC: 223265490] DROP: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 224036043] Expected error occurred +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 225458709] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 226374750] DROP: 15 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 227311854] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 228333420] Testing word: SWAP +[Hera] [HADES][TEST ] [KRELTSC: 229084590] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 229865076] Running SWAP.basic: 5 7 SWAP . . CR +[Hera] 5 7 +[Hera] [HADES][TEST ] [KRELTSC: 231062769] Test passed +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 232403535] Expected: Should print: 7 5 +[Hera] 5 7 +[Hera] 5 7 +[Hera] 5 7 +[Hera] 5 7 +[Hera] 5 7 +[Hera] [HADES][TEST ] [KRELTSC: 234834054] Running SWAP.same_values: 42 42 SWAP . . CR +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 236109279] Test passed +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 237476568] Expected: Should print: 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 [HADES][INFO ] [KRELTSC: 239960385] L8[TABLE]: Config 1 → 2 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 241176411] Running SWAP.zero_nonzero: 0 99 SWAP . . CR +[Hera] 0 99 +[Hera] [HADES][TEST ] [KRELTSC: 242520327] Test passed +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 243888792] Expected: Should print: 99 0 +[Hera] 0 99 +[Hera] 0 99 +[Hera] 0 99 +[Hera] 0 99 +[Hera] 0 99 +[Hera] [HADES][TEST ] [KRELTSC: 246351966] Running SWAP.negative: -5 10 SWAP . . CR +[Hera] -5 10 +[Hera] [HADES][TEST ] [KRELTSC: 247613037] Test passed +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 248942211] Expected: Should print: 10 -5 +[Hera] -5 10 +[Hera] -5 10 +[Hera] -5 10 +[Hera] -5 10 +[Hera] -5 10 +[Hera] [HADES][TEST ] [KRELTSC: 251454966] Running SWAP.one_item: 42 SWAP +[Hera] [HADES][ERROR] [KRELTSC: 252348180] SWAP: Insufficient stack items (need 2) +[Hera] [HADES][TEST ] [KRELTSC: 253260546] Expected error occurred +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 254708370] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 255628758] Running SWAP.empty_stack: SWAP +[Hera] [HADES][ERROR] [KRELTSC: 256451370] SWAP: Insufficient stack items (need 2) +[Hera] [HADES][TEST ] [KRELTSC: 257378163] Expected error occurred +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 258860007] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 259772604] SWAP: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 260729679] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 261833586] Testing word: OVER +[Hera] [HADES][TEST ] [KRELTSC: 262572744] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 263363268] Running OVER.basic: 5 7 OVER . . . CR +[Hera] 5 7 5 +[Hera] [HADES][TEST ] [KRELTSC: 264741729] Test passed +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 266074326] Expected: Should print: 5 7 5 +[Hera] 5 7 5 +[Hera] 5 7 5 +[Hera] 5 7 5 +[Hera] 5 7 5 +[Hera] 5 7 5 +[Hera] [HADES][TEST ] [KRELTSC: 268546152] Running OVER.zeros: 0 0 OVER . . . CR +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 269751321] Test passed +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 271081251] Expected: Should print: 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 273579222] Running OVER.mixed: -1 42 OVER . . . CR +[Hera] -1 42 -1 +[Hera] [HADES][TEST ] [KRELTSC: 274846656] Test passed +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 276199308] Expected: Should print: -1 42 -1 +[Hera] -1 42 -1 +[Hera] -1 42 -1 +[Hera] -1 42 -1 +[Hera] -1 42 -1 +[Hera] -1 42 -1 +[Hera] [HADES][TEST ] [KRELTSC: 278873007] Running OVER.one_item: 42 OVER +[Hera] [HADES][ERROR] [KRELTSC: 279738963] OVER: Insufficient stack items (need 2) +[Hera] [HADES][TEST ] [KRELTSC: 280652400] Expected error occurred +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 282107532] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 283059252] Running OVER.empty_stack: OVER +[Hera] [HADES][ERROR] [KRELTSC: 283900155] OVER: Insufficient stack items (need 2) +[Hera] [HADES][TEST ] [KRELTSC: 284738454] Expected error occurred +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 286183737] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 287113638] OVER: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 287996394] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 289073862] Testing word: ROT +[Hera] [HADES][TEST ] [KRELTSC: 289787421] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 290565912] Running ROT.basic: 1 2 3 ROT . . . CR +[Hera] 1 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 291810456] Test passed +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 293126988] Expected: Should print: 2 3 1 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 295652427] Running ROT.zeros: 0 0 0 ROT . . . CR +[Hera] [HADES][INFO ] [KRELTSC: 296649906] L8[TABLE]: Config 2 → 3 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 298111065] Test passed +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 299477325] Expected: Should print: 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 301982499] Running ROT.mixed: -1 0 1 ROT . . . CR +[Hera] -1 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 303228429] Test passed +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 304592967] Expected: Should print: 0 1 -1 +[Hera] -1 1 0 +[Hera] -1 1 0 +[Hera] -1 1 0 +[Hera] -1 1 0 +[Hera] -1 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 307130502] Running ROT.two_items: 1 2 ROT +[Hera] [HADES][ERROR] [KRELTSC: 308044611] ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 308952924] Expected error occurred +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 310392537] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 311297364] Running ROT.one_item: 42 ROT +[Hera] [HADES][ERROR] [KRELTSC: 312117624] ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 313019112] Expected error occurred +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 314494551] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 315428841] Running ROT.empty_stack: ROT +[Hera] [HADES][ERROR] [KRELTSC: 316276191] ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 317144268] Expected error occurred +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 318517374] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 319410651] ROT: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 320323962] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 321382950] Testing word: DEPTH +[Hera] [HADES][TEST ] [KRELTSC: 322112091] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 322860678] Running DEPTH.empty: DEPTH . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 324005514] Test passed +[Hera] [HADES][TEST ] Testing DEPTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 325368267] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 327575535] Running DEPTH.one_item: 42 DEPTH . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 328753950] Test passed +[Hera] [HADES][TEST ] Testing DEPTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 330100659] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 332317167] Running DEPTH.multiple: 1 2 3 DEPTH . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 333526578] Test passed +[Hera] [HADES][TEST ] Testing DEPTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 334844790] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 337117935] DEPTH: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 338062641] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 339132780] Testing word: PICK +[Hera] [HADES][TEST ] [KRELTSC: 339864126] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 340596753] Running PICK.pick_0: 1 2 3 0 PICK . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 341913369] Test passed +[Hera] [HADES][TEST ] Testing PICK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 343174692] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 345472197] Running PICK.pick_1: 1 2 3 1 PICK . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 346683918] Test passed +[Hera] [HADES][TEST ] Testing PICK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 348031740] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][INFO ] [KRELTSC: 350113344] L8[TABLE]: Config 3 → 4 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 351522024] Running PICK.pick_2: 1 2 3 2 PICK . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 352728474] Test passed +[Hera] [HADES][TEST ] Testing PICK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 354019785] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 356330121] PICK: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 357345093] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 358436610] Testing word: ROLL +[Hera] [HADES][TEST ] [KRELTSC: 359170854] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 359960496] Running ROLL.roll_1: 1 2 3 1 ROLL . . . CR +[Hera] 1 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 361413885] Test passed +[Hera] [HADES][TEST ] Testing ROLL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 362830545] Expected: Should print: 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 365368500] Running ROLL.roll_2: 1 2 3 2 ROLL . . . CR +[Hera] 2 3 1 +[Hera] [HADES][TEST ] [KRELTSC: 366629613] Test passed +[Hera] [HADES][TEST ] Testing ROLL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 368000640] Expected: Should print: 2 3 1 +[Hera] 2 3 1 +[Hera] 2 3 1 +[Hera] 2 3 1 +[Hera] 2 3 1 +[Hera] 2 3 1 +[Hera] [HADES][TEST ] [KRELTSC: 370541997] ROLL: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 371475804] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 372527442] Testing word: ?DUP +[Hera] [HADES][TEST ] [KRELTSC: 373244802] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 374035536] Running ?DUP.nonzero: 42 ?DUP . . CR +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 375360174] Test passed +[Hera] [HADES][TEST ] Testing ?DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 376682817] Expected: Should print: 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 379147209] Running ?DUP.negative: -5 ?DUP . . CR +[Hera] -5 -5 +[Hera] [HADES][TEST ] [KRELTSC: 380340954] Test passed +[Hera] [HADES][TEST ] Testing ?DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 381680166] Expected: Should print: -5 -5 +[Hera] -5 -5 +[Hera] -5 -5 +[Hera] -5 -5 +[Hera] -5 -5 +[Hera] -5 -5 +[Hera] [HADES][TEST ] [KRELTSC: 384165495] Running ?DUP.zero: 0 ?DUP DEPTH . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 385385763] Test passed +[Hera] [HADES][TEST ] Testing ?DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 386722602] Expected: Should not dup: depth 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 389073426] Running ?DUP.empty_stack: ?DUP +[Hera] [HADES][ERROR] [KRELTSC: 389968950] ?DUP: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 390737613] Expected error occurred +[Hera] [HADES][TEST ] Testing ?DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 392206710] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 393097110] ?DUP: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 394038918] ▶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 395110695] Testing word: -ROT +[Hera] [HADES][TEST ] [KRELTSC: 395839206] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 396634203] Running -ROT.basic: 1 2 3 -ROT . . . CR +[Hera] 2 1 3 +[Hera] [HADES][TEST ] [KRELTSC: 398021694] Test passed +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 399382515] Expected: Should print: 1 3 2 +[Hera] [HADES][INFO ] [KRELTSC: 400260924] L8[TABLE]: Config 4 → 5 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 2 1 3 +[Hera] 2 1 3 +[Hera] 2 1 3 +[Hera] 2 1 3 +[Hera] 2 1 3 +[Hera] [HADES][TEST ] [KRELTSC: 403001172] Running -ROT.zeros: 0 0 0 -ROT . . . CR +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 404236140] Test passed +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 405591690] Expected: Should print: 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 408089976] Running -ROT.roundtrip: 1 2 3 -ROT ROT . . . CR +[Hera] 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 409439478] Test passed +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 410820186] Expected: Should restore original order +[Hera] 3 2 1 +[Hera] 3 2 1 +[Hera] 3 2 1 +[Hera] 3 2 1 +[Hera] 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 413436009] Running -ROT.two_items: 1 2 -ROT +[Hera] [HADES][ERROR] [KRELTSC: 414318051] -ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 415352763] Expected error occurred +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 416831562] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 417785130] Running -ROT.empty_stack: -ROT +[Hera] [HADES][ERROR] [KRELTSC: 418707240] -ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 419609421] Expected error occurred +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 421038030] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 421981371] -ROT: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 423008586] === Stack Words Summary: 0 passed, 0 failed, 0 skipped, 0 error +[Hera] [HADES][INFO ] [KRELTSC: 424140402] +[Hera] === Testing Module: Return Stack Words === +[Hera] [HADES][INFO ] [KRELTSC: 425302647] Running Return Stack Words Tests (Module 2)... +[Hera] [HADES][TEST ] [KRELTSC: 426301050] ▶ Testing module: src/test_runner/modules/return_stack_words_ +[Hera] [HADES][TEST ] [KRELTSC: 427407666] Testing word: >R +[Hera] [HADES][TEST ] [KRELTSC: 428131179] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 428905932] Running >R.basic: 42 >R R@ . R> . CR +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 430430406] Test passed +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 431787300] Expected: Should print: 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 434302512] Running >R.zero: 0 >R R@ . R> . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 435489348] Test passed +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 436814973] Expected: Should print: 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 439226613] Running >R.negative: -123 >R R@ . R> . CR +[Hera] -123 -123 +[Hera] [HADES][TEST ] [KRELTSC: 440550453] Test passed +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 441894684] Expected: Should print: -123 -123 +[Hera] -123 -123 +[Hera] -123 -123 +[Hera] -123 -123 [HADES][INFO ] [KRELTSC: 443930109] L8[TABLE]: Config 5 → 6 regime=2 score=26214 L1=0 L2=0 L3=0 L + +[Hera] -123 -123 +[Hera] -123 -123 +[Hera] [HADES][TEST ] [KRELTSC: 445798353] Running >R.multiple: 1 2 >R >R R@ . R> . R@ . R> . CR +[Hera] 1 1 2 2 +[Hera] [HADES][TEST ] [KRELTSC: 447563529] Test passed +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 449211231] Expected: Should print: 2 2 1 1 +[Hera] 1 1 2 2 +[Hera] 1 1 2 2 +[Hera] 1 1 2 2 +[Hera] 1 1 2 2 +[Hera] 1 1 2 2 +[Hera] [HADES][TEST ] [KRELTSC: 452861493] Running >R.empty_stack: >R +[Hera] [HADES][ERROR] [KRELTSC: 453935538] >R: DSP underflow +[Hera] [HADES][TEST ] [KRELTSC: 454775328] Expected error occurred +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 456535233] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 457647939] >R: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 458855628] ▶ Testing module: src/test_runner/modules/return_stack_words_ +[Hera] [HADES][TEST ] [KRELTSC: 459978372] Testing word: R> +[Hera] [HADES][TEST ] [KRELTSC: 460681494] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 461471493] Running R>.basic: 42 >R R> . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 462698880] Test passed +[Hera] [HADES][TEST ] Testing R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 464014908] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 466331649] Running R>.lifo_order: 1 2 >R >R R> . R> . CR +[Hera] 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 467647467] Test passed +[Hera] [HADES][TEST ] Testing R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 468969144] Expected: Should print: 2 1 +[Hera] 1 2 +[Hera] 1 2 +[Hera] 1 2 +[Hera] 1 2 +[Hera] 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 471436350] Running R>.empty_rstack: R> +[Hera] [HADES][ERROR] [KRELTSC: 472391976] R>: RSP underflow +[Hera] [HADES][TEST ] [KRELTSC: 473097324] Expected error occurred +[Hera] [HADES][TEST ] Testing R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 474549159] Expected: Should cause return stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 475542858] R>: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 476477652] ▶ Testing module: src/test_runner/modules/return_stack_words_ +[Hera] [HADES][TEST ] [KRELTSC: 477525426] Testing word: R@ +[Hera] [HADES][TEST ] [KRELTSC: 478248330] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 479032239] Running R@.basic: 42 >R R@ . R> DROP CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 480302298] Test passed +[Hera] [HADES][TEST ] Testing R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 481644534] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 484056426] Running R@.non_destructive: 99 >R R@ R@ = . R> DROP CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 485495997] Test passed +[Hera] [HADES][TEST ] Testing R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 486828489] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 [HADES][INFO ] [KRELTSC: 488732034] L8[TABLE]: Config 6 → 7 regime=2 score=26214 L1=0 L2=0 L3=0 L + +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 490366926] Running R@.empty_rstack: R@ +[Hera] [HADES][ERROR] [KRELTSC: 491204511] R@: RSP underflow +[Hera] [HADES][TEST ] [KRELTSC: 491919351] Expected error occurred +[Hera] [HADES][TEST ] Testing R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 493369905] Expected: Should cause return stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 494319399] R@: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 495244575] === Return Stack Words Summary: 0 passed, 0 failed, 0 skipped, +[Hera] [HADES][INFO ] [KRELTSC: 496268787] +[Hera] === Testing Module: Memory Words === +[Hera] [HADES][INFO ] [KRELTSC: 497450268] Running Memory Words Tests (Module 3)... +[Hera] [HADES][TEST ] [KRELTSC: 498331197] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 499473807] Testing word: ! +[Hera] [HADES][TEST ] [KRELTSC: 500178147] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 500969637] Running !.basic: 42 HERE ! HERE @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 502476429] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 503814192] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 506165037] Running !.zero: 0 HERE ! HERE @ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 507340050] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 508644570] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 511001631] Running !.negative: -999 HERE ! HERE @ . CR +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 512274840] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 513607080] Expected: Should print: -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 516095874] Running !.overwrite: 111 HERE ! 222 HERE ! HERE @ . CR +[Hera] 222 +[Hera] [HADES][TEST ] [KRELTSC: 517484541] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 518812056] Expected: Should print: 222 +[Hera] 222 +[Hera] 222 +[Hera] 222 +[Hera] 222 +[Hera] 222 +[Hera] [HADES][TEST ] [KRELTSC: 521303055] Running !.max_int: 2147483647 HERE ! HERE @ . CR +[Hera] 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 522672171] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 524012475] Expected: Should store max int +[Hera] 2147483647 +[Hera] 2147483647 +[Hera] 2147483647 +[Hera] 2147483647 +[Hera] 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 526705011] Running !.min_int: -2147483648 HERE ! HERE @ . CR +[Hera] -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 528081771] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 529339902] Expected: Should store min int +[Hera] [HADES][INFO ] [KRELTSC: 530327217] L8[TABLE]: Config 7 → 8 regime=2 score=6553 L1=0 L2=0 L3=0 L4 +[Hera] -2147483648 +[Hera] -2147483648 +[Hera] -2147483648 +[Hera] -2147483648 +[Hera] -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 533368752] Running !.empty_stack: ! +[Hera] [HADES][TEST ] [KRELTSC: 534173892] Expected error occurred +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 535622031] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 536554368] Running !.one_item: 42 ! +[Hera] [HADES][TEST ] [KRELTSC: 537374691] Expected error occurred +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 538763148] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 539658462] !: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 540635172] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 541723959] Testing word: @ +[Hera] [HADES][TEST ] [KRELTSC: 542377122] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 543267039] Running @.after_store: 123 HERE ! HERE @ . CR +[Hera] 123 +[Hera] [HADES][TEST ] [KRELTSC: 545020035] Test passed +[Hera] [HADES][TEST ] Testing @ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 546496755] Expected: Should print: 123 +[Hera] 123 +[Hera] 123 +[Hera] 123 +[Hera] 123 +[Hera] 123 +[Hera] [HADES][TEST ] [KRELTSC: 548995650] Running @.multiple_reads: 456 HERE ! HERE @ HERE @ = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 550398429] Test passed +[Hera] [HADES][TEST ] Testing @ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 551720526] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 554152263] Running @.empty_stack: @ +[Hera] [HADES][TEST ] [KRELTSC: 555028425] Expected error occurred +[Hera] [HADES][TEST ] Testing @ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 556470033] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 557399787] @: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 558294912] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 559369104] Testing word: C! +[Hera] [HADES][TEST ] [KRELTSC: 560074746] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 560861490] Running C!.basic: 65 HERE C! HERE C@ . CR +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 562411605] Test passed +[Hera] [HADES][TEST ] Testing C! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 563624817] Expected: Should print: 65 +[Hera] 65 +[Hera] 65 +[Hera] 65 +[Hera] 65 +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 565862262] Running C!.zero: 0 HERE C! HERE C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 567097377] Test passed +[Hera] [HADES][TEST ] Testing C! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 568434006] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 570816246] Running C!.high_byte: 255 HERE C! HERE C@ . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 572140506] Test passed +[Hera] [HADES][TEST ] Testing C! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 573433329] Expected: Should print: 255 +[Hera] 255 +[Hera] 255 +[Hera] 255 +[Hera] [HADES][INFO ] [KRELTSC: 575337336] L8[TABLE]: Config 8 → 9 regime=2 score=6553 L1=0 L2=0 L3=0 L4 +[Hera] 255 +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 577154088] Running C!.truncation: 256 HERE C! HERE C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 578465769] Test passed +[Hera] [HADES][TEST ] Testing C! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 579807963] Expected: Should print: 0 (truncated) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 582266286] C!: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 583203873] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 584252109] Testing word: C@ +[Hera] [HADES][TEST ] [KRELTSC: 584898342] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 585667656] Running C@.after_cstore: 97 HERE C! HERE C@ . CR +[Hera] 97 +[Hera] [HADES][TEST ] [KRELTSC: 586961718] Test passed +[Hera] [HADES][TEST ] Testing C@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 588368298] Expected: Should print: 97 +[Hera] 97 +[Hera] 97 +[Hera] 97 +[Hera] 97 +[Hera] 97 +[Hera] [HADES][TEST ] [KRELTSC: 590764797] Running C@.zero_byte: 0 HERE C! HERE C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 592057200] Test passed +[Hera] [HADES][TEST ] Testing C@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 593348427] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 595720839] C@: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 596651265] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 597749439] Testing word: , +[Hera] [HADES][TEST ] [KRELTSC: 598456845] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 599256147] Running ,.basic: 42 , HERE 8 - @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 600684651] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 602042532] Expected: Should compile 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 604477545] Running ,.negative: -999 , HERE 8 - @ . CR +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 605781267] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 607121445] Expected: Should compile -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 609639996] ,: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 610579221] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 611661624] Testing word: C, +[Hera] [HADES][TEST ] [KRELTSC: 612402714] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 613184670] Running C,.basic: 65 C, HERE 1 - C@ . CR +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 614638920] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 615996150] Expected: Should compile byte 65 +[Hera] 65 +[Hera] 65 +[Hera] [HADES][INFO ] [KRELTSC: 617607186] L8[TABLE]: Config 9 → 10 regime=2 score=6553 L1=0 L2=0 L3=0 L +[Hera] 65 +[Hera] 65 +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 619775079] Running C,.zero: 0 C, HERE 1 - C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 621031110] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 622359003] Expected: Should compile byte 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 624924153] C,: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 625865142] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 626946705] Testing word: 2, +[Hera] [HADES][TEST ] [KRELTSC: 627664632] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 628458054] Running 2,.roundtrip: 12345 67890 2, HERE 16 - 2@ . . CR +[Hera] 67890 12345 +[Hera] [HADES][TEST ] [KRELTSC: 630279321] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 631653141] Expected: Should print: 67890 12345 +[Hera] 67890 12345 +[Hera] 67890 12345 +[Hera] 67890 12345 +[Hera] 67890 12345 +[Hera] 67890 12345 +[Hera] [HADES][TEST ] [KRELTSC: 634538289] Running 2,.save-and-verify: 12345 67890 2, HERE 16 - 2@ 67890 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 636140631] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 637527135] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 640134390] 2,: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 641032581] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 642072438] Testing word: HERE +[Hera] [HADES][TEST ] [KRELTSC: 642791499] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 643566945] Running HERE.basic: HERE HERE = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 645138816] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 646837800] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 649212858] Running HERE.after_comma: HERE 42 , HERE SWAP - 1 CELLS = 0 S +[Hera] [HADES][INFO ] [KRELTSC: 650434008] L8[TABLE]: Config 10 → 11 regime=2 score=6553 L1=0 L2=0 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 651999012] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 653324952] Expected: Asserts HERE advances by exactly 1 CELLS (8 bytes +[Hera] [HADES][TEST ] [KRELTSC: 654870741] HERE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 655809462] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 656896170] Testing word: ALLOT +[Hera] [HADES][TEST ] [KRELTSC: 657643854] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 658448322] Running ALLOT.basic: HERE 10 ALLOT HERE SWAP - . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 659889657] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 661294326] Expected: Should print: 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 663796308] Running ALLOT.zero: HERE 0 ALLOT HERE SWAP - . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 665161035] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 666550647] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 669085179] Running ALLOT.negative: HERE -4 ALLOT HERE SWAP - . CR +[Hera] -4 +[Hera] [HADES][TEST ] [KRELTSC: 670449423] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 671817195] Expected: Should print: -4 +[Hera] -4 +[Hera] -4 +[Hera] -4 +[Hera] -4 +[Hera] -4 +[Hera] [HADES][TEST ] [KRELTSC: 674293011] ALLOT: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 675252207] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 676344669] Testing word: PAD +[Hera] [HADES][TEST ] [KRELTSC: 677087250] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 677895393] Running PAD.basic: PAD PAD = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 679151634] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 680511972] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 682866492] Running PAD.different_from_here: PAD HERE = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 684182310] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 685565601] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 [HADES][INFO ] [KRELTSC: 686941836] L8[TABLE]: Config 11 → 12 regime=2 score=6553 L1=0 L2=0 L3=0 + +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 688798005] PAD: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 689743194] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 690832023] Testing word: +! +[Hera] [HADES][TEST ] [KRELTSC: 691537350] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 692348223] Running +!.basic: 10 HERE ! 5 HERE +! HERE @ . CR +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 693829731] Test passed +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 695171988] Expected: Should print: 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 697674978] Running +!.by_zero: 42 HERE ! 0 HERE +! HERE @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 699017445] Test passed +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 700390845] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 703027122] Running +!.negative: 10 HERE ! -3 HERE +! HERE @ . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 704404239] Test passed +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 705726210] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 708155826] Running +!.accumulate: 0 HERE ! 1 HERE +! 2 HERE +! 3 HERE +! +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 709621248] Test passed +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 710991162] Expected: Should print: 6 +[Hera] 6 +[Hera] 6 +[Hera] [HADES][INFO ] [KRELTSC: 712670280] L8[TABLE]: Config 12 → 13 regime=2 score=6553 L1=0 L2=0 L3=0 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 714800079] Running +!.empty_stack: +! +[Hera] [HADES][TEST ] [KRELTSC: 715645749] Expected error occurred +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 717097332] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 718013457] +!: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 718922211] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 719963034] Testing word: -! +[Hera] [HADES][TEST ] [KRELTSC: 720701520] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 721494060] Running -!.basic: 10 HERE ! 3 HERE -! HERE @ . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 722976072] Test passed +[Hera] [HADES][TEST ] Testing -! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 724330551] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 726746118] Running -!.by_zero: 42 HERE ! 0 HERE -! HERE @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 728139447] Test passed +[Hera] [HADES][TEST ] Testing -! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 729536892] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 732036795] Running -!.negative: 10 HERE ! -5 HERE -! HERE @ . CR +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 733427940] Test passed +[Hera] [HADES][TEST ] Testing -! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 734785800] Expected: Should print: 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 737306535] Running -!.empty_stack: -! +[Hera] [HADES][TEST ] [KRELTSC: 738153066] Expected error occurred +[Hera] [HADES][TEST ] Testing -! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 739596354] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 740523987] -!: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 741455946] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 742576611] Testing word: 2! +[Hera] [HADES][TEST ] [KRELTSC: 743283408] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 744042873] Running 2!.basic: 11 22 HERE 2! HERE @ . HERE 8 + @ . CR +[Hera] 11 22 +[Hera] [HADES][TEST ] [KRELTSC: 745756452] Test passed +[Hera] [HADES][TEST ] Testing 2! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 747130524] Expected: Should print: 22 11 +[Hera] 11 22 +[Hera] 11 22 [HADES][INFO ] [KRELTSC: 748715709] L8[TABLE]: Config 13 → 14 regime=2 score=6553 L1=0 L2=0 L3=0 + +[Hera] 11 22 +[Hera] 11 22 +[Hera] 11 22 +[Hera] [HADES][TEST ] [KRELTSC: 750757371] Running 2!.zeros: 0 0 HERE 2! HERE @ . HERE 8 + @ . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 752160759] Test passed +[Hera] [HADES][TEST ] Testing 2! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 753525234] Expected: Should print: 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 756113148] Running 2!.negative: -1 -2 HERE 2! HERE @ . HERE 8 + @ . CR +[Hera] -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 757561056] Test passed +[Hera] [HADES][TEST ] Testing 2! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 758923326] Expected: Should print: -2 -1 +[Hera] -1 -2 +[Hera] -1 -2 +[Hera] -1 -2 +[Hera] -1 -2 +[Hera] -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 761739258] Running 2!.empty_stack: 2! +[Hera] [HADES][TEST ] [KRELTSC: 762601917] Expected error occurred +[Hera] [HADES][TEST ] Testing 2! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 764050350] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 765001797] 2!: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 765929367] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 767041611] Testing word: FILL +[Hera] [HADES][TEST ] [KRELTSC: 767786859] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 768561171] Running FILL.basic: HERE 8 65 FILL HERE C@ . HERE 1+ C@ . CR +[Hera] 65 65 +[Hera] [HADES][TEST ] [KRELTSC: 770331534] Test passed +[Hera] [HADES][TEST ] Testing FILL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 771713355] Expected: Should print: 65 65 +[Hera] 65 65 +[Hera] 65 65 +[Hera] 65 65 +[Hera] 65 65 [HADES][INFO ] [KRELTSC: 774138246] L8[TABLE]: Config 14 → 15 regime=2 score=6553 L1=0 L2=0 L3=0 + +[Hera] 65 65 +[Hera] [HADES][TEST ] [KRELTSC: 775501839] Running FILL.zero_n: HERE 0 88 FILL +[Hera] [HADES][TEST ] [KRELTSC: 776427393] Test passed +[Hera] [HADES][TEST ] Testing FILL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 777826077] Expected: Should do nothing +[Hera] [HADES][TEST ] [KRELTSC: 778868706] Running FILL.zero_byte: HERE 4 0 FILL HERE C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 780556266] Test passed +[Hera] [HADES][TEST ] Testing FILL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 782126520] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 784579320] Running FILL.empty_stack: FILL +[Hera] [HADES][TEST ] [KRELTSC: 785501808] Expected error occurred +[Hera] [HADES][TEST ] Testing FILL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 786991674] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 787918803] FILL: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 788882934] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 789985035] Testing word: MOVE +[Hera] [HADES][TEST ] [KRELTSC: 790739355] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 791527044] Running MOVE.basic: HERE 65 OVER C! HERE 1+ 66 OVER C! HERE H +[Hera] 65 66 +[Hera] [HADES][TEST ] [KRELTSC: 793461543] Test passed +[Hera] [HADES][TEST ] Testing MOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 794899539] Expected: Should print: 65 66 +[Hera] 65 66 +[Hera] 65 66 +[Hera] 65 66 +[Hera] 65 66 +[Hera] 65 66 +[Hera] [HADES][TEST ] [KRELTSC: 798116361] Running MOVE.zero_n: HERE HERE 8 + 0 MOVE +[Hera] [HADES][TEST ] [KRELTSC: 799126062] Test passed +[Hera] [HADES][TEST ] Testing MOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 800509794] Expected: Should do nothing +[Hera] [HADES][INFO ] [KRELTSC: 801481737] L8[TABLE]: Config 15 → 16 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] [HADES][TEST ] [KRELTSC: 802889031] Running MOVE.empty_stack: MOVE +[Hera] [HADES][TEST ] [KRELTSC: 803761371] Expected error occurred +[Hera] [HADES][TEST ] Testing MOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 805203042] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 806077146] MOVE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 807154320] ▶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 808453023] Testing word: ERASE +[Hera] [HADES][TEST ] [KRELTSC: 809344179] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 810256293] Running ERASE.basic: HERE 4 65 FILL HERE 4 ERASE HERE C@ . HE +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 812547099] Test passed +[Hera] [HADES][TEST ] Testing ERASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 814259964] Expected: Should print: 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 818103132] Running ERASE.zero_n: HERE 0 ERASE +[Hera] [HADES][TEST ] [KRELTSC: 819303282] Test passed +[Hera] [HADES][TEST ] Testing ERASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 820998969] Expected: Should do nothing +[Hera] [HADES][TEST ] [KRELTSC: 822412479] Running ERASE.empty_stack: ERASE +[Hera] [HADES][TEST ] [KRELTSC: 823393410] Expected error occurred +[Hera] [HADES][TEST ] Testing ERASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 824868534] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 825812862] ERASE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 826769895] === Memory Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 827835981] +[Hera] === Testing Module: Arithmetic Words === +[Hera] [HADES][INFO ] [KRELTSC: 829003329] Running Arithmetic Words Tests (Module 5)... +[Hera] [HADES][TEST ] [KRELTSC: 829953327] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 831044760] Testing word: + +[Hera] [HADES][TEST ] [KRELTSC: 831750192] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 832510035] Running +.basic: 5 7 + . CR +[Hera] 12 +[Hera] [HADES][TEST ] [KRELTSC: 833642586] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 834976926] Expected: Should print: 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] [HADES][TEST ] [KRELTSC: 837227874] Running +.zero_add: 42 0 + . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 838373193] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 839709465] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 842005962] Running +.negative: -5 3 + . CR +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 843183306] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 844481757] Expected: Should print: -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 846773319] Running +.both_negative: -5 -3 + . CR +[Hera] -8 +[Hera] [HADES][TEST ] [KRELTSC: 847963914] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 849334437] Expected: Should print: -8 +[Hera] -8 +[Hera] -8 +[Hera] -8 +[Hera] -8 +[Hera] [HADES][INFO ] [KRELTSC: 851415012] L8[TABLE]: Config 16 → 18 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] -8 +[Hera] [HADES][TEST ] [KRELTSC: 852864978] Running +.overflow: 2147483647 1 + . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 854135877] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 855474165] Expected: Should overflow +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 858135159] Running +.underflow: -2147483648 -1 + . CR +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 859458348] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 860795838] Expected: Should underflow +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 863468424] Running +.empty_stack: + +[Hera] [HADES][ERROR] [KRELTSC: 864305862] +: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 865048569] Expected error occurred +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 866473818] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 867418146] Running +.one_item: 42 + +[Hera] [HADES][ERROR] [KRELTSC: 868250166] +: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 868973742] Expected error occurred +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 870414510] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 871335864] +: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 872307975] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 873358605] Testing word: - +[Hera] [HADES][TEST ] [KRELTSC: 874113387] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 874885977] Running -.basic: 10 3 - . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 876099000] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 877446549] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 879727800] Running -.zero_sub: 42 0 - . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 880896996] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 882238749] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 884555847] Running -.from_zero: 0 5 - . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 885707130] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 887038635] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 889336098] Running -.negative: 5 -3 - . CR +[Hera] 8 +[Hera] [HADES][TEST ] [KRELTSC: 890473122] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 891861642] Expected: Should print: 8 +[Hera] 8 +[Hera] 8 +[Hera] 8 +[Hera] 8 +[Hera] 8 +[Hera] [HADES][TEST ] [KRELTSC: 894147429] Running -.same_values: 42 42 - . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 895358205] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 896693259] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 898976421] Running -.overflow: -2147483648 1 - . CR +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 900287283] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 901654488] Expected: Should underflow +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 904345281] Running -.underflow: 2147483647 -1 - . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 905645433] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 906977673] Expected: Should overflow +[Hera] 2147483648 +[Hera] [HADES][INFO ] [KRELTSC: 908233746] L8[TABLE]: Config 18 → 19 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 910828086] Running -.empty_stack: - +[Hera] [HADES][ERROR] [KRELTSC: 911668149] -: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 912390822] Expected error occurred +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 913825479] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 914722977] Running -.one_item: 42 - +[Hera] [HADES][ERROR] [KRELTSC: 915510414] -: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 916232646] Expected error occurred +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 917648193] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 918581958] -: 9 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 919481745] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 920550981] Testing word: * +[Hera] [HADES][TEST ] [KRELTSC: 921239466] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 922006029] Running *.basic: 6 7 * . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 923258931] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 924615678] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 926902725] Running *.by_zero: 42 0 * . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 928023159] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 929382153] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 931632072] Running *.by_one: 42 1 * . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 932892744] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 934207890] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 936510477] Running *.by_negative: 6 -7 * . CR +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 937713672] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 939023316] Expected: Should print: -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 941425758] Running *.negative_negative: -6 -7 * . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 942657240] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 943998741] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 946302189] Running *.large_numbers: 32767 2 * . CR +[Hera] 65534 +[Hera] [HADES][TEST ] [KRELTSC: 947546187] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 948909528] Expected: Should print: 65534 +[Hera] 65534 +[Hera] 65534 +[Hera] 65534 +[Hera] 65534 +[Hera] 65534 +[Hera] [HADES][TEST ] [KRELTSC: 951361068] Running *.overflow: 65536 65536 * . CR +[Hera] 4294967296 +[Hera] [HADES][TEST ] [KRELTSC: 952647969] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 954019773] Expected: May overflow +[Hera] 4294967296 +[Hera] 4294967296 +[Hera] 4294967296 +[Hera] 4294967296 +[Hera] 4294967296 +[Hera] [HADES][TEST ] [KRELTSC: 956614470] Running *.empty_stack: * +[Hera] [HADES][ERROR] [KRELTSC: 957466377] *: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 958250412] Expected error occurred +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 959685258] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 960613899] Running *.one_item: 42 * +[Hera] [HADES][ERROR] [KRELTSC: 961456692] *: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 962203746] Expected error occurred +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 963652137] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 964589094] *: 9 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 965524077] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 966632940] Testing word: / +[Hera] [HADES][TEST ] [KRELTSC: 967341186] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 968127468] Running /.basic: 15 3 / . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 969270435] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 970614204] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][INFO ] [KRELTSC: 972358401] L8[TABLE]: Config 19 → 20 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 974061417] Running /.by_one: 42 1 / . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 975216837] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 976564029] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 978888078] Running /.negative_dividend: -15 3 / . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 980113554] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 981470742] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 983782128] Running /.negative_divisor: 15 -3 / . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 985011993] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 986364246] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 988679559] Running /.both_negative: -15 -3 / . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 989888886] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 991359075] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 993614790] Running /.truncation: 7 3 / . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 994782642] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 996099279] Expected: Should print: 2 (truncated) +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 998464971] Running /.by_zero: 42 0 / +[Hera] [HADES][ERROR] [KRELTSC: 999295542] /: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1000055385] Expected error occurred +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1001473158] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1002372021] Running /.empty_stack: / +[Hera] [HADES][ERROR] [KRELTSC: 1003184070] /: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1003961385] Expected error occurred +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1005372375] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1006265190] Running /.one_item: 42 / +[Hera] [HADES][ERROR] [KRELTSC: 1007097189] /: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1007863563] Expected error occurred +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1009303743] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1010212665] /: 9 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1011174927] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1012284063] Testing word: MOD +[Hera] [HADES][TEST ] [KRELTSC: 1013016900] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1013812485] Running MOD.basic: 17 5 MOD . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1015304157] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1016670270] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1019051439] Running MOD.exact_division: 15 3 MOD . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1020312342] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1021687065] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1024104774] Running MOD.by_one: 42 1 MOD . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1025584434] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1027239318] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1029753543] Running MOD.negative_dividend: -17 5 MOD . CR +[Hera] [HADES][INFO ] [KRELTSC: 1030778343] L8[TABLE]: Config 20 → 21 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 1032263484] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1033652970] Expected: Should handle negative +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 1036130676] Running MOD.negative_divisor: 17 -5 MOD . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1037405733] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1038733857] Expected: Should handle negative +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1041189681] Running MOD.small_by_large: 3 7 MOD . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1042406631] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1043791308] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1046170608] Running MOD.by_zero: 42 0 MOD +[Hera] [HADES][ERROR] [KRELTSC: 1047121824] MOD: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1048003446] Expected error occurred +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1049414079] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1050318906] Running MOD.empty_stack: MOD +[Hera] [HADES][ERROR] [KRELTSC: 1051200633] MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1051954785] Expected error occurred +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1053379845] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1054290552] Running MOD.one_item: 42 MOD +[Hera] [HADES][ERROR] [KRELTSC: 1055176815] MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1055915553] Expected error occurred +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1057356489] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1058291220] MOD: 9 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1059224628] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1060300689] Testing word: /MOD +[Hera] [HADES][TEST ] [KRELTSC: 1061034639] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1061814285] Running /MOD.basic: 17 5 /MOD . . CR +[Hera] 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 1063233234] Test passed +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1064619276] Expected: Should print: 3 2 +[Hera] 3 2 +[Hera] 3 2 +[Hera] 3 2 +[Hera] 3 2 +[Hera] 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 1067196711] Running /MOD.exact: 15 3 /MOD . . CR +[Hera] 5 0 +[Hera] [HADES][TEST ] [KRELTSC: 1068444195] Test passed +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1069849284] Expected: Should print: 5 0 +[Hera] 5 0 +[Hera] 5 0 +[Hera] 5 0 +[Hera] 5 0 +[Hera] 5 0 +[Hera] [HADES][TEST ] [KRELTSC: 1072364958] Running /MOD.negative: -17 5 /MOD . . CR +[Hera] -3 -2 +[Hera] [HADES][TEST ] [KRELTSC: 1073675022] Test passed +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1075050123] Expected: Should handle negative dividend +[Hera] -3 -2 +[Hera] -3 -2 +[Hera] -3 -2 +[Hera] -3 -2 +[Hera] -3 -2 +[Hera] [HADES][TEST ] [KRELTSC: 1077774852] Running /MOD.by_zero: 42 0 /MOD +[Hera] [HADES][ERROR] [KRELTSC: 1078700238] /MOD: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1079499582] Expected error occurred +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1080967566] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1081904565] Running /MOD.empty_stack: /MOD +[Hera] [HADES][ERROR] [KRELTSC: 1082790807] /MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1083577635] Expected error occurred +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1085028399] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1085949018] Running /MOD.one_item: 42 /MOD +[Hera] [HADES][ERROR] [KRELTSC: 1086873921] /MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1087642122] Expected error occurred +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1089084234] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1090049688] /MOD: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1091010396] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1092114072] Testing word: ABS +[Hera] [HADES][TEST ] [KRELTSC: 1092825363] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1093624644] Running ABS.positive: 42 ABS . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1094943801] Test passed +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1096319175] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1098638709] Running ABS.negative: -42 ABS . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1099824369] Test passed +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1101210663] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 [HADES][INFO ] [KRELTSC: 1103521440] L8[TABLE]: Config 21 → 22 regime=2 score=26214 L1=0 L2=0 L3=1 + +[Hera] [HADES][TEST ] [KRELTSC: 1104473622] Running ABS.zero: 0 ABS . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1105679631] Test passed +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1107064455] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1109335395] Running ABS.min_int: -2147483648 ABS . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1110625593] Test passed +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1112009094] Expected: Should print: 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1114711437] Running ABS.empty_stack: ABS +[Hera] [HADES][ERROR] [KRELTSC: 1115589321] ABS: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1116361617] Expected error occurred +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1117842642] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1118770674] ABS: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1119734343] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1120802739] Testing word: NEGATE +[Hera] [HADES][TEST ] [KRELTSC: 1121595510] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1122396156] Running NEGATE.positive: 42 NEGATE . CR +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 1123782975] Test passed +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1125180609] Expected: Should print: -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 1127590380] Running NEGATE.negative: -42 NEGATE . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1128825348] Test passed +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1130248035] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1132560051] Running NEGATE.zero: 0 NEGATE . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1133723892] Test passed +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1135103697] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1137343473] Running NEGATE.min_int: -2147483648 NEGATE . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1138700262] Test passed +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1140061125] Expected: Should print: 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1142752695] Running NEGATE.empty_stack: NEGATE +[Hera] [HADES][ERROR] [KRELTSC: 1143697464] NEGATE: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1144502667] Expected error occurred +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1145987766] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1146929595] NEGATE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1147931820] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1149030771] Testing word: MIN +[Hera] [HADES][TEST ] [KRELTSC: 1149764742] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1150580235] Running MIN.basic: 5 3 MIN . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1151867892] Test passed +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1153234110] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1155537306] Running MIN.equal: 42 42 MIN . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1156698627] Test passed +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1158081519] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1160458278] Running MIN.negative: -5 -3 MIN . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 1161669474] Test passed +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1163092728] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 1165425492] Running MIN.mixed: -1 1 MIN . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1166568333] Test passed +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1167957504] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 [HADES][INFO ] [KRELTSC: 1169688282] L8[TABLE]: Config 22 → 23 regime=2 score=52428 L1=0 L2=0 L3=1 + +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1171239825] Running MIN.one_item: 42 MIN +[Hera] [HADES][ERROR] [KRELTSC: 1172099376] MIN: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1172866401] Expected error occurred +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1174337325] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1175252022] Running MIN.empty_stack: MIN +[Hera] [HADES][ERROR] [KRELTSC: 1176094038] MIN: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1176821058] Expected error occurred +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1178274720] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1179165414] MIN: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1180108671] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1181197815] Testing word: MAX +[Hera] [HADES][TEST ] [KRELTSC: 1181935713] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1182714309] Running MAX.basic: 5 3 MAX . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1183987623] Test passed +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1185366819] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1187659704] Running MAX.equal: 42 42 MAX . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1188857460] Test passed +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1190231343] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1192564002] Running MAX.negative: -5 -3 MAX . CR +[Hera] -3 +[Hera] [HADES][TEST ] [KRELTSC: 1193775660] Test passed +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1195121781] Expected: Should print: -3 +[Hera] -3 +[Hera] -3 +[Hera] -3 +[Hera] -3 +[Hera] -3 +[Hera] [HADES][TEST ] [KRELTSC: 1197460719] Running MAX.mixed: -1 1 MAX . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 1198606101] Test passed +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1199967405] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 1202217912] Running MAX.one_item: 42 MAX +[Hera] [HADES][ERROR] [KRELTSC: 1203095271] MAX: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1203848499] Expected error occurred +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1205324484] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1206244725] Running MAX.empty_stack: MAX +[Hera] [HADES][ERROR] [KRELTSC: 1207036215] MAX: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1207806537] Expected error occurred +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1209243798] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1210136466] MAX: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1211079513] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1212179850] Testing word: 1+ +[Hera] [HADES][TEST ] [KRELTSC: 1212878604] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1213679901] Running 1+.basic: 5 1+ . CR +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 1214779944] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1216141752] Expected: Should print: 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 1218384867] Running 1+.zero: 0 1+ . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 1219465086] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1220905119] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 1223158734] Running 1+.negative: -1 1+ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1224295233] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1225654059] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1227896607] Running 1+.chain: 3 1+ 1+ 1+ . CR +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 1229089869] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1230446007] Expected: Should print: 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 1232693448] Running 1+.overflow: 2147483647 1+ . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1233967644] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1235322417] Expected: Should overflow +[Hera] 2147483648 +[Hera] 2147483648 [HADES][INFO ] [KRELTSC: 1236834417] L8[TABLE]: Config 23 → 24 regime=2 score=6553 L1=0 L2=0 L3=1 + +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1238864613] Running 1+.empty_stack: 1+ +[Hera] [HADES][ERROR] [KRELTSC: 1239717465] 1+: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1240482768] Expected error occurred +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1241956674] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1242889788] 1+: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1243806564] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1244850537] Testing word: 1- +[Hera] [HADES][TEST ] [KRELTSC: 1245551118] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1246292313] Running 1-.basic: 5 1- . CR +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 1247497461] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1248841083] Expected: Should print: 4 +[Hera] 4 +[Hera] 4 +[Hera] 4 +[Hera] 4 +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 1251070065] Running 1-.to_zero: 1 1- . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1252204800] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1253553294] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1255747626] Running 1-.to_negative: 0 1- . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1256909913] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1258231254] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1260529011] Running 1-.chain: 6 1- 1- 1- . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1262080617] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1263567438] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1265903730] Running 1-.underflow: -2147483648 1- . CR +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 1267188720] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1268522640] Expected: Should underflow +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 1271181492] Running 1-.empty_stack: 1- +[Hera] [HADES][ERROR] [KRELTSC: 1272091149] 1-: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1272864117] Expected error occurred +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1274316183] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1275265488] 1-: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1276208829] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1277309082] Testing word: 2+ +[Hera] [HADES][TEST ] [KRELTSC: 1278117267] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1278924759] Running 2+.basic: 5 2+ . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 1280179320] Test passed +[Hera] [HADES][TEST ] Testing 2+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1281527415] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 1283760198] Running 2+.zero: 0 2+ . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1284846864] Test passed +[Hera] [HADES][TEST ] Testing 2+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1286197836] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1288429863] Running 2+.negative: -3 2+ . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1289591856] Test passed +[Hera] [HADES][TEST ] Testing 2+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1290918531] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1293230967] Running 2+.empty_stack: 2+ +[Hera] [HADES][ERROR] [KRELTSC: 1294079955] 2+: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1294857228] Expected error occurred +[Hera] [HADES][TEST ] Testing 2+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1296338106] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1297256919] 2+: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1298223549] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1299319224] Testing word: 2- +[Hera] [HADES][TEST ] [KRELTSC: 1300067580] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1300870620] Running 2-.basic: 7 2- . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1302091119] Test passed +[Hera] [HADES][TEST ] Testing 2- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1303479639] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1305734829] Running 2-.zero: 2 2- . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1306822398] Test passed +[Hera] [HADES][TEST ] Testing 2- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1308160833] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1309583121] L8[TABLE]: Config 24 → 25 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1311594879] Running 2-.negative: 0 2- . CR +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 1312763382] Test passed +[Hera] [HADES][TEST ] Testing 2- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1314115131] Expected: Should print: -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 1316430276] Running 2-.empty_stack: 2- +[Hera] [HADES][ERROR] [KRELTSC: 1317465849] 2-: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1318201080] Expected error occurred +[Hera] [HADES][TEST ] Testing 2- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1319664150] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1320592392] 2-: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1321522734] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1322613810] Testing word: 2* +[Hera] [HADES][TEST ] [KRELTSC: 1323315630] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1324112622] Running 2*.basic: 5 2* . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 1325375037] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1326708033] Expected: Should print: 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 1329029478] Running 2*.zero: 0 2* . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1330133301] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1331465058] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1333682847] Running 2*.negative: -3 2* . CR +[Hera] -6 +[Hera] [HADES][TEST ] [KRELTSC: 1334844546] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1336278153] Expected: Should print: -6 +[Hera] -6 +[Hera] -6 +[Hera] -6 +[Hera] -6 +[Hera] -6 +[Hera] [HADES][TEST ] [KRELTSC: 1338596448] Running 2*.one: 1 2* . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1339687482] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1341044838] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1343251812] Running 2*.large: 1073741823 2* . CR +[Hera] 2147483646 +[Hera] [HADES][TEST ] [KRELTSC: 1344500136] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1345854027] Expected: Should print: 2147483646 +[Hera] 2147483646 +[Hera] 2147483646 +[Hera] 2147483646 +[Hera] 2147483646 +[Hera] 2147483646 +[Hera] [HADES][TEST ] [KRELTSC: 1348555215] Running 2*.empty_stack: 2* +[Hera] [HADES][ERROR] [KRELTSC: 1349384778] 2*: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1350184626] Expected error occurred +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1351595175] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1352540931] 2*: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1353451890] ▶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1354511676] Testing word: 2/ +[Hera] [HADES][TEST ] [KRELTSC: 1355214546] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1355983776] Running 2/.basic: 10 2/ . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1357258350] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1358576940] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1360855608] Running 2/.odd: 7 2/ . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1361981418] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1363337787] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1365573069] Running 2/.zero: 0 2/ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1366674624] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1367999220] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1370250798] Running 2/.negative_even: -10 2/ . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 1371442611] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1372779450] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 1375046904] Running 2/.one: 1 2/ . CR +[Hera] [HADES][INFO ] [KRELTSC: 1375908051] L8[TABLE]: Config 25 → 26 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1377351843] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1378710312] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1380943221] Running 2/.empty_stack: 2/ +[Hera] [HADES][ERROR] [KRELTSC: 1381796451] 2/: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1382582250] Expected error occurred +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1383998889] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1384910793] 2/: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1385865411] === Arithmetic Words Summary: 0 passed, 0 failed, 0 skipped, 0 +[Hera] [HADES][INFO ] [KRELTSC: 1386947961] +[Hera] === Testing Module: Logical Words === +[Hera] [HADES][INFO ] [KRELTSC: 1388122365] Running Logical Words Tests (Module 8)... +[Hera] [HADES][TEST ] [KRELTSC: 1389055878] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1390174170] Testing word: AND +[Hera] [HADES][TEST ] [KRELTSC: 1390885419] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1391656644] Running AND.both_true: -1 -1 AND . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1392851460] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1394365140] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1396713570] Running AND.first_false: 0 -1 AND . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1397875563] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1399265070] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1401551088] Running AND.second_false: -1 0 AND . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1402768479] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1404121803] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1406406141] Running AND.both_false: 0 0 AND . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1407594846] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1408937229] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1411170327] Running AND.bitwise: 85 51 AND . CR +[Hera] 17 +[Hera] [HADES][TEST ] [KRELTSC: 1412344710] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1413714771] Expected: Should print: 17 +[Hera] 17 +[Hera] 17 +[Hera] 17 +[Hera] 17 +[Hera] 17 +[Hera] [HADES][TEST ] [KRELTSC: 1416015741] Running AND.empty_stack: AND +[Hera] [HADES][ERROR] [KRELTSC: 1416905553] AND: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1417700718] Expected error occurred +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1419165867] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1420063974] Running AND.one_item: 42 AND +[Hera] [HADES][ERROR] [KRELTSC: 1420931106] AND: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1421677803] Expected error occurred +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1423120860] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1424045595] AND: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1425015942] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1426114872] Testing word: OR +[Hera] [HADES][TEST ] [KRELTSC: 1426809552] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1427663055] Running OR.both_true: -1 -1 OR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1428998046] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1430395071] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1432710363] Running OR.first_false: 0 -1 OR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1433909547] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1435242627] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1437577071] Running OR.second_false: -1 0 OR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1438775163] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1440104379] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][INFO ] [KRELTSC: 1441854939] L8[TABLE]: Config 26 → 27 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1443580761] Running OR.both_false: 0 0 OR . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1444743132] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1446070689] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1448319138] Running OR.bitwise: 85 51 OR . CR +[Hera] 119 +[Hera] [HADES][TEST ] [KRELTSC: 1449482790] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1450941849] Expected: Should print: 119 +[Hera] 119 +[Hera] 119 +[Hera] 119 +[Hera] 119 +[Hera] 119 +[Hera] [HADES][TEST ] [KRELTSC: 1453299813] Running OR.empty_stack: OR +[Hera] [HADES][ERROR] [KRELTSC: 1454162220] OR: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1454953101] Expected error occurred +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1456366233] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1457282274] Running OR.one_item: 42 OR +[Hera] [HADES][ERROR] [KRELTSC: 1458112677] OR: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1458860277] Expected error occurred +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1460325636] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1461247746] OR: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1462182204] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1463311080] Testing word: XOR +[Hera] [HADES][TEST ] [KRELTSC: 1464051015] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1464849477] Running XOR.both_true: -1 -1 XOR . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1466216178] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1467583866] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1469836704] Running XOR.first_false: 0 -1 XOR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1471036287] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1472374281] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1474666494] Running XOR.second_false: -1 0 XOR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1475874561] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1477223559] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1479514911] Running XOR.both_false: 0 0 XOR . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1480706304] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1482089112] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1484300517] Running XOR.bitwise: 85 51 XOR . CR +[Hera] 102 +[Hera] [HADES][TEST ] [KRELTSC: 1485489201] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1486821609] Expected: Should print: 102 +[Hera] 102 +[Hera] 102 +[Hera] 102 +[Hera] 102 +[Hera] 102 +[Hera] [HADES][TEST ] [KRELTSC: 1489123902] Running XOR.empty_stack: XOR +[Hera] [HADES][ERROR] [KRELTSC: 1489981710] XOR: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1490776035] Expected error occurred +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1492234212] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1493147985] Running XOR.one_item: 42 XOR +[Hera] [HADES][ERROR] [KRELTSC: 1493980719] XOR: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1494702573] Expected error occurred +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1496117427] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1497170955] XOR: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1498369971] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1499777433] Testing word: NOT +[Hera] [HADES][TEST ] [KRELTSC: 1500608865] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1501421103] Running NOT.true: -1 NOT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1502787405] Test passed +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1504162107] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1506399552] Running NOT.false: 0 NOT . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1507561818] Test passed +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1508984400] Expected: Should print: -1 +[Hera] [HADES][INFO ] [KRELTSC: 1509905565] L8[TABLE]: Config 27 → 28 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1512510489] Running NOT.positive: 42 NOT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1513683276] Test passed +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1514992899] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1517243994] Running NOT.negative: -42 NOT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1518408654] Test passed +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1519764666] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1522020738] Running NOT.empty_stack: NOT +[Hera] [HADES][ERROR] [KRELTSC: 1522863972] NOT: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1523648679] Expected error occurred +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1525048959] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1525970313] NOT: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1526904813] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1527966930] Testing word: = +[Hera] [HADES][TEST ] [KRELTSC: 1528648464] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1529440395] Running =.equal: 42 42 = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1530598965] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1531914993] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1534217958] Running =.not_equal: 42 43 = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1535368485] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1536697617] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1538937204] Running =.zero_equal: 0 0 = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1540091259] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1541409996] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1543670814] Running =.negative_equal: -42 -42 = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1544897067] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1546233990] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1548493128] Running =.negative_positive: -42 42 = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1549702329] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1551055107] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1553303031] Running =.empty_stack: = +[Hera] [HADES][ERROR] [KRELTSC: 1554085407] =: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1554854658] Expected error occurred +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1556271969] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1557166779] Running =.one_item: 42 = +[Hera] [HADES][ERROR] [KRELTSC: 1557980676] =: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1558697112] Expected error occurred +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1560178389] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1561095375] =: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1562018808] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1563093378] Testing word: <> +[Hera] [HADES][TEST ] [KRELTSC: 1563804417] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1564587864] Running <>.not_equal: 42 43 <> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1566029136] Test passed +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1567382481] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1569667323] Running <>.equal: 42 42 <> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1570890615] Test passed +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1572255762] Expected: Should print: 0 +[Hera] [HADES][INFO ] [KRELTSC: 1573088937] L8[TABLE]: Config 28 → 29 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1575631995] Running <>.zero_equal: 0 0 <> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1576816668] Test passed +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1578153822] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1580386059] Running <>.negative: -42 42 <> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1581556032] Test passed +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1582900137] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1585177860] Running <>.empty_stack: <> +[Hera] [HADES][ERROR] [KRELTSC: 1586002887] <>: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1586737572] Expected error occurred +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1588193061] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1589107401] Running <>.one_item: 42 <> +[Hera] [HADES][ERROR] [KRELTSC: 1589933499] <>: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1590661170] Expected error occurred +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1592130834] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1593028521] <>: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1593971820] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1595059074] Testing word: < +[Hera] [HADES][TEST ] [KRELTSC: 1595760684] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1596527310] Running <.less_than: 5 7 < . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1597836429] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1599166149] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1601464221] Running <.greater_than: 7 5 < . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1602675711] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1604027208] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1606281264] Running <.equal: 5 5 < . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1607390337] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1608733686] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1610979111] Running <.negative_positive: -5 5 < . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1612204251] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1613531199] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1615798842] Running <.negative_negative: -7 -5 < . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1617051933] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1618408953] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1620705429] Running <.empty_stack: < +[Hera] [HADES][ERROR] [KRELTSC: 1621519305] <: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1622260248] Expected error occurred +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1623880104] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1624780689] Running <.one_item: 42 < +[Hera] [HADES][ERROR] [KRELTSC: 1625576001] <: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1626308250] Expected error occurred +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1627789317] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1628737320] <: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1629653613] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1630764975] Testing word: > +[Hera] [HADES][TEST ] [KRELTSC: 1631493297] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1632288189] Running >.greater_than: 7 5 > . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1633582608] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1634714340] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][INFO ] [KRELTSC: 1636003320] L8[TABLE]: Config 29 → 30 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1638006069] Running >.less_than: 5 7 > . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1639275099] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1640649738] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1642878510] Running >.equal: 5 5 > . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1643968515] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1645322112] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1647554643] Running >.positive_negative: 5 -5 > . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1648758552] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1650055701] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1652355642] Running >.negative_negative: -5 -7 > . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1653577737] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1654912266] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1657232388] Running >.empty_stack: > +[Hera] [HADES][ERROR] [KRELTSC: 1658062182] >: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1658795019] Expected error occurred +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1660227387] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1661147733] Running >.one_item: 42 > +[Hera] [HADES][ERROR] [KRELTSC: 1661929332] >: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1662667839] Expected error occurred +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1664089728] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1664999448] >: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1665914271] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1666997871] Testing word: 0= +[Hera] [HADES][TEST ] [KRELTSC: 1667697108] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1668460311] Running 0=.zero: 0 0= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1669684296] Test passed +[Hera] [HADES][TEST ] Testing 0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1670987556] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1673338716] Running 0=.positive: 42 0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1674511041] Test passed +[Hera] [HADES][TEST ] Testing 0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1675886163] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1678140051] Running 0=.negative: -42 0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1679302128] Test passed +[Hera] [HADES][TEST ] Testing 0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1680605556] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1682952978] Running 0=.empty_stack: 0= +[Hera] [HADES][ERROR] [KRELTSC: 1683826515] 0=: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1684583628] Expected error occurred +[Hera] [HADES][TEST ] Testing 0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1686047286] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1686970194] 0=: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1687895790] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1688987706] Testing word: 0< +[Hera] [HADES][TEST ] [KRELTSC: 1689731295] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1690513335] Running 0<.negative: -42 0< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1691821425] Test passed +[Hera] [HADES][TEST ] Testing 0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1693184451] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1695463791] Running 0<.zero: 0 0< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1696648632] Test passed +[Hera] [HADES][TEST ] Testing 0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1698007227] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1700105883] L8[TABLE]: Config 30 → 31 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1701530607] Running 0<.positive: 42 0< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1702694532] Test passed +[Hera] [HADES][TEST ] Testing 0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1704043866] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1706309094] Running 0<.empty_stack: 0< +[Hera] [HADES][ERROR] [KRELTSC: 1707153021] 0<: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1707926619] Expected error occurred +[Hera] [HADES][TEST ] Testing 0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1709375073] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1710306801] 0<: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1711249806] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1712359278] Testing word: 0> +[Hera] [HADES][TEST ] [KRELTSC: 1713085248] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1713856704] Running 0>.positive: 42 0> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1715131929] Test passed +[Hera] [HADES][TEST ] Testing 0> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1716511860] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1718794665] Running 0>.zero: 0 0> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1719935826] Test passed +[Hera] [HADES][TEST ] Testing 0> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1721324640] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1723578255] Running 0>.negative: -42 0> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1724748459] Test passed +[Hera] [HADES][TEST ] Testing 0> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1726111548] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1728356280] Running 0>.empty_stack: 0> +[Hera] [HADES][ERROR] [KRELTSC: 1729226520] 0>: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1729996044] Expected error occurred +[Hera] [HADES][TEST ] Testing 0> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1731452373] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1732384479] 0>: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1733449641] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1734765795] Testing word: 0<> +[Hera] [HADES][TEST ] [KRELTSC: 1735599789] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1736389872] Running 0<>.nonzero_pos: 42 0<> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1737817116] Test passed +[Hera] [HADES][TEST ] Testing 0<> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1739212440] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1741484262] Running 0<>.nonzero_neg: -1 0<> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1742687079] Test passed +[Hera] [HADES][TEST ] Testing 0<> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1744033557] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1746328584] Running 0<>.zero: 0 0<> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1747450488] Test passed +[Hera] [HADES][TEST ] Testing 0<> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1748810448] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1751017002] Running 0<>.empty_stack: 0<> +[Hera] [HADES][ERROR] [KRELTSC: 1751861937] 0<>: stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1752631608] Expected error occurred +[Hera] [HADES][TEST ] Testing 0<> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1754067882] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1754961915] 0<>: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1755866889] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1756952085] Testing word: U< +[Hera] [HADES][TEST ] [KRELTSC: 1757640969] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1758404193] Running U<.less: 3 5 U< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1759654344] Test passed +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1761004329] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1763312901] Running U<.equal: 5 5 U< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1764475419] Test passed +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1765843023] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1768113648] Running U<.greater: 7 5 U< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1769268375] Test passed +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1770580665] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1772347584] L8[TABLE]: Config 31 → 32 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1774039743] Running U<.zero_one: 0 1 U< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1775226852] Test passed +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1776584880] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1778903595] Running U<.empty_stack: U< +[Hera] [HADES][ERROR] [KRELTSC: 1779792168] U<: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1780547727] Expected error occurred +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1782002565] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1782919152] U<: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1783883871] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1784972721] Testing word: U> +[Hera] [HADES][TEST ] [KRELTSC: 1785699552] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1786496586] Running U>.greater: 5 3 U> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1787787771] Test passed +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1789141347] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1791461763] Running U>.equal: 5 5 U> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1792656579] Test passed +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1794046527] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1796373306] Running U>.less: 3 5 U> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1797509175] Test passed +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1798880034] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1801191000] Running U>.one_zero: 1 0 U> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1802354148] Test passed +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1803738090] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1806070980] Running U>.empty_stack: U> +[Hera] [HADES][ERROR] [KRELTSC: 1806935697] U>: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1807699236] Expected error occurred +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1809142335] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1810073076] U>: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1811019378] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1812102390] Testing word: WITHIN +[Hera] [HADES][TEST ] [KRELTSC: 1812886971] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1813681590] Running WITHIN.in_range: 3 1 5 WITHIN . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1815065700] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1816470516] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1818873210] Running WITHIN.at_low: 1 1 5 WITHIN . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1820108682] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1821516942] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1823841936] Running WITHIN.at_high: 5 1 5 WITHIN . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1825146456] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1826543124] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1828287678] L8[TABLE]: Config 32 → 33 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1830030951] Running WITHIN.below: 0 1 5 WITHIN . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1831239984] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1832636715] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1834923846] Running WITHIN.above: 6 1 5 WITHIN . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1836168159] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1837541895] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1839856347] Running WITHIN.empty_stack: WITHIN +[Hera] [HADES][ERROR] [KRELTSC: 1840769553] WITHIN: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1841569569] Expected error occurred +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1843058742] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1843997421] WITHIN: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1844961594] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1846045446] Testing word: TRUE +[Hera] [HADES][TEST ] [KRELTSC: 1846806801] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1847569122] Running TRUE.value: TRUE . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1848767172] Test passed +[Hera] [HADES][TEST ] Testing TRUE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1850094834] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1852382679] Running TRUE.as_flag: TRUE 0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1853600154] Test passed +[Hera] [HADES][TEST ] Testing TRUE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1854940626] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1857193233] Running TRUE.in_and: TRUE TRUE AND . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1858415370] Test passed +[Hera] [HADES][TEST ] Testing TRUE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1859752482] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1862092470] TRUE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1863015378] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1864120902] Testing word: FALSE +[Hera] [HADES][TEST ] [KRELTSC: 1864850694] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1865645817] Running FALSE.value: FALSE . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1866843069] Test passed +[Hera] [HADES][TEST ] Testing FALSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1868252820] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1870521114] Running FALSE.as_flag: FALSE 0= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1871718870] Test passed +[Hera] [HADES][TEST ] Testing FALSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1873113648] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1875452481] Running FALSE.in_or: TRUE FALSE OR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1876706580] Test passed +[Hera] [HADES][TEST ] Testing FALSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1878103458] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1880476290] FALSE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1881451110] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1882558524] Testing word: >= +[Hera] [HADES][TEST ] [KRELTSC: 1883296065] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1884083880] Running >=.less: 3 5 >= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1885357971] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1886763732] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1888794369] L8[TABLE]: Config 33 → 34 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1890207732] Running >=.greater: 5 3 >= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1891418739] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1892771244] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1895094873] Running >=.equal: 3 3 >= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1896209637] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1897580139] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1899889761] Running >=.negative: -1 0 >= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1901083464] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1902477486] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1904754537] Running >=.neg_neg: -1 -2 >= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1905949647] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1907296314] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1909611921] Running >=.underflow: >= +[Hera] [HADES][ERROR] [KRELTSC: 1910428758] >=: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1911219933] Expected error occurred +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1912656081] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1913593920] >=: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1914542406] ▶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1915627455] Testing word: <= +[Hera] [HADES][TEST ] [KRELTSC: 1916353866] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1917148716] Running <=.less: 3 5 <= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1918415646] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1919786379] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1922064522] Running <=.greater: 5 3 <= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1923270195] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1924587189] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1926841560] Running <=.equal: 3 3 <= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1927978542] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1929346461] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1931652765] Running <=.negative: -1 0 <= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1932817194] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1934187171] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1936961313] Running <=.neg_neg: -2 -1 <= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1938423669] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1939782432] Expected: Should print: -1 +[Hera] -1 +[Hera] [HADES][INFO ] [KRELTSC: 1940999508] L8[TABLE]: Config 34 → 35 regime=2 score=52428 L1=0 L2=1 L3=0 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1943350878] Running <=.underflow: <= +[Hera] [HADES][ERROR] [KRELTSC: 1944212466] <=: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1945004145] Expected error occurred +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1946429184] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1947375444] <=: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1948342347] === Logical Words Summary: 0 passed, 0 failed, 0 skipped, 0 err +[Hera] [HADES][INFO ] [KRELTSC: 1949438211] +[Hera] === Testing Module: Mixed Arithmetic Words === +[Hera] [HADES][INFO ] [KRELTSC: 1950661944] Running Mixed Arithmetic Words Tests (Module 7)... +[Hera] [HADES][TEST ] [KRELTSC: 1951703691] ▶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 1952832042] Testing word: */ +[Hera] [HADES][TEST ] [KRELTSC: 1953565404] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1954407777] Running */.basic: 6 7 4 */ . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 1955758917] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1957088616] Expected: Should print: 10 (6*7/4) +[Hera] [HADES][TEST ] [KRELTSC: 1958035380] Running */.exact_division: 12 5 3 */ . CR +[Hera] 20 +[Hera] [HADES][TEST ] [KRELTSC: 1959273309] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1960684740] Expected: Should print: 20 (12*5/3) +[Hera] [HADES][TEST ] [KRELTSC: 1961574552] Running */.zero_multiply: 0 999 123 */ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1962868614] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1964249721] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 1965064395] Running */.by_one: 42 5 1 */ . CR +[Hera] 210 +[Hera] [HADES][TEST ] [KRELTSC: 1966300917] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1967662032] Expected: Should print: 210 (42*5/1) +[Hera] [HADES][TEST ] [KRELTSC: 1968591534] Running */.truncation: 7 3 2 */ . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 1970201646] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1971837441] Expected: Should print: 10 (21/2 truncated) +[Hera] [HADES][TEST ] [KRELTSC: 1972794894] Running */.negative_multiply: -6 7 4 */ . CR +[Hera] -10 +[Hera] [HADES][TEST ] [KRELTSC: 1974149373] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1975539468] Expected: Should print: -10 +[Hera] [HADES][TEST ] [KRELTSC: 1976410254] Running */.negative_divisor: 6 7 -4 */ . CR +[Hera] -10 +[Hera] [HADES][TEST ] [KRELTSC: 1977742158] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1979125449] Expected: Should print: -10 +[Hera] [HADES][TEST ] [KRELTSC: 1979970720] Running */.div_by_zero: 6 7 0 */ +[Hera] [HADES][ERROR] [KRELTSC: 1980978006] */: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1981755552] Expected error occurred +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1983208206] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1984147914] Running */.empty_stack: */ +[Hera] [HADES][ERROR] [KRELTSC: 1985034324] */: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1985789442] Expected error occurred +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1987287036] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1988239281] Running */.two_items: 1 2 */ +[Hera] [HADES][ERROR] [KRELTSC: 1989136779] */: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1989891435] Expected error occurred +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1991385711] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1992387243] */: 10 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1993440309] ▶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 1994522439] Testing word: */MOD +[Hera] [HADES][TEST ] [KRELTSC: 1995272748] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1996068921] Running */MOD.basic: 17 3 5 */MOD . . CR +[Hera] 10 1 +[Hera] [HADES][TEST ] [KRELTSC: 1997522772] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1998908121] Expected: Should print: 1 10 (51/5 = 10 rem 1) +[Hera] [HADES][TEST ] [KRELTSC: 1999915596] Running */MOD.exact_division: 15 4 3 */MOD . . CR +[Hera] 20 0 +[Hera] [HADES][TEST ] [KRELTSC: 2001278055] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2002669704] Expected: Should print: 0 20 (60/3 = 20 rem 0) +[Hera] [HADES][TEST ] [KRELTSC: 2003666637] Running */MOD.zero_multiply: 0 999 123 */MOD . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2005038189] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2006409909] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2007265911] Running */MOD.by_one: 42 5 1 */MOD . . CR +[Hera] 210 0 +[Hera] [HADES][TEST ] [KRELTSC: 2008585341] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2009983584] Expected: Should print: 0 210 +[Hera] [HADES][TEST ] [KRELTSC: 2010846747] Running */MOD.remainder: 7 8 5 */MOD . . CR +[Hera] 11 1 +[Hera] [HADES][TEST ] [KRELTSC: 2012180814] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2013572274] Expected: Should print: 1 11 (56/5 = 11 rem 1) +[Hera] [HADES][TEST ] [KRELTSC: 2014562130] Running */MOD.negative: -7 3 4 */MOD . . CR +[Hera] -5 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2015899662] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2017262394] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 2018127027] Running */MOD.div_by_zero: 6 7 0 */MOD +[Hera] [HADES][ERROR] [KRELTSC: 2019124947] */MOD: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 2019915807] Expected error occurred +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2021406324] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 2022344100] Running */MOD.empty_stack: */MOD +[Hera] [HADES][ERROR] [KRELTSC: 2023286412] */MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2024071392] Expected error occurred +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2025537549] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2026578477] */MOD: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2027535783] ▶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 2028644499] Testing word: M+ +[Hera] [HADES][TEST ] [KRELTSC: 2029386660] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2030192115] Running M+.basic: 0 100 200 M+ . . CR +[Hera] 300 0 +[Hera] [HADES][TEST ] [KRELTSC: 2031629649] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2033002020] Expected: Should print: 200 100 +[Hera] [HADES][TEST ] [KRELTSC: 2033896410] Running M+.overflow: 0 2147483647 1 M+ . . CR +[Hera] 2147483648 0 +[Hera] [HADES][TEST ] [KRELTSC: 2035289109] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2036645709] Expected: Should handle overflow +[Hera] [HADES][TEST ] [KRELTSC: 2037554736] Running M+.negative: 0 -100 50 M+ . . CR +[Hera] -50 0 +[Hera] [HADES][TEST ] [KRELTSC: 2038844997] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2040212496] Expected: Should print: 50 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2041094601] Running M+.zero_add: 0 42 0 M+ . . CR +[Hera] 42 0 +[Hera] [HADES][TEST ] [KRELTSC: 2042331921] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2043724830] Expected: Should print: 0 42 +[Hera] [HADES][TEST ] [KRELTSC: 2044587636] Running M+.both_negative: 0 -100 -200 M+ . . CR +[Hera] -300 0 +[Hera] [HADES][TEST ] [KRELTSC: 2045960574] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2047317510] Expected: Should print: -200 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2048192202] Running M+.empty_stack: M+ +[Hera] [HADES][TEST ] [KRELTSC: 2049072018] Expected error occurred +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2050555983] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2051483616] Running M+.one_item: 42 M+ +[Hera] [HADES][TEST ] [KRELTSC: 2052334977] Expected error occurred +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2053781541] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2054730678] M+: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2055672003] ▶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 2056779480] Testing word: M* +[Hera] [HADES][TEST ] [KRELTSC: 2057497512] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2058281820] Running M*.basic: 123 456 M* . . CR +[Hera] 0 56088 +[Hera] [HADES][TEST ] [KRELTSC: 2059611981] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2060944053] Expected: Should print: 56088 0 +[Hera] [HADES][TEST ] [KRELTSC: 2061807447] Running M*.by_zero: 999 0 M* . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2063014128] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2064370266] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2065207200] Running M*.by_one: 42 1 M* . . CR +[Hera] 0 42 +[Hera] [HADES][TEST ] [KRELTSC: 2066417388] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2067790263] Expected: Should print: 42 0 +[Hera] [HADES][TEST ] [KRELTSC: 2068658214] Running M*.negative: -123 456 M* . . CR +[Hera] -1 -56088 +[Hera] [HADES][TEST ] [KRELTSC: 2069957001] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2071342686] Expected: Should print: -56088 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2072203329] Running M*.large_multiply: 65536 65536 M* . . CR +[Hera] 0 4294967296 +[Hera] [HADES][TEST ] [KRELTSC: 2073630846] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2075011953] Expected: Should handle large result +[Hera] [HADES][TEST ] [KRELTSC: 2075928561] Running M*.both_negative: -100 -200 M* . . CR +[Hera] 0 20000 +[Hera] [HADES][TEST ] [KRELTSC: 2077264665] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2078626326] Expected: Should print: 20000 0 +[Hera] [HADES][TEST ] [KRELTSC: 2079514941] Running M*.empty_stack: M* +[Hera] [HADES][TEST ] [KRELTSC: 2080366386] Expected error occurred +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2081815575] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2082727647] Running M*.one_item: 42 M* +[Hera] [HADES][TEST ] [KRELTSC: 2083581717] Expected error occurred +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2085069252] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2086001757] M*: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2086943586] ▶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 2088064818] Testing word: M/MOD +[Hera] [HADES][TEST ] [KRELTSC: 2088825774] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2089616613] Running M/MOD.basic: 0 1000 100 M/MOD . . CR +[Hera] 10 0 +[Hera] [HADES][TEST ] [KRELTSC: 2091257826] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2092646703] Expected: Should print: 0 10 (1000/100) +[Hera] [HADES][TEST ] [KRELTSC: 2093581623] Running M/MOD.with_remainder: 0 1234 100 M/MOD . . CR +[Hera] 12 34 +[Hera] [HADES][TEST ] [KRELTSC: 2094966006] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2096341716] Expected: Should handle remainder +[Hera] [HADES][TEST ] [KRELTSC: 2097245745] Running M/MOD.double_dividend: 5001 0 10 M/MOD . . CR +[Hera] 1844674407370955161 6 +[Hera] [HADES][TEST ] [KRELTSC: 2098749177] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2100154203] Expected: Should print: 1 500 (5001/10) +[Hera] [HADES][TEST ] [KRELTSC: 2101104453] Running M/MOD.by_one: 0 42 1 M/MOD . . CR +[Hera] 42 0 +[Hera] [HADES][TEST ] [KRELTSC: 2102399796] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2103805977] Expected: Should print: 0 42 +[Hera] [HADES][TEST ] [KRELTSC: 2104673697] Running M/MOD.negative_dividend: -1 1000 100 M/MOD . . CR +[Hera] -184467440737095506 -16 +[Hera] [HADES][TEST ] [KRELTSC: 2106344331] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2107837767] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 2108714790] Running M/MOD.div_by_zero: 0 100 0 M/MOD +[Hera] [HADES][TEST ] [KRELTSC: 2109739653] Expected error occurred +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2111214147] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 2112134283] Running M/MOD.empty_stack: M/MOD +[Hera] [HADES][TEST ] [KRELTSC: 2113047510] Expected error occurred +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2114507031] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2115459276] M/MOD: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2116440333] === Mixed Arithmetic Words Summary: 0 passed, 0 failed, 0 skipp +[Hera] [HADES][INFO ] [KRELTSC: 2117521497] +[Hera] === Testing Module: Double Words === +[Hera] [HADES][INFO ] [KRELTSC: 2118670155] Running Double Number Words Tests (Module 6)... +[Hera] [HADES][TEST ] [KRELTSC: 2119716900] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2120824734] Testing word: 2DROP +[Hera] [HADES][TEST ] [KRELTSC: 2121583905] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2122365210] Running 2DROP.basic: 1 2 3 4 2DROP . . CR +[Hera] 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 2123709063] Test passed +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2125059069] Expected: Should print: 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 2125893021] Running 2DROP.zeros: 0 0 42 99 2DROP . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2127150816] Test passed +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2128515963] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2129349369] Running 2DROP.negative: -1 -2 100 200 2DROP . . CR +[Hera] -2 -1 +[Hera] [HADES][INFO ] [KRELTSC: 2143831725] L8[TABLE]: Config 35 → 36 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 2144756166] Test passed +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2145928869] Expected: Should print: -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 2146666284] Running 2DROP.exact_four: 10 20 30 40 2DROP DEPTH . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 2147772816] Test passed +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2148787095] Expected: Should print: 2 +[Hera] [HADES][TEST ] [KRELTSC: 2149636335] Running 2DROP.empty_stack: 2DROP +[Hera] [HADES][TEST ] [KRELTSC: 2150529717] Expected error occurred +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2152172925] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2153196969] Running 2DROP.one_item: 42 2DROP +[Hera] [HADES][TEST ] [KRELTSC: 2154180651] Expected error occurred +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2155743807] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2156793996] 2DROP: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2157894123] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2159066343] Testing word: 2DUP +[Hera] [HADES][TEST ] [KRELTSC: 2159808483] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2160587688] Running 2DUP.basic: 100 200 2DUP . . . . CR +[Hera] 200 100 200 100 +[Hera] [HADES][TEST ] [KRELTSC: 2162095698] Test passed +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2163495642] Expected: Should print: 100 200 100 200 +[Hera] [HADES][TEST ] [KRELTSC: 2164429743] Running 2DUP.zeros: 0 0 2DUP . . . . CR +[Hera] 0 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2165752827] Test passed +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2167152414] Expected: Should print: 0 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2168020344] Running 2DUP.negative: -100 -200 2DUP . . . . CR +[Hera] -200 -100 -200 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2169502692] Test passed +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2170880229] Expected: Should duplicate negatives +[Hera] [HADES][TEST ] [KRELTSC: 2171822121] Running 2DUP.depth_check: 10 20 2DUP DEPTH . CR +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 2173104759] Test passed +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2174509659] Expected: Should print: 4 +[Hera] [HADES][TEST ] [KRELTSC: 2175284517] Running 2DUP.empty_stack: 2DUP +[Hera] [HADES][TEST ] [KRELTSC: 2176213431] Expected error occurred +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2177692503] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2178609531] Running 2DUP.one_item: 42 2DUP +[Hera] [HADES][TEST ] [KRELTSC: 2179473975] Expected error occurred +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2180941770] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2181875997] 2DUP: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2182807914] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2183904786] Testing word: 2OVER +[Hera] [HADES][TEST ] [KRELTSC: 2184648753] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2185445892] Running 2OVER.basic: 10 20 30 40 2OVER . . . . . . CR +[Hera] 20 10 40 30 20 10 +[Hera] [HADES][TEST ] [KRELTSC: 2187026688] Test passed +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2188404057] Expected: Should print: 10 20 30 40 10 20 +[Hera] [HADES][TEST ] [KRELTSC: 2189363442] Running 2OVER.zeros: 0 0 99 88 2OVER . . . . . . CR +[Hera] 0 0 88 99 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2190802383] Test passed +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2192179122] Expected: Should print: 0 0 99 88 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2193117633] Running 2OVER.mixed: -1 2 -3 4 2OVER . . . . . . CR +[Hera] 2 -1 4 -3 2 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2194584336] Test passed +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2195975796] Expected: Should handle mixed signs +[Hera] [HADES][TEST ] [KRELTSC: 2196898158] Running 2OVER.depth_check: 1 2 3 4 2OVER DEPTH . CR +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 2198236929] Test passed +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2199630804] Expected: Should print: 6 +[Hera] [HADES][TEST ] [KRELTSC: 2200433949] Running 2OVER.three_items: 1 2 3 2OVER +[Hera] [HADES][TEST ] [KRELTSC: 2201434368] Expected error occurred +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2202952479] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2203906404] Running 2OVER.empty_stack: 2OVER +[Hera] [HADES][TEST ] [KRELTSC: 2204791659] Expected error occurred +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2206590246] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2207706480] 2OVER: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2208673761] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2209780608] Testing word: 2SWAP +[Hera] [HADES][TEST ] [KRELTSC: 2210535978] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2211334839] Running 2SWAP.basic: 10 20 30 40 2SWAP . . . . CR +[Hera] 20 10 40 30 +[Hera] [HADES][TEST ] [KRELTSC: 2213006208] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2214408399] Expected: Should print: 30 40 10 20 +[Hera] [HADES][TEST ] [KRELTSC: 2215341198] Running 2SWAP.zeros: 0 0 99 88 2SWAP . . . . CR +[Hera] 0 0 88 99 +[Hera] [HADES][TEST ] [KRELTSC: 2216692128] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2218098582] Expected: Should print: 99 88 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2218993791] Running 2SWAP.same_pairs: 42 42 42 42 2SWAP . . . . CR +[Hera] 42 42 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 2220457071] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2221848237] Expected: Should print: 42 42 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 2222775030] Running 2SWAP.negative: -10 -20 30 40 2SWAP . . . . CR +[Hera] -20 -10 40 30 +[Hera] [HADES][TEST ] [KRELTSC: 2224247991] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2225624793] Expected: Should print: 30 40 -10 -20 +[Hera] [HADES][TEST ] [KRELTSC: 2226569898] Running 2SWAP.depth_check: 1 2 3 4 2SWAP DEPTH . CR +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 2227912890] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2229293703] Expected: Should print: 4 +[Hera] [HADES][TEST ] [KRELTSC: 2230128516] Running 2SWAP.three_items: 1 2 3 2SWAP +[Hera] [HADES][TEST ] [KRELTSC: 2231098422] Expected error occurred +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2232609120] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2233563318] Running 2SWAP.empty_stack: 2SWAP +[Hera] [HADES][TEST ] [KRELTSC: 2234446515] Expected error occurred +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2235918573] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2236842195] 2SWAP: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2237796540] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2238927495] Testing word: 2ROT +[Hera] [HADES][TEST ] [KRELTSC: 2239662201] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2240459718] Running 2ROT.basic: 10 20 30 40 50 60 2ROT . . . . . . CR +[Hera] 20 10 60 50 40 30 +[Hera] [HADES][TEST ] [KRELTSC: 2242199274] Test passed +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2243613120] Expected: Should print: 30 40 50 60 10 20 +[Hera] [HADES][TEST ] [KRELTSC: 2244573009] Running 2ROT.zeros: 0 0 1 1 2 2 2ROT . . . . . . CR +[Hera] 0 0 2 2 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 2246035680] Test passed +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2247422415] Expected: Should rotate with zeros +[Hera] [HADES][TEST ] [KRELTSC: 2248322307] Running 2ROT.negative: -1 -2 3 4 -5 -6 2ROT . . . . . . CR +[Hera] -2 -1 -6 -5 4 3 +[Hera] [HADES][TEST ] [KRELTSC: 2249863728] Test passed +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2251255062] Expected: Should handle negatives +[Hera] [HADES][TEST ] [KRELTSC: 2252152812] Running 2ROT.depth_check: 1 2 3 4 5 6 2ROT DEPTH . CR +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 2253510126] Test passed +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2254886928] Expected: Should print: 6 +[Hera] [HADES][TEST ] [KRELTSC: 2255733144] Running 2ROT.five_items: 1 2 3 4 5 2ROT +[Hera] [HADES][TEST ] [KRELTSC: 2256776004] Expected error occurred +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2258272758] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2259190500] Running 2ROT.empty_stack: 2ROT +[Hera] [HADES][TEST ] [KRELTSC: 2260071282] Expected error occurred +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2261523348] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2262478323] 2ROT: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2263436385] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2264558142] Testing word: D+ +[Hera] [HADES][TEST ] [KRELTSC: 2265279198] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2266085115] Running D+.basic: 100 200 300 400 D+ . . CR +[Hera] 600 400 +[Hera] [HADES][TEST ] [KRELTSC: 2267552679] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2268937104] Expected: Should print: 400 600 +[Hera] [HADES][TEST ] [KRELTSC: 2269834434] Running D+.zero_add: 42 99 0 0 D+ . . CR +[Hera] 99 42 +[Hera] [HADES][TEST ] [KRELTSC: 2271107769] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2272501854] Expected: Should print: 42 99 +[Hera] [HADES][TEST ] [KRELTSC: 2273345382] Running D+.negative: -100 -200 50 75 D+ . . CR +[Hera] -125 -50 +[Hera] [HADES][TEST ] [KRELTSC: 2274712881] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2276086575] Expected: Should handle negatives +[Hera] [HADES][TEST ] [KRELTSC: 2276984325] Running D+.carry: 2147483647 0 1 0 D+ . . CR +[Hera] 0 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 2278339098] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2279714115] Expected: Should handle carry +[Hera] [HADES][TEST ] [KRELTSC: 2280588009] Running D+.both_negative: -100 -200 -300 -400 D+ . . CR +[Hera] -599 -400 +[Hera] [HADES][TEST ] [KRELTSC: 2282025543] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2283395037] Expected: Should add negatives +[Hera] [HADES][TEST ] [KRELTSC: 2284270023] Running D+.three_items: 1 2 3 D+ +[Hera] [HADES][TEST ] [KRELTSC: 2285180625] Expected error occurred +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2286649827] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2287559064] Running D+.empty_stack: D+ +[Hera] [HADES][TEST ] [KRELTSC: 2288375355] Expected error occurred +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2289664986] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2290442952] D+: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2291212497] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2292262077] Testing word: D- +[Hera] [HADES][TEST ] [KRELTSC: 2293034814] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2293879518] Running D-.basic: 500 600 100 200 D- . . CR +[Hera] 400 [HADES][INFO ] [KRELTSC: 2295415143] L8[TABLE]: Config 36 → 37 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] 400 +[Hera] [HADES][TEST ] [KRELTSC: 2296659624] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2298039891] Expected: Should print: 400 400 +[Hera] [HADES][TEST ] [KRELTSC: 2298909816] Running D-.zero_sub: 42 99 0 0 D- . . CR +[Hera] 99 42 +[Hera] [HADES][TEST ] [KRELTSC: 2300208939] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2301603150] Expected: Should print: 42 99 +[Hera] [HADES][TEST ] [KRELTSC: 2302467342] Running D-.from_zero: 0 0 100 200 D- . . CR +[Hera] -201 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2303815164] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2305163343] Expected: Should print: -100 -200 +[Hera] [HADES][TEST ] [KRELTSC: 2306086293] Running D-.negative: 100 200 -50 -75 D- . . CR +[Hera] 274 150 +[Hera] [HADES][TEST ] [KRELTSC: 2307435690] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2308820598] Expected: Should handle negatives +[Hera] [HADES][TEST ] [KRELTSC: 2309702913] Running D-.borrow: 0 0 1 0 D- . . CR +[Hera] -1 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2310967071] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2312307816] Expected: Should handle borrow +[Hera] [HADES][TEST ] [KRELTSC: 2313153927] Running D-.same_values: 100 200 100 200 D- . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2314529154] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2315927040] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2316769035] Running D-.three_items: 1 2 3 D- +[Hera] [HADES][TEST ] [KRELTSC: 2318180319] Expected error occurred +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2319642024] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2320597629] Running D-.empty_stack: D- +[Hera] [HADES][TEST ] [KRELTSC: 2321478810] Expected error occurred +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2322924639] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2323856955] D-: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2324803551] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2325882930] Testing word: DNEGATE +[Hera] [HADES][TEST ] [KRELTSC: 2326637355] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2327410890] Running DNEGATE.positive: 100 200 DNEGATE . . CR +[Hera] -201 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2328977826] Test passed +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2330403621] Expected: Should negate positive double +[Hera] [HADES][TEST ] [KRELTSC: 2331348264] Running DNEGATE.negative: -100 -200 DNEGATE . . CR +[Hera] 199 100 +[Hera] [HADES][TEST ] [KRELTSC: 2332732794] Test passed +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2334155628] Expected: Should negate negative double +[Hera] [HADES][TEST ] [KRELTSC: 2335102203] Running DNEGATE.zero: 0 0 DNEGATE . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2336352186] Test passed +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2337761118] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2338586229] Running DNEGATE.max_positive: 2147483647 0 DNEGATE . . CR +[Hera] -1 -2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 2340130506] Test passed +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2341530051] Expected: Should negate max positive +[Hera] [HADES][TEST ] [KRELTSC: 2342449704] Running DNEGATE.one_item: 42 DNEGATE +[Hera] [HADES][TEST ] [KRELTSC: 2343392562] Expected error occurred +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2344889988] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2345848890] Running DNEGATE.empty_stack: DNEGATE +[Hera] [HADES][TEST ] [KRELTSC: 2346767388] Expected error occurred +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2348280018] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2349235329] DNEGATE: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2350243728] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2351350218] Testing word: DABS +[Hera] [HADES][TEST ] [KRELTSC: 2352097461] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2352889707] Running DABS.positive: 100 200 DABS . . CR +[Hera] 200 100 +[Hera] [HADES][TEST ] [KRELTSC: 2354264220] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2355633399] Expected: Should print: 100 200 +[Hera] [HADES][TEST ] [KRELTSC: 2356515987] Running DABS.negative: -100 -200 DABS . . CR +[Hera] 199 100 +[Hera] [HADES][TEST ] [KRELTSC: 2357878551] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2359253673] Expected: Should print: 100 200 +[Hera] [HADES][TEST ] [KRELTSC: 2360102892] Running DABS.zero: 0 0 DABS . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2361300060] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2362671717] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2363528097] Running DABS.mixed_sign: 100 -1 DABS . . CR +[Hera] 0 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2364836754] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2366262318] Expected: Should handle mixed sign +[Hera] [HADES][TEST ] [KRELTSC: 2367134007] Running DABS.min_double: -2147483648 -1 DABS . . CR +[Hera] 0 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 2368545711] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2369900967] Expected: Should handle min double +[Hera] [HADES][TEST ] [KRELTSC: 2370792480] Running DABS.one_item: 42 DABS +[Hera] [HADES][TEST ] [KRELTSC: 2371736052] Expected error occurred +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2373208068] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2374161636] Running DABS.empty_stack: DABS +[Hera] [HADES][TEST ] [KRELTSC: 2375060877] Expected error occurred +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2376507231] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2377445385] DABS: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2378392065] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2379477345] Testing word: DMIN +[Hera] [HADES][TEST ] [KRELTSC: 2380221228] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2381031786] Running DMIN.basic: 100 200 300 400 DMIN . . CR +[Hera] 200 100 +[Hera] [HADES][TEST ] [KRELTSC: 2382504705] Test passed +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2383906518] Expected: Should print: 100 200 +[Hera] [HADES][TEST ] [KRELTSC: 2384773692] Running DMIN.equal: 42 99 42 99 DMIN . . CR +[Hera] 99 42 +[Hera] [HADES][TEST ] [KRELTSC: 2386148982] Test passed +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2387511252] Expected: Should print: 42 99 +[Hera] [HADES][TEST ] [KRELTSC: 2388373680] Running DMIN.negative: -100 -200 -50 -75 DMIN . . CR +[Hera] -200 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2389791369] Test passed +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2391158427] Expected: Should find min negative +[Hera] [HADES][TEST ] [KRELTSC: 2392082406] Running DMIN.mixed: -100 -1 100 0 DMIN . . CR +[Hera] -1 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2393405448] Test passed +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2394777378] Expected: Should handle mixed signs +[Hera] [HADES][TEST ] [KRELTSC: 2395716876] Running DMIN.three_items: 1 2 3 DMIN +[Hera] [HADES][TEST ] [KRELTSC: 2396678571] Expected error occurred +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2398167639] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2399091219] Running DMIN.empty_stack: DMIN +[Hera] [HADES][TEST ] [KRELTSC: 2399965512] Expected error occurred +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2401395255] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2402325219] DMIN: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2403262638] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2404356864] Testing word: DMAX +[Hera] [HADES][TEST ] [KRELTSC: 2405091003] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2405895072] Running DMAX.basic: 100 200 300 400 DMAX . . CR +[Hera] 400 300 +[Hera] [HADES][TEST ] [KRELTSC: 2407450983] Test passed +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2408849415] Expected: Should print: 300 400 +[Hera] [HADES][TEST ] [KRELTSC: 2409734544] Running DMAX.equal: 42 99 42 99 DMAX . . CR +[Hera] 99 42 +[Hera] [HADES][TEST ] [KRELTSC: 2411122140] Test passed +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2412486951] Expected: Should print: 42 99 +[Hera] [HADES][TEST ] [KRELTSC: 2413354461] Running DMAX.negative: -300 -400 -100 -200 DMAX . . CR +[Hera] -200 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2414802894] Test passed +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2416186605] Expected: Should find max negative +[Hera] [HADES][TEST ] [KRELTSC: 2417096367] Running DMAX.mixed: -100 -1 100 0 DMAX . . CR +[Hera] 0 100 +[Hera] [HADES][TEST ] [KRELTSC: 2418400971] Test passed +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2419764858] Expected: Should handle mixed signs +[Hera] [HADES][TEST ] [KRELTSC: 2420692428] Running DMAX.three_items: 1 2 3 DMAX +[Hera] [HADES][TEST ] [KRELTSC: 2421627642] Expected error occurred +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2423104845] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2424043104] Running DMAX.empty_stack: DMAX +[Hera] [HADES][TEST ] [KRELTSC: 2424916935] Expected error occurred +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2426360643] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2427292770] DMAX: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2428248459] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2429376558] Testing word: D= +[Hera] [HADES][TEST ] [KRELTSC: 2430116472] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2430913989] Running D=.equal: 100 200 100 200 D= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2432302845] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2433673242] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2434486761] Running D=.not_equal_low: 100 200 101 200 D= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2435820387] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2437172409] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2438003190] Running D=.not_equal_high: 100 200 100 201 D= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2439295992] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2440667628] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2441656917] Running D=.zero_equal: 0 0 0 0 D= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2443270200] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2444661660] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2445510984] Running D=.negative_equal: -100 -200 -100 -200 D= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2446875753] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2448253584] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2449083126] Running D=.three_items: 1 2 3 D= +[Hera] [HADES][TEST ] [KRELTSC: 2450065548] Expected error occurred +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2451473178] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2452392012] Running D=.empty_stack: D= +[Hera] [HADES][TEST ] [KRELTSC: 2453187576] Expected error occurred +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2454643779] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2455544112] D=: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2456469834] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2457529221] Testing word: D< +[Hera] [HADES][TEST ] [KRELTSC: 2458235514] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2459017281] Running D<.less_than: 100 200 300 400 D< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2460415797] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2461778949] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2462592405] Running D<.greater_than: 300 400 100 200 D< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2463919206] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2465245608] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2466052533] Running D<.equal: 100 200 100 200 D< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2467335129] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2468621946] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2469422655] Running D<.negative_positive: -100 -1 100 0 D< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2470700085] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2471997801] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2472801618] Running D<.negative_negative: -300 -1 -100 -1 D< . CR +[Hera] -1 +[Hera] [HADES][INFO ] [KRELTSC: 2474220168] L8[TABLE]: Config 37 → 38 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 2475368448] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2476710810] Expected: Should compare negatives +[Hera] [HADES][TEST ] [KRELTSC: 2477595582] Running D<.high_word_diff: 100 200 100 300 D< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2478888909] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2480251746] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2481095988] Running D<.three_items: 1 2 3 D< +[Hera] [HADES][TEST ] [KRELTSC: 2482018539] Expected error occurred +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2483461743] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2484385260] Running D<.empty_stack: D< +[Hera] [HADES][TEST ] [KRELTSC: 2485218414] Expected error occurred +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2486700741] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2487764643] D<: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2488701642] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2489809161] Testing word: D0= +[Hera] [HADES][TEST ] [KRELTSC: 2490545253] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2491341174] Running D0=.zero: 0 0 D0= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2492610309] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2494005171] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2494849581] Running D0=.positive: 100 200 D0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2496074700] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2497441023] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2498253996] Running D0=.negative: -100 -200 D0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2499489762] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2500918182] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2501743230] Running D0=.zero_high: 0 100 D0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2502965367] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2504333748] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2505175344] Running D0=.zero_low: 100 0 D0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2506391664] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2507773653] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2508616677] Running D0=.one_item: 42 D0= +[Hera] [HADES][TEST ] [KRELTSC: 2509510731] Expected error occurred +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2510977371] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2511901665] Running D0=.empty_stack: D0= +[Hera] [HADES][TEST ] [KRELTSC: 2512736142] Expected error occurred +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2514195285] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2515146249] D0=: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2516085369] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2517199209] Testing word: D0< +[Hera] [HADES][TEST ] [KRELTSC: 2517919971] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2518713813] Running D0<.negative: -100 -1 D0< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2520045444] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2521417983] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2522239146] Running D0<.zero: 0 0 D0< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2523392886] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2524753287] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2525608785] Running D0<.positive: 100 0 D0< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2526826239] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2528196216] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2529045204] Running D0<.negative_high_only: 100 -1 D0< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2530347855] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2531713590] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2532559197] Running D0<.large_negative: -1 -1 D0< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2533816656] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2535208431] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2536061283] Running D0<.one_item: 42 D0< +[Hera] [HADES][TEST ] [KRELTSC: 2536948806] Expected error occurred +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2538426681] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2539370568] Running D0<.empty_stack: D0< +[Hera] [HADES][TEST ] [KRELTSC: 2540231001] Expected error occurred +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2541709716] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2542729266] D0<: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2543827587] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2544980487] Testing word: S>D +[Hera] [HADES][TEST ] [KRELTSC: 2545718259] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2546526402] Running S>D.positive: 5 S>D . . CR +[Hera] 0 5 +[Hera] [HADES][TEST ] [KRELTSC: 2547943146] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2549321208] Expected: Should sign-extend positive: 0 5 +[Hera] [HADES][TEST ] [KRELTSC: 2550307095] Running S>D.negative: -5 S>D . . CR +[Hera] -1 -5 +[Hera] [HADES][TEST ] [KRELTSC: 2551560795] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2552918739] Expected: Should sign-extend negative: -1 -5 +[Hera] [HADES][TEST ] [KRELTSC: 2553896247] Running S>D.zero: 0 S>D . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2555092533] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2556458415] Expected: Should sign-extend zero: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2557404738] Running S>D.max_int: 2147483647 S>D . . CR +[Hera] 0 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 2558746008] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2560117560] Expected: Should extend max int: 0 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 2561119512] Running S>D.min_int: -2147483648 S>D . . CR +[Hera] -1 -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 2562460005] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2563830633] Expected: Should extend min int: -1 -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 2564829540] Running S>D.empty_stack: S>D +[Hera] [HADES][TEST ] [KRELTSC: 2565727983] Expected error occurred +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2567195043] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2568135024] S>D: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2569080192] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2570161020] Testing word: D2* +[Hera] [HADES][TEST ] [KRELTSC: 2570892597] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2571688812] Running D2*.basic: 5 0 D2* . . CR +[Hera] 0 10 +[Hera] [HADES][TEST ] [KRELTSC: 2573030523] Test passed +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2574403482] Expected: Should double 5: 0 10 +[Hera] [HADES][TEST ] [KRELTSC: 2575293609] Running D2*.zero: 0 0 D2* . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2576474040] Test passed +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2577964998] Expected: Should double zero: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2578956534] Running D2*.negative: -1 -1 D2* . . CR +[Hera] -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 2580276426] Test passed +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2581652682] Expected: Should double -1: -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 2582557320] Running D2*.carry: 0 1 D2* . . CR +[Hera] 2 0 +[Hera] [HADES][TEST ] [KRELTSC: 2583741741] Test passed +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2585117997] Expected: Should shift high cell: 0 2 +[Hera] [HADES][TEST ] [KRELTSC: 2586037020] Running D2*.empty_stack: D2* +[Hera] [HADES][TEST ] [KRELTSC: 2586938298] Expected error occurred +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2588405211] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2589332571] D2*: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2590265118] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2591363775] Testing word: D2/ +[Hera] [HADES][TEST ] [KRELTSC: 2592101694] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2592910236] Running D2/.basic: 10 0 D2/ . . CR +[Hera] 0 5 +[Hera] [HADES][TEST ] [KRELTSC: 2594247054] Test passed +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2595596220] Expected: Should halve 10: 0 5 +[Hera] [HADES][TEST ] [KRELTSC: 2596472319] Running D2/.negative: -2 -1 D2/ . . CR +[Hera] -1 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2597743512] Test passed +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2599113195] Expected: Should halve -2: -1 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2599978458] Running D2/.zero: 0 0 D2/ . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2601185979] Test passed +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2602589661] Expected: Should halve zero: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2603435583] Running D2/.odd: 3 0 D2/ . . CR +[Hera] 0 1 +[Hera] [HADES][TEST ] [KRELTSC: 2604599781] Test passed +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2605973034] Expected: Should truncate toward zero: 0 1 +[Hera] [HADES][TEST ] [KRELTSC: 2606946363] Running D2/.empty_stack: D2/ +[Hera] [HADES][TEST ] [KRELTSC: 2607834516] Expected error occurred +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2609250252] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2610188868] D2/: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2611144641] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2612255415] Testing word: 2>R +[Hera] [HADES][TEST ] [KRELTSC: 2612966076] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2613763887] Running 2>R.roundtrip: 10 20 2>R 2R> . . CR +[Hera] 20 10 +[Hera] [HADES][TEST ] [KRELTSC: 2615329143] Test passed +[Hera] [HADES][TEST ] Testing 2>R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2616709851] Expected: Should store and retrieve: 20 10 +[Hera] [HADES][TEST ] [KRELTSC: 2617653465] Running 2>R.depth_after: 1 2 2>R DEPTH . 2R> DROP DROP CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2619060402] Test passed +[Hera] [HADES][TEST ] Testing 2>R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2620443840] Expected: Should empty data stack: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2621386467] Running 2>R.empty_stack: 2>R +[Hera] [HADES][TEST ] [KRELTSC: 2622299610] Expected error occurred +[Hera] [HADES][TEST ] Testing 2>R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2623756317] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2624714106] 2>R: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2625664713] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2626753143] Testing word: 2R> +[Hera] [HADES][TEST ] [KRELTSC: 2627483649] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2628297588] Running 2R>.roundtrip: 5 6 2>R 2R> . . CR +[Hera] 6 5 +[Hera] [HADES][TEST ] [KRELTSC: 2629553598] Test passed +[Hera] [HADES][TEST ] Testing 2R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2630916813] Expected: Should retrieve double: 6 5 +[Hera] [HADES][TEST ] [KRELTSC: 2631860406] Running 2R>.depth: 9 8 2>R 2R> DEPTH . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 2633118243] Test passed +[Hera] [HADES][TEST ] Testing 2R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2634525789] Expected: Should push 2 items to data stack: 2 +[Hera] [HADES][TEST ] [KRELTSC: 2635506048] Running 2R>.empty_rstack: 2R> +[Hera] [HADES][TEST ] [KRELTSC: 2636394957] Expected error occurred +[Hera] [HADES][TEST ] Testing 2R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2637845952] Expected: Should cause return stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2638851285] 2R>: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2639773773] ▶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2640883497] Testing word: 2R@ +[Hera] [HADES][TEST ] [KRELTSC: 2641620597] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2642403645] Running 2R@.peek: 3 4 2>R 2R@ . . 2R> DROP DROP CR +[Hera] 4 3 +[Hera] [HADES][TEST ] [KRELTSC: 2643881982] Test passed +[Hera] [HADES][TEST ] Testing 2R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2645216049] Expected: Should peek: 4 3 +[Hera] [HADES][TEST ] [KRELTSC: 2646037590] Running 2R@.non_destructive: 7 8 2>R 2R@ DROP DROP 2R> . . CR +[Hera] 8 7 +[Hera] [HADES][TEST ] [KRELTSC: 2647427013] Test passed +[Hera] [HADES][TEST ] Testing 2R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2648779791] Expected: Should leave rstack intact +[Hera] [HADES][TEST ] [KRELTSC: 2649705618] Running 2R@.empty_rstack: 2R@ +[Hera] [HADES][TEST ] [KRELTSC: 2650569957] Expected error occurred +[Hera] [HADES][TEST ] Testing 2R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2652027483] Expected: Should cause return stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2652989220] 2R@: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2653990563] === Double Number Words Summary: 0 passed, 0 failed, 0 skipped, +[Hera] [HADES][INFO ] [KRELTSC: 2655062592] +[Hera] === Testing Module: Format Words === +[Hera] [HADES][INFO ] [KRELTSC: 2656252158] Running Format Words Tests (Module 10)... +[Hera] [HADES][TEST ] [KRELTSC: 2657194554] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2658305034] Testing word: BASE +[Hera] [HADES][TEST ] [KRELTSC: 2659057443] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2659955676] Running BASE.decimal: DECIMAL 42 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2661186969] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2662542477] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 2663358915] Running BASE.hex: HEX FF . CR +[Hera] FF +[Hera] [HADES][TEST ] [KRELTSC: 2664534600] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2665935594] Expected: Should print: FF +[Hera] [HADES][TEST ] [KRELTSC: 2666777946] Running BASE.octal: OCTAL 52 . CR +[Hera] 52 +[Hera] [HADES][TEST ] [KRELTSC: 2667980280] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2669384844] Expected: Should print: 52 +[Hera] [HADES][TEST ] [KRELTSC: 2670209241] Running BASE.base_store: 16 BASE ! 255 . CR +[Hera] 723 +[Hera] [HADES][TEST ] [KRELTSC: 2671515357] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2672868786] Expected: Should print: FF +[Hera] [HADES][TEST ] [KRELTSC: 2673676593] Running BASE.base_fetch: BASE @ . CR +[Hera] 16 +[Hera] [HADES][TEST ] [KRELTSC: 2674861854] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2676211272] Expected: Should print current base +[Hera] [HADES][TEST ] [KRELTSC: 2677101777] BASE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2678041632] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2679131784] Testing word: DECIMAL +[Hera] [HADES][TEST ] [KRELTSC: 2679877872] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2680632465] Running DECIMAL.from_hex: HEX FF DECIMAL . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 2681923608] Test passed +[Hera] [HADES][TEST ] Testing DECIMAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2683291044] Expected: Should print: 255 +[Hera] [HADES][TEST ] [KRELTSC: 2684133879] Running DECIMAL.from_octal: OCTAL 52 DECIMAL . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2685429201] Test passed +[Hera] [HADES][TEST ] Testing DECIMAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2686785465] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 2687627166] Running DECIMAL.state_persist: DECIMAL 42 . CR 42 . CR HEX 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2689590057] Test passed +[Hera] [HADES][TEST ] Testing DECIMAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2691007914] Expected: Should maintain base +[Hera] [HADES][TEST ] [KRELTSC: 2691863790] DECIMAL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2692860219] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2693962068] Testing word: HEX +[Hera] [HADES][TEST ] [KRELTSC: 2694703221] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2695502901] Running HEX.from_decimal: DECIMAL 255 HEX . CR +[Hera] FF +[Hera] [HADES][TEST ] [KRELTSC: 2696820672] Test passed +[Hera] [HADES][TEST ] Testing HEX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2698196550] Expected: Should print: FF +[Hera] [HADES][TEST ] [KRELTSC: 2699025546] Running HEX.from_octal: OCTAL 52 HEX . CR +[Hera] 2A +[Hera] [HADES][TEST ] [KRELTSC: 2700299028] Test passed +[Hera] [HADES][TEST ] Testing HEX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2701656720] Expected: Should print: 2A +[Hera] [HADES][TEST ] [KRELTSC: 2702465157] Running HEX.state_persist: HEX FF . CR DECIMAL 255 . CR +[Hera] FF +[Hera] [HADES][INFO ] [KRELTSC: 2703934632] L8[TABLE]: Config 38 → 39 regime=2 score=52428 L1=0 L2=1 L3=0 +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 2705394972] Test passed +[Hera] [HADES][TEST ] Testing HEX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2706762828] Expected: Should maintain base +[Hera] [HADES][TEST ] [KRELTSC: 2707628910] HEX: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2708585649] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2709682542] Testing word: OCTAL +[Hera] [HADES][TEST ] [KRELTSC: 2710440012] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2711199477] Running OCTAL.from_decimal: DECIMAL 42 OCTAL . CR +[Hera] 52 +[Hera] [HADES][TEST ] [KRELTSC: 2712520377] Test passed +[Hera] [HADES][TEST ] Testing OCTAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2713883151] Expected: Should print: 52 +[Hera] [HADES][TEST ] [KRELTSC: 2714722836] Running OCTAL.from_hex: HEX 2A OCTAL . CR +[Hera] 52 +[Hera] [HADES][TEST ] [KRELTSC: 2715965952] Test passed +[Hera] [HADES][TEST ] Testing OCTAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2717373456] Expected: Should print: 52 +[Hera] [HADES][TEST ] [KRELTSC: 2718216627] Running OCTAL.state_persist: DECIMAL 42 . CR OCTAL 52 . CR +[Hera] 42 +[Hera] 52 +[Hera] [HADES][TEST ] [KRELTSC: 2719885476] Test passed +[Hera] [HADES][TEST ] Testing OCTAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2721245058] Expected: Should maintain base +[Hera] [HADES][TEST ] [KRELTSC: 2722084680] OCTAL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2723026761] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2724140244] Testing word: <# +[Hera] [HADES][TEST ] [KRELTSC: 2724857121] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2725648989] Running <#.basic: DECIMAL 42 S>D <# #S #> TYPE CR +[Hera] 774763251095801167872 +[Hera] [HADES][TEST ] [KRELTSC: 2728044942] Test passed +[Hera] [HADES][TEST ] Testing <# ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2729372856] Expected: Should format number +[Hera] [HADES][TEST ] [KRELTSC: 2730225855] Running <#.empty: 0 <# #> TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2731163925] Test passed +[Hera] [HADES][TEST ] Testing <# ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2732510970] Expected: Should handle zero +[Hera] [HADES][TEST ] [KRELTSC: 2733387888] Running <#.negative: -42 <# #S #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2734737600] Test passed +[Hera] [HADES][TEST ] Testing <# ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2736084540] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 2736951756] <#: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2737892766] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2738985711] Testing word: # +[Hera] [HADES][TEST ] [KRELTSC: 2739716574] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2740503381] Running #.single_digit: 15 <# # #> TYPE CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 2741878104] Test passed +[Hera] [HADES][TEST ] Testing # ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2743210491] Expected: Should print rightmost digit +[Hera] [HADES][TEST ] [KRELTSC: 2744186886] Running #.multiple: 15 <# # # #> TYPE CR +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 2745452136] Test passed +[Hera] [HADES][TEST ] Testing # ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2746820664] Expected: Should print digits right to left +[Hera] [HADES][TEST ] [KRELTSC: 2747797143] Running #.zero_pad: 5 <# # 0 # #> TYPE CR +[Hera] 05 +[Hera] [HADES][TEST ] [KRELTSC: 2749027176] Test passed +[Hera] [HADES][TEST ] Testing # ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2750384721] Expected: Should handle zero padding +[Hera] [HADES][TEST ] [KRELTSC: 2751310674] #: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2752264389] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2753346876] Testing word: #S +[Hera] [HADES][TEST ] [KRELTSC: 2754060813] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2754872442] Running #S.basic: 42 <# #S #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2756102601] Test passed +[Hera] [HADES][TEST ] Testing #S ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2757442254] Expected: Should convert all digits +[Hera] [HADES][TEST ] [KRELTSC: 2758339920] Running #S.zero: 0 <# #S #> TYPE CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2759527365] Test passed +[Hera] [HADES][TEST ] Testing #S ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2760893352] Expected: Should handle zero +[Hera] [HADES][TEST ] [KRELTSC: 2761737426] Running #S.large: 1234567890 <# #S #> TYPE CR +[Hera] 1234567890 +[Hera] [HADES][TEST ] [KRELTSC: 2763135732] Test passed +[Hera] [HADES][TEST ] Testing #S ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2764505961] Expected: Should handle large numbers +[Hera] [HADES][TEST ] [KRELTSC: 2765369208] #S: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2766311184] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2767432143] Testing word: SIGN +[Hera] [HADES][TEST ] [KRELTSC: 2768182242] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2769020058] Running SIGN.negative: -42 ABS <# #S SIGN #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2770500012] Test passed +[Hera] [HADES][TEST ] Testing SIGN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2771857452] Expected: Should add minus +[Hera] [HADES][TEST ] [KRELTSC: 2772694974] Running SIGN.positive: 42 <# #S SIGN #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2773999998] Test passed +[Hera] [HADES][TEST ] Testing SIGN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2775417456] Expected: Should not add sign +[Hera] [HADES][TEST ] [KRELTSC: 2776289145] Running SIGN.zero: 0 <# #S SIGN #> TYPE CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2777589864] Test passed +[Hera] [HADES][TEST ] Testing SIGN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2778952890] Expected: Should handle zero +[Hera] [HADES][TEST ] [KRELTSC: 2779819875] SIGN: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2780775900] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2781856854] Testing word: #> +[Hera] [HADES][TEST ] [KRELTSC: 2782596684] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2783382903] Running #>.normal: 42 <# #S #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2784615120] Test passed +[Hera] [HADES][TEST ] Testing #> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2785960548] Expected: Should terminate formatting +[Hera] [HADES][TEST ] [KRELTSC: 2786892738] Running #>.empty: 0 <# #> TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2787849309] Test passed +[Hera] [HADES][TEST ] Testing #> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2789238060] Expected: Should handle empty format +[Hera] [HADES][TEST ] [KRELTSC: 2790169788] Running #>.stack_effect: 42 <# #S #> SWAP . . CR +[Hera] 24 2 +[Hera] [HADES][TEST ] [KRELTSC: 2791535733] Test passed +[Hera] [HADES][TEST ] Testing #> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2792911758] Expected: Should leave addr u +[Hera] [HADES][TEST ] [KRELTSC: 2793789117] #>: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2794675716] ▶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2795762151] Testing word: HOLD +[Hera] [HADES][TEST ] [KRELTSC: 2796506496] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2797305840] Running HOLD.basic: 42 <# 46 HOLD #S #> TYPE CR +[Hera] 42. +[Hera] [HADES][TEST ] [KRELTSC: 2798657841] Test passed +[Hera] [HADES][TEST ] Testing HOLD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2800049973] Expected: Should insert dot +[Hera] [HADES][TEST ] [KRELTSC: 2800901292] Running HOLD.overflow: <# 257 HOLD #> +[Hera] [HADES][ERROR] [KRELTSC: 2801892324] HOLD: byte out of range (257) +[Hera] [HADES][TEST ] [KRELTSC: 2802928443] Expected error occurred +[Hera] [HADES][TEST ] Testing HOLD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2804386347] Expected: Should handle overflow +[Hera] [HADES][TEST ] [KRELTSC: 2805250581] HOLD: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2806195266] === Format Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 2807268996] +[Hera] === Testing Module: String Words === +[Hera] [HADES][INFO ] [KRELTSC: 2808350034] Running String Words Tests (Module 11)... +[Hera] [HADES][TEST ] [KRELTSC: 2809292304] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2810382225] Testing word: COUNT +[Hera] [HADES][TEST ] [KRELTSC: 2811130413] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2811905670] Running COUNT.basic: HERE S" Test" DROP COUNT . . CR +[Hera] 84 121 +[Hera] [HADES][TEST ] [KRELTSC: 2813775951] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2815157310] Expected: Should show length and addr+1 +[Hera] [HADES][TEST ] [KRELTSC: 2816098929] Running COUNT.empty: HERE 0 OVER C! COUNT . . CR +[Hera] 0 126 +[Hera] [HADES][TEST ] [KRELTSC: 2817487029] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2818858749] Expected: Should handle empty string +[Hera] [HADES][TEST ] [KRELTSC: 2819801544] Running COUNT.max_length: HERE 255 OVER C! COUNT . . CR +[Hera] 255 126 +[Hera] [HADES][TEST ] [KRELTSC: 2821279272] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2822663151] Expected: Should handle max length +[Hera] [HADES][TEST ] [KRELTSC: 2823552480] Running COUNT.string_bounds: HERE COUNT SWAP 1- = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2824961916] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2826353922] Expected: Should increment address +[Hera] [HADES][TEST ] [KRELTSC: 2827239954] Running COUNT.empty_stack: COUNT +[Hera] [HADES][ERROR] [KRELTSC: 2828163030] COUNT: Data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2828981988] Expected error occurred +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2830476474] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2831397303] COUNT: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2832425799] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2833490793] Testing word: -TRAILING +[Hera] [HADES][TEST ] [KRELTSC: 2834298663] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2835098028] Running -TRAILING.basic: HERE S" Test " -TRAILING TYPE CR +[Hera] Test +[Hera] [HADES][TEST ] [KRELTSC: 2836755243] Test passed +[Hera] [HADES][TEST ] Testing -TRAILING ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2838179295] Expected: Should trim spaces +[Hera] [HADES][TEST ] [KRELTSC: 2839017783] Running -TRAILING.all_spaces: HERE S" " -TRAILING TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2840255040] Test passed +[Hera] [HADES][TEST ] Testing -TRAILING ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2841676803] Expected: Should handle all spaces +[Hera] [HADES][TEST ] [KRELTSC: 2842608426] Running -TRAILING.no_spaces: HERE S" Test" -TRAILING TYPE CR +[Hera] Test +[Hera] [HADES][TEST ] [KRELTSC: 2844040899] Test passed +[Hera] [HADES][TEST ] Testing -TRAILING ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2845452519] Expected: Should handle no spaces +[Hera] [HADES][TEST ] [KRELTSC: 2846359320] Running -TRAILING.empty: HERE 0 -TRAILING TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2847450102] Test passed +[Hera] [HADES][TEST ] Testing -TRAILING ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2848884360] Expected: Should handle empty string +[Hera] [HADES][TEST ] [KRELTSC: 2849786583] -TRAILING: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2850785028] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2851878477] Testing word: CMOVE +[Hera] [HADES][TEST ] [KRELTSC: 2852644872] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2853431742] Running CMOVE.basic: HERE S" Test" DUP >R HERE 10 + SWAP CMOV + +[Hera] [HADES][TEST ] [KRELTSC: 2854918899] Test passed +[Hera] [HADES][TEST ] Testing CMOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2856278145] Expected: Should copy string +[Hera] [HADES][TEST ] [KRELTSC: 2857137297] Running CMOVE.empty: HERE HERE 10 + 0 CMOVE +[Hera] [HADES][TEST ] [KRELTSC: 2858166885] Test passed +[Hera] [HADES][TEST ] Testing CMOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2859580374] Expected: Should handle zero count +[Hera] [HADES][TEST ] [KRELTSC: 2860474701] Running CMOVE.overlap: HERE DUP 1+ 5 CMOVE +[Hera] [HADES][TEST ] [KRELTSC: 2861461260] Test passed +[Hera] [HADES][TEST ] Testing CMOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2862867504] Expected: Should handle overlap +[Hera] [HADES][TEST ] [KRELTSC: 2863720566] Running CMOVE.bounds: HERE PAD 1000 CMOVE +[Hera] [HADES][ERROR] [KRELTSC: 2864740473] CMOVE: out-of-bounds (src=125 dst=5242368 n=1000) +[Hera] [HADES][TEST ] [KRELTSC: 2865745323] Expected error occurred +[Hera] [HADES][TEST ] Testing CMOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2867233089] Expected: Should check bounds +[Hera] [HADES][TEST ] [KRELTSC: 2868108831] CMOVE: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2869079388] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2870166537] Testing word: CMOVE> +[Hera] [HADES][TEST ] [KRELTSC: 2870897043] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2871697164] Running CMOVE>.basic: HERE S" Test" DUP >R HERE 10 + SWAP CMO + +[Hera] [HADES][TEST ] [KRELTSC: 2873158554] Test passed +[Hera] [HADES][TEST ] Testing CMOVE> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2874563832] Expected: Should copy backward +[Hera] [HADES][TEST ] [KRELTSC: 2875410048] Running CMOVE>.empty: HERE HERE 10 + 0 CMOVE> +[Hera] [HADES][TEST ] [KRELTSC: 2876465928] Test passed +[Hera] [HADES][TEST ] Testing CMOVE> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2877851088] Expected: Should handle zero count +[Hera] [HADES][TEST ] [KRELTSC: 2878767738] Running CMOVE>.overlap: HERE DUP 1+ 5 CMOVE> +[Hera] [HADES][TEST ] [KRELTSC: 2879809632] Test passed +[Hera] [HADES][TEST ] Testing CMOVE> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2881215393] Expected: Should handle overlap +[Hera] [HADES][TEST ] [KRELTSC: 2882100165] Running CMOVE>.bounds: HERE PAD 1000 CMOVE> +[Hera] [HADES][ERROR] [KRELTSC: 2883130572] CMOVE>: out-of-bounds (src=125 dst=5242368 n=1000) +[Hera] [HADES][TEST ] [KRELTSC: 2884137018] Expected error occurred +[Hera] [HADES][TEST ] Testing CMOVE> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2885630307] Expected: Should check bounds +[Hera] [HADES][TEST ] [KRELTSC: 2886477699] CMOVE>: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2887454913] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2888561592] Testing word: COMPARE +[Hera] [HADES][TEST ] [KRELTSC: 2889324081] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2890232625] Running COMPARE.equal: HERE S" Test" HERE S" Test" COMPARE . +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2892016449] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2893422714] Expected: Should return 0 +[Hera] [HADES][TEST ] [KRELTSC: 2894232684] Running COMPARE.less: HERE S" Test1" HERE S" Test2" COMPARE . +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2895726351] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2897122830] Expected: Should return -1 +[Hera] [HADES][TEST ] [KRELTSC: 2897958966] Running COMPARE.greater: HERE S" Test2" HERE S" Test1" COMPAR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2899440159] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2900859906] Expected: Should return 1 +[Hera] [HADES][TEST ] [KRELTSC: 2901672963] Running COMPARE.different_lengths: HERE S" Test" HERE S" Test +[Hera] [HADES][INFO ] [KRELTSC: 2902919040] L8[TABLE]: Config 39 → 40 regime=2 score=6553 L1=0 L2=1 L3=0 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2904371778] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2905826742] Expected: Should handle lengths +[Hera] [HADES][TEST ] [KRELTSC: 2906707125] Running COMPARE.empty: HERE 0 HERE 0 COMPARE . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2908189242] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2909582655] Expected: Should handle empty +[Hera] [HADES][TEST ] [KRELTSC: 2910417447] COMPARE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2911379583] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2912478597] Testing word: SEARCH +[Hera] [HADES][TEST ] [KRELTSC: 2913244236] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2913992949] Running SEARCH.found: HERE S" Testing" HERE S" Test" SEARCH . +[Hera] -1 15 120 +[Hera] [HADES][TEST ] [KRELTSC: 2915967159] Test passed +[Hera] [HADES][TEST ] Testing SEARCH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2917343457] Expected: Should find substring +[Hera] [HADES][TEST ] [KRELTSC: 2918228565] Running SEARCH.not_found: HERE S" Testing" HERE S" Xyz" SEARC +[Hera] -1 7 141 +[Hera] [HADES][TEST ] [KRELTSC: 2919773766] Test passed +[Hera] [HADES][TEST ] Testing SEARCH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2921173374] Expected: Should return false +[Hera] [HADES][TEST ] [KRELTSC: 2922051447] Running SEARCH.empty_pattern: HERE S" Test" HERE 0 SEARCH . . +[Hera] -1 4 145 +[Hera] [HADES][TEST ] [KRELTSC: 2923587828] Test passed +[Hera] [HADES][TEST ] Testing SEARCH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2925007701] Expected: Should handle empty pattern +[Hera] [HADES][TEST ] [KRELTSC: 2925934662] Running SEARCH.empty_string: HERE 0 HERE S" Test" SEARCH . . +[Hera] -1 30 120 +[Hera] [HADES][TEST ] [KRELTSC: 2927406510] Test passed +[Hera] [HADES][TEST ] Testing SEARCH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2928799020] Expected: Should handle empty string +[Hera] [HADES][TEST ] [KRELTSC: 2929675875] SEARCH: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2930667810] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2931752103] Testing word: SCAN +[Hera] [HADES][TEST ] [KRELTSC: 2932513290] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2933310156] Running SCAN.basic: HERE S" Test,Data" BL SCAN TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2934753444] Test passed +[Hera] [HADES][TEST ] Testing SCAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2936135013] Expected: Should find space +[Hera] [HADES][TEST ] [KRELTSC: 2936989692] Running SCAN.not_found: HERE S" TestData" BL SCAN TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2938162164] Test passed +[Hera] [HADES][TEST ] Testing SCAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2939540016] Expected: Should scan to end +[Hera] [HADES][TEST ] [KRELTSC: 2940385749] Running SCAN.empty: HERE 0 BL SCAN TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2941467228] Test passed +[Hera] [HADES][TEST ] Testing SCAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2942839914] Expected: Should handle empty +[Hera] [HADES][TEST ] [KRELTSC: 2943675672] Running SCAN.all_delims: HERE S" " BL SCAN TYPE CR +[Hera] +[Hera] [HADES][TEST ] [KRELTSC: 2945157075] Test passed +[Hera] [HADES][TEST ] Testing SCAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2946527283] Expected: Should handle all delims +[Hera] [HADES][TEST ] [KRELTSC: 2947541961] SCAN: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2948663655] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2949737994] Testing word: SKIP +[Hera] [HADES][TEST ] [KRELTSC: 2950458462] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2951232564] Running SKIP.basic: HERE S" Test" BL SKIP TYPE CR +[Hera] Test +[Hera] [HADES][TEST ] [KRELTSC: 2952811008] Test passed +[Hera] [HADES][TEST ] Testing SKIP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2954207907] Expected: Should skip spaces +[Hera] [HADES][TEST ] [KRELTSC: 2955058911] Running SKIP.no_delims: HERE S" Test" BL SKIP TYPE CR +[Hera] Test +[Hera] [HADES][TEST ] [KRELTSC: 2956412004] Test passed +[Hera] [HADES][TEST ] Testing SKIP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2957791053] Expected: Should not skip +[Hera] [HADES][TEST ] [KRELTSC: 2958600330] Running SKIP.empty: HERE 0 BL SKIP TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2959689537] Test passed +[Hera] [HADES][TEST ] Testing SKIP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2961068397] Expected: Should handle empty +[Hera] [HADES][TEST ] [KRELTSC: 2961926478] Running SKIP.all_delims: HERE S" " BL SKIP TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2963092188] Test passed +[Hera] [HADES][TEST ] Testing SKIP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2964497004] Expected: Should skip all +[Hera] [HADES][TEST ] [KRELTSC: 2965328919] SKIP: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2966269530] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2967356658] Testing word: BLANK +[Hera] [HADES][TEST ] [KRELTSC: 2968107618] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2968888944] Running BLANK.basic: HERE 5 BLANK HERE 5 TYPE CR +[Hera] +[Hera] [HADES][TEST ] [KRELTSC: 2970560880] Test passed +[Hera] [HADES][TEST ] Testing BLANK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2971961076] Expected: Should fill with spaces +[Hera] [HADES][TEST ] [KRELTSC: 2972830182] Running BLANK.zero: HERE 0 BLANK HERE 0 TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2973875625] Test passed +[Hera] [HADES][TEST ] Testing BLANK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2975258433] Expected: Should handle zero count +[Hera] [HADES][TEST ] [KRELTSC: 2976166977] BLANK: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2977105950] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2978171322] Testing word: S" +[Hera] [HADES][TEST ] [KRELTSC: 2978886330] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2979623892] Running S".interpret_len: S" hello" . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 2980836999] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2982145362] Expected: Should print: 5 (length) +[Hera] [HADES][TEST ] [KRELTSC: 2983032990] Running S".interpret_type: S" hello" TYPE CR +[Hera] hello +[Hera] [HADES][TEST ] [KRELTSC: 2984282826] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2985657087] Expected: Should print: hello +[Hera] [HADES][TEST ] [KRELTSC: 2986483269] Running S".empty: S" " . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2987623296] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2988962172] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2989801794] Running S".compile_type: : TSQ S" world" TYPE CR ; TSQ +[Hera] world +[Hera] [HADES][TEST ] [KRELTSC: 2993766111] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2995105554] Expected: Should print: world +[Hera] [HADES][TEST ] [KRELTSC: 2995942152] Running S".compile_len: : TSQ2 S" forth" SWAP DROP . CR ; TSQ +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 2997708903] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2999020731] Expected: Should print: 5 +[Hera] [HADES][TEST ] [KRELTSC: 2999871399] Running S".compile_twice: : TSQ3 S" ab" TYPE S" cd" TYPE CR ; +[Hera] abcd +[Hera] [HADES][TEST ] [KRELTSC: 3001616961] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3002989878] Expected: Should print: abcd +[Hera] [HADES][TEST ] [KRELTSC: 3003860517] S": 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3004838529] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3005957745] Testing word: BL +[Hera] [HADES][TEST ] [KRELTSC: 3006696399] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3007493727] Running BL.value: BL . CR +[Hera] 32 +[Hera] [HADES][TEST ] [KRELTSC: 3008732727] Test passed +[Hera] [HADES][TEST ] Testing BL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3010086114] Expected: Should print: 32 +[Hera] [HADES][TEST ] [KRELTSC: 3010918512] Running BL.as_char: BL EMIT CR +[Hera] +[Hera] [HADES][TEST ] [KRELTSC: 3012165660] Test passed +[Hera] [HADES][TEST ] Testing BL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3013531206] Expected: Should emit a space +[Hera] [HADES][TEST ] [KRELTSC: 3014428095] Running BL.in_scan: HERE S" a b" BL SCAN SWAP DROP . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 3015851937] Test passed +[Hera] [HADES][TEST ] Testing BL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3017227122] Expected: Should find space at offset 1 +[Hera] [HADES][TEST ] [KRELTSC: 3018195054] BL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3019097865] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3020199777] Testing word: SOURCE +[Hera] [HADES][TEST ] [KRELTSC: 3020984589] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3021744411] Running SOURCE.returns_pair: SOURCE SWAP DROP 0< NOT . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3023639577] Test passed +[Hera] [HADES][TEST ] Testing SOURCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3025067724] Expected: Should return non-negative length +[Hera] [HADES][TEST ] [KRELTSC: 3026053044] Running SOURCE.has_addr: SOURCE DROP 0<> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3027378039] Test passed +[Hera] [HADES][TEST ] Testing SOURCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3028795980] Expected: Should return non-null address +[Hera] [HADES][TEST ] [KRELTSC: 3029748120] SOURCE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3030721008] ▶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3031827141] Testing word: >IN +[Hera] [HADES][TEST ] [KRELTSC: 3032569344] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3033362661] Running >IN.initial: >IN @ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3034676190] Test passed +[Hera] [HADES][TEST ] Testing >IN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3036035394] Expected: Should return input offset +[Hera] [HADES][TEST ] [KRELTSC: 3036982809] Running >IN.advances: : TWIN >IN @ >IN @ - . CR ; TWIN +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3038713629] Test passed +[Hera] [HADES][TEST ] Testing >IN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3040114371] Expected: Should print: 0 (no advance inside compiled word) +[Hera] [HADES][TEST ] [KRELTSC: 3041237661] >IN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3042225417] === String Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 3043316976] +[Hera] === Testing Module: I/O Words === +[Hera] [HADES][INFO ] [KRELTSC: 3044447049] Running I/O Words Tests (Module 9)... +[Hera] [HADES][TEST ] [KRELTSC: 3045387051] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3046467480] Testing word: . +[Hera] [HADES][TEST ] [KRELTSC: 3047183223] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3047990463] Running ..positive: 42 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3049195065] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3050550132] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 3051388935] Running ..negative: -42 . CR +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 3052552965] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3053919561] Expected: Should print: -42 +[Hera] [HADES][TEST ] [KRELTSC: 3054780372] Running ..zero: 0 . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3055863531] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3057227271] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 3058045599] Running ..max_int: 2147483647 . CR +[Hera] 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 3059265594] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3060645231] Expected: Should print: 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 3061551402] Running ..min_int: -2147483648 . CR +[Hera] -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 3062854032] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3064208007] Expected: Should print: -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 3065117118] Running ..multiple: 1 2 3 . . . CR +[Hera] 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 3066341733] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3067714587] Expected: Should print: 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 3068586717] Running ..empty_stack: . +[Hera] [HADES][TEST ] [KRELTSC: 3069454626] Expected error occurred +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3070905453] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3071837223] .: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3072817272] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3073884345] Testing word: CR +[Hera] [HADES][TEST ] [KRELTSC: 3074619639] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3075395694] Running CR.basic: 42 . CR 43 . CR +[Hera] 42 +[Hera] 43 +[Hera] [HADES][TEST ] [KRELTSC: 3076882704] Test passed +[Hera] [HADES][TEST ] Testing CR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3078239493] Expected: Should print on separate lines +[Hera] [HADES][TEST ] [KRELTSC: 3079214754] Running CR.multiple: CR CR CR + + + +[Hera] [HADES][TEST ] [KRELTSC: 3080144676] Test passed +[Hera] [HADES][TEST ] Testing CR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3081514212] Expected: Should print multiple newlines +[Hera] [HADES][TEST ] [KRELTSC: 3082467339] Running CR.no_stack_effect: DEPTH CR DEPTH = . CR + +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3083842398] Test passed +[Hera] [HADES][TEST ] Testing CR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3085185915] Expected: Should not affect stack +[Hera] [HADES][TEST ] [KRELTSC: 3086088306] Running CR.after_output: 1 2 3 . . . CR +[Hera] 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 3087336294] Test passed +[Hera] [HADES][TEST ] Testing CR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3088710051] Expected: Should work after output +[Hera] [HADES][TEST ] [KRELTSC: 3089610510] CR: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3090537282] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3091617354] Testing word: SPACE +[Hera] [HADES][TEST ] [KRELTSC: 3092371737] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3093148485] Running SPACE.basic: 42 . SPACE 43 . CR +[Hera] 42 43 +[Hera] [HADES][TEST ] [KRELTSC: 3094492674] Test passed +[Hera] [HADES][TEST ] Testing SPACE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3095877540] Expected: Should add space between numbers +[Hera] [HADES][TEST ] [KRELTSC: 3096829155] Running SPACE.multiple: SPACE SPACE SPACE +[Hera] [HADES][INFO ] [KRELTSC: 3098838687] L8[TABLE]: Config 40 → 0 regime=7 score=26214 L1=0 L2=0 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 3100008786] Test passed +[Hera] [HADES][TEST ] Testing SPACE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3101170989] Expected: Should print multiple spaces +[Hera] [HADES][TEST ] [KRELTSC: 3102107400] Running SPACE.no_stack_effect: DEPTH SPACE DEPTH = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3103528764] Test passed +[Hera] [HADES][TEST ] Testing SPACE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3104924130] Expected: Should not affect stack +[Hera] [HADES][TEST ] [KRELTSC: 3105813459] Running SPACE.with_text: 65 EMIT SPACE 66 EMIT CR +[Hera] A B +[Hera] [HADES][TEST ] [KRELTSC: 3107178900] Test passed +[Hera] [HADES][TEST ] Testing SPACE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3108595707] Expected: Should space between chars +[Hera] [HADES][TEST ] [KRELTSC: 3109502130] SPACE: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3110451855] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3111509037] Testing word: SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3112274865] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3113062029] Running SPACES.zero: 0 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3113964693] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3115405881] Expected: Should print no spaces +[Hera] [HADES][TEST ] [KRELTSC: 3116287146] Running SPACES.one: 1 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3117441180] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3118596894] Expected: Should print one space +[Hera] [HADES][TEST ] [KRELTSC: 3119517030] Running SPACES.multiple: 5 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3120771822] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3121916301] Expected: Should print five spaces +[Hera] [HADES][TEST ] [KRELTSC: 3122828457] Running SPACES.large: 20 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3124105488] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3125265171] Expected: Should print twenty spaces +[Hera] [HADES][TEST ] [KRELTSC: 3126187491] Running SPACES.negative: -5 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3127136229] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3128562969] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 3129463680] Running SPACES.with_output: 42 . 3 SPACES 43 . CR +[Hera] 42 43 +[Hera] [HADES][TEST ] [KRELTSC: 3130842015] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3132262455] Expected: Should space output +[Hera] [HADES][TEST ] [KRELTSC: 3133118793] Running SPACES.empty_stack: SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3134062701] Expected error occurred +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3135565482] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3136452438] SPACES: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3137440950] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3138532278] Testing word: EMIT +[Hera] [HADES][TEST ] [KRELTSC: 3139273431] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3140076723] Running EMIT.letter_A: 65 EMIT CR +[Hera] A +[Hera] [HADES][TEST ] [KRELTSC: 3141234138] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3142632675] Expected: Should print: A +[Hera] [HADES][TEST ] [KRELTSC: 3143476056] Running EMIT.letter_Z: 90 EMIT CR +[Hera] Z +[Hera] [HADES][TEST ] [KRELTSC: 3144631224] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3145995510] Expected: Should print: Z +[Hera] [HADES][TEST ] [KRELTSC: 3146834502] Running EMIT.digit: 48 EMIT CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3147958191] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3149353746] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 3150198660] Running EMIT.space_char: 32 EMIT CR +[Hera] +[Hera] [HADES][TEST ] [KRELTSC: 3151386357] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3152778405] Expected: Should print space +[Hera] [HADES][TEST ] [KRELTSC: 3153606267] Running EMIT.newline: 10 EMIT + +[Hera] [HADES][TEST ] [KRELTSC: 3154520292] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3155887560] Expected: Should print newline +[Hera] [HADES][TEST ] [KRELTSC: 3156797364] Running EMIT.high_ascii: 127 EMIT CR +[Hera]  +[Hera] [HADES][TEST ] [KRELTSC: 3157972398] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3159374841] Expected: Should print DEL char +[Hera] [HADES][TEST ] [KRELTSC: 3160250961] Running EMIT.truncation: 321 EMIT CR +[Hera] A +[Hera] [HADES][TEST ] [KRELTSC: 3161450271] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3162846078] Expected: Should truncate to low byte +[Hera] [HADES][TEST ] [KRELTSC: 3163772031] Running EMIT.negative: -1 EMIT CR +[Hera] ÿ +[Hera] [HADES][TEST ] [KRELTSC: 3164940282] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3166301670] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 3167193666] Running EMIT.sequence: 72 EMIT 73 EMIT 10 EMIT +[Hera] HI +[Hera] [HADES][TEST ] [KRELTSC: 3168456249] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3169865349] Expected: Should print: HI +[Hera] [HADES][TEST ] [KRELTSC: 3170664966] Running EMIT.empty_stack: EMIT +[Hera] [HADES][TEST ] [KRELTSC: 3171576177] Expected error occurred +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3173037966] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3173956821] EMIT: 10 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3174935463] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3176005434] Testing word: KEY +[Hera] [HADES][TEST ] [KRELTSC: 3176739573] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3177621804] KEY: 0 passed, 0 failed, 4 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3178572306] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3179656284] Testing word: ?KEY +[Hera] [HADES][TEST ] [KRELTSC: 3180412977] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3181192392] ?KEY: 0 passed, 0 failed, 3 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3182171769] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3183246171] Testing word: TYPE +[Hera] [HADES][TEST ] [KRELTSC: 3183987198] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3184780641] Running TYPE.basic_string: HERE S" Hello" DUP >R HERE SWAP CM +[Hera] Hello +[Hera] [HADES][TEST ] [KRELTSC: 3186349530] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3187771671] Expected: Should print: Hello +[Hera] [HADES][TEST ] [KRELTSC: 3188612805] Running TYPE.empty_string: HERE 0 TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 3189611019] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3191030787] Expected: Should print nothing +[Hera] [HADES][TEST ] [KRELTSC: 3191901216] Running TYPE.single_char: HERE 65 OVER C! 1 TYPE CR +[Hera] A +[Hera] [HADES][TEST ] [KRELTSC: 3193273167] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3194657739] Expected: Should print: A +[Hera] [HADES][TEST ] [KRELTSC: 3195506853] Running TYPE.numbers: HERE S" 12345" DUP >R HERE SWAP CMOVE H +[Hera] 12345 +[Hera] [HADES][TEST ] [KRELTSC: 3197075406] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3198449772] Expected: Should print: 12345 +[Hera] [HADES][TEST ] [KRELTSC: 3199313628] Running TYPE.zero_length: PAD 0 TYPE +[Hera] [HADES][TEST ] [KRELTSC: 3200249724] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3201577386] Expected: Should handle zero length +[Hera] [HADES][TEST ] [KRELTSC: 3202503969] Running TYPE.one_item: PAD TYPE +[Hera] [HADES][ERROR] [KRELTSC: 3203416335] TYPE: Data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3204235524] Expected error occurred +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3205728246] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3206666820] Running TYPE.empty_stack: TYPE +[Hera] [HADES][ERROR] [KRELTSC: 3207519042] TYPE: Data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3208295685] Expected error occurred +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3209791977] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3210712071] TYPE: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3211684287] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3212731368] Testing word: COUNT +[Hera] [HADES][TEST ] [KRELTSC: 3213494697] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3214294608] Running COUNT.basic: HERE S" Test" DROP C@ HERE 1+ SWAP COUNT +[Hera] 0 85 +[Hera] [HADES][TEST ] [KRELTSC: 3215847810] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3217243470] Expected: Should show length and addr+1 +[Hera] [HADES][TEST ] [KRELTSC: 3218198235] Running COUNT.empty: HERE 0 OVER C! COUNT . . CR +[Hera] 0 126 +[Hera] [HADES][TEST ] [KRELTSC: 3219558594] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3220919625] Expected: Should handle empty string +[Hera] [HADES][TEST ] [KRELTSC: 3221813868] Running COUNT.max_length: HERE 255 OVER C! COUNT . . CR +[Hera] 255 126 +[Hera] [HADES][TEST ] [KRELTSC: 3223227756] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3224556657] Expected: Should handle max length +[Hera] [HADES][TEST ] [KRELTSC: 3225477717] Running COUNT.zero_addr_plus_one: HERE COUNT SWAP 1- = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3226920627] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3228329517] Expected: Should increment address +[Hera] [HADES][TEST ] [KRELTSC: 3229236969] Running COUNT.empty_stack: COUNT +[Hera] [HADES][ERROR] [KRELTSC: 3230141334] COUNT: Data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3230952291] Expected error occurred +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3232434702] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3233382516] COUNT: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3234371112] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3235463133] Testing word: EXPECT +[Hera] [HADES][TEST ] [KRELTSC: 3236223585] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3236989812] Running EXPECT.zero_length: PAD 0 EXPECT +[Hera] [HADES][TEST ] [KRELTSC: 3238220034] Test passed +[Hera] [HADES][TEST ] Testing EXPECT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3239610696] Expected: Should handle zero length +[Hera] [HADES][TEST ] [KRELTSC: 3240534843] Running EXPECT.one_item: PAD EXPECT +[Hera] [HADES][TEST ] [KRELTSC: 3241497000] Expected error occurred +[Hera] [HADES][TEST ] Testing EXPECT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3243008874] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3243938313] Running EXPECT.empty_stack: EXPECT +[Hera] [HADES][TEST ] [KRELTSC: 3244854606] Expected error occurred +[Hera] [HADES][TEST ] Testing EXPECT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3246319104] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3247235313] EXPECT: 3 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3248208978] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3249274077] Testing word: SPAN +[Hera] [HADES][TEST ] [KRELTSC: 3250010337] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3250797102] Running SPAN.zero_input: PAD 0 EXPECT SPAN @ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3252167583] Test passed +[Hera] [HADES][TEST ] Testing SPAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3253543104] Expected: Should show zero +[Hera] [HADES][TEST ] [KRELTSC: 3254372205] Running SPAN.variable_test: SPAN @ SPAN @ = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3255727482] Test passed +[Hera] [HADES][TEST ] Testing SPAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3257097732] Expected: Should be consistent +[Hera] [HADES][TEST ] [KRELTSC: 3257983428] Running SPAN.address_test: SPAN 0<> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3259226796] Test passed +[Hera] [HADES][TEST ] Testing SPAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3260605572] Expected: Should be valid address +[Hera] [HADES][TEST ] [KRELTSC: 3261499227] SPAN: 3 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3262447230] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3263530935] Testing word: WORD +[Hera] [HADES][TEST ] [KRELTSC: 3264226518] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3264990015] Running WORD.empty_input: BL WORD COUNT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3266687403] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3268053831] Expected: Should handle empty input +[Hera] [HADES][TEST ] [KRELTSC: 3268972098] Running WORD.space_delim: 32 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3269955948] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3271340184] Expected: Should use space as delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3272278695] Running WORD.newline_delim: 10 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3273235245] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3274601001] Expected: Should use newline as delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3275558790] Running WORD.tab_delim: 9 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3276474873] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3277853376] Expected: Should use tab as delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3278782626] Running WORD.comma_delim: 44 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3279743880] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3281130006] Expected: Should use comma as delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3282073011] Running WORD.skip_leading: BL WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3283044807] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3284447145] Expected: Should skip leading spaces +[Hera] [HADES][TEST ] [KRELTSC: 3285364950] Running WORD.single_char: BL WORD COUNT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3286660692] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3288041988] Expected: Should parse single character +[Hera] [HADES][TEST ] [KRELTSC: 3288971007] Running WORD.long_word: BL WORD COUNT 0 > . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3290263116] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3291654639] Expected: Should parse long word +[Hera] [HADES][TEST ] [KRELTSC: 3292544052] Running WORD.zero_delim: 0 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3293502366] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3294887694] Expected: Should handle null delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3295841808] Running WORD.high_ascii: 127 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3296793444] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3298100001] Expected: Should handle DEL delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3298995588] Running WORD.count_format: BL WORD C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3300270897] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3301644507] Expected: Should have count byte +[Hera] [HADES][TEST ] [KRELTSC: 3302494524] Running WORD.count_value: BL WORD COUNT SWAP DROP . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3303898794] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3305267805] Expected: Should return count +[Hera] [HADES][TEST ] [KRELTSC: 3306095016] Running WORD.empty_stack: WORD +[Hera] [HADES][TEST ] [KRELTSC: 3307012212] Expected error occurred +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3308524632] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3309479418] Running WORD.multi_delim: BL WORD DROP BL WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3310570473] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3311978838] Expected: Should handle multiple parses +[Hera] [HADES][TEST ] [KRELTSC: 3312902796] WORD: 14 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3313911342] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3314934294] Testing word: BASE_OUTPUT +[Hera] [HADES][TEST ] [KRELTSC: 3315730236] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3316515216] Running BASE_OUTPUT.decimal: 10 BASE ! 255 . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 3317810874] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3319230327] Expected: Should print: 255 +[Hera] [HADES][TEST ] [KRELTSC: 3320076501] Running BASE_OUTPUT.hex: 16 BASE ! 255 . CR +[Hera] 597 +[Hera] [HADES][TEST ] [KRELTSC: 3321336795] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3322760763] Expected: Should print: FF +[Hera] [HADES][TEST ] [KRELTSC: 3323569662] Running BASE_OUTPUT.octal: 8 BASE ! 64 . CR +[Hera] 52 +[Hera] [HADES][TEST ] [KRELTSC: 3324832812] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3326244201] Expected: Should print: 100 +[Hera] [HADES][TEST ] [KRELTSC: 3327047850] Running BASE_OUTPUT.binary: 5 2 BASE ! . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 3328319946] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3329702586] Expected: Should print: 101 +[Hera] [HADES][TEST ] [KRELTSC: 3330509427] Running BASE_OUTPUT.base_restore: BASE @ DECIMAL 255 16 BA +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 3331975080] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3333384012] Expected: Should restore base +[Hera] [HADES][TEST ] [KRELTSC: 3334259859] BASE_OUTPUT: 5 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3335291190] ▶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3336367818] Testing word: FORMAT_COMBO +[Hera] [HADES][TEST ] [KRELTSC: 3337197738] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3337966275] Running FORMAT_COMBO.number_space_number: DECIMAL 42 . SPACE +[Hera] 42 [HADES][INFO ] [KRELTSC: 3339455238] L8[TABLE]: Config 0 → 1 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 43 +[Hera] [HADES][TEST ] [KRELTSC: 3340687980] Test passed +[Hera] [HADES][TEST ] Testing FORMAT_COMBO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3342125094] Expected: Should format: 42 43 +[Hera] [HADES][TEST ] [KRELTSC: 3342984456] Running FORMAT_COMBO.multi_line: DECIMAL 1 . CR 2 . CR 3 . CR +[Hera] 1 +[Hera] 2 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 3344908308] Test passed +[Hera] [HADES][TEST ] Testing FORMAT_COMBO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3346341957] Expected: Should print on separate lines +[Hera] [HADES][TEST ] [KRELTSC: 3347257872] Running FORMAT_COMBO.indented: DECIMAL 5 SPACES 42 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3348713886] Test passed +[Hera] [HADES][TEST ] Testing FORMAT_COMBO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3350179224] Expected: Should indent number +[Hera] [HADES][TEST ] [KRELTSC: 3351053307] Running FORMAT_COMBO.table_format: DECIMAL 1 . 3 SPACES 10 . +[Hera] 1 10 100 +[Hera] [HADES][TEST ] [KRELTSC: 3352609848] Test passed +[Hera] [HADES][TEST ] Testing FORMAT_COMBO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3354043749] Expected: Should format table +[Hera] [HADES][TEST ] [KRELTSC: 3354903237] FORMAT_COMBO: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3355959390] === I/O Words Summary: 0 passed, 0 failed, 0 skipped, 0 errors +[Hera] [HADES][INFO ] [KRELTSC: 3357044607] +[Hera] === Testing Module: Block Words === +[Hera] [HADES][INFO ] [KRELTSC: 3358213215] Running Block Words Tests (Module 16)... +[Hera] [HADES][TEST ] [KRELTSC: 3359151327] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3360257439] Testing word: BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3360950985] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3361760703] Running BLOCK.basic: 1 BLOCK DUP . CR +[Hera] 5238784 +[Hera] [HADES][TEST ] [KRELTSC: 3363876012] Test passed +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3365240823] Expected: Should return block address +[Hera] [HADES][TEST ] [KRELTSC: 3366160875] Running BLOCK.zero_block: 0 BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3367075845] Expected error occurred +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3368545971] Expected: Should handle block 0 +[Hera] [HADES][TEST ] [KRELTSC: 3369442566] Running BLOCK.large_block: 65536 BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3370433136] Expected error occurred +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3371927475] Expected: Should handle large number +[Hera] [HADES][TEST ] [KRELTSC: 3372851055] Running BLOCK.negative: -1 BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3373751157] Expected error occurred +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3375225336] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 3376117017] Running BLOCK.empty_stack: BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3376987131] Expected error occurred +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3378454380] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3379377519] BLOCK: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3380314308] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3381445872] Testing word: BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3382225875] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3383023875] Running BUFFER.basic: 1 BUFFER DUP . CR +[Hera] 5238784 +[Hera] [HADES][TEST ] [KRELTSC: 3384849720] Test passed +[Hera] [HADES][TEST ] Testing BUFFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3386226585] Expected: Should return buffer address +[Hera] [HADES][TEST ] [KRELTSC: 3387163500] Running BUFFER.zero_block: 0 BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3388088235] Expected error occurred +[Hera] [HADES][TEST ] Testing BUFFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3389588412] Expected: Should handle block 0 +[Hera] [HADES][TEST ] [KRELTSC: 3390475893] Running BUFFER.flush_dirty: 2 BLOCK 1+ 2 BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3391565142] Test passed +[Hera] [HADES][TEST ] Testing BUFFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3392974305] Expected: Should flush if dirty +[Hera] [HADES][TEST ] [KRELTSC: 3393836082] Running BUFFER.empty_stack: BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3394741245] Expected error occurred +[Hera] [HADES][TEST ] Testing BUFFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3396205134] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3397150197] BUFFER: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3398109309] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3399174534] Testing word: UPDATE +[Hera] [HADES][TEST ] [KRELTSC: 3399931227] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3400701255] Running UPDATE.basic: 1 BLOCK UPDATE +[Hera] [HADES][TEST ] [KRELTSC: 3401919675] Test passed +[Hera] [HADES][TEST ] Testing UPDATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3403286838] Expected: Should mark block dirty +[Hera] [HADES][TEST ] [KRELTSC: 3404147187] Running UPDATE.multiple: 1 BLOCK UPDATE UPDATE +[Hera] [HADES][TEST ] [KRELTSC: 3405165813] Test passed +[Hera] [HADES][TEST ] Testing UPDATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3406561914] Expected: Should handle multiple updates +[Hera] [HADES][TEST ] [KRELTSC: 3407490408] Running UPDATE.no_block: 0 SCR ! UPDATE +[Hera] [HADES][TEST ] [KRELTSC: 3408556032] Expected error occurred +[Hera] [HADES][TEST ] Testing UPDATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3410055957] Expected: Should error: blk=0 is invalid +[Hera] [HADES][TEST ] [KRELTSC: 3410966622] UPDATE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3411895116] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3413144763] Testing word: SAVE-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3413978988] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3414765879] Running SAVE-BUFFERS.basic: SAVE-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3416101143] Test passed +[Hera] [HADES][TEST ] Testing SAVE-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3417536178] Expected: Should flush all buffers +[Hera] [HADES][TEST ] [KRELTSC: 3418427061] Running SAVE-BUFFERS.dirty_blocks: 1 BLOCK UPDATE SAVE-BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3419620743] Test passed +[Hera] [HADES][TEST ] Testing SAVE-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3421057794] Expected: Should save dirty blocks +[Hera] [HADES][TEST ] [KRELTSC: 3421903968] Running SAVE-BUFFERS.no_dirty: SAVE-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3422886936] Test passed +[Hera] [HADES][TEST ] Testing SAVE-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3424335915] Expected: Should handle no dirty blocks +[Hera] [HADES][TEST ] [KRELTSC: 3425312310] SAVE-BUFFERS: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3426319701] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3427435452] Testing word: EMPTY-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3428257560] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3429037122] Running EMPTY-BUFFERS.basic: EMPTY-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3430135506] Test passed +[Hera] [HADES][TEST ] Testing EMPTY-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3431562645] Expected: Should invalidate all buffers +[Hera] [HADES][TEST ] [KRELTSC: 3432499455] Running EMPTY-BUFFERS.after_use: 1 BLOCK EMPTY-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3433578393] Test passed +[Hera] [HADES][TEST ] Testing EMPTY-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3434986989] Expected: Should invalidate used buffers +[Hera] [HADES][TEST ] [KRELTSC: 3435901770] Running EMPTY-BUFFERS.dirty_blocks: 1 BLOCK UPDATE EMPTY-BUFF +[Hera] [HADES][TEST ] [KRELTSC: 3437039067] Test passed +[Hera] [HADES][TEST ] Testing EMPTY-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3438463560] Expected: Should handle dirty blocks +[Hera] [HADES][TEST ] [KRELTSC: 3439365342] EMPTY-BUFFERS: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3440379222] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3441447261] Testing word: FLUSH +[Hera] [HADES][TEST ] [KRELTSC: 3442156011] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3442945317] Running FLUSH.basic: FLUSH +[Hera] [HADES][TEST ] [KRELTSC: 3443797644] Test passed +[Hera] [HADES][TEST ] Testing FLUSH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3445169952] Expected: Should save and invalidate buffers +[Hera] [HADES][TEST ] [KRELTSC: 3446158716] Running FLUSH.dirty_blocks: 1 BLOCK UPDATE FLUSH +[Hera] [HADES][TEST ] [KRELTSC: 3447246453] Test passed +[Hera] [HADES][TEST ] Testing FLUSH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3448655532] Expected: Should flush dirty blocks +[Hera] [HADES][TEST ] [KRELTSC: 3449560926] Running FLUSH.after_empty: EMPTY-BUFFERS FLUSH +[Hera] [HADES][TEST ] [KRELTSC: 3450597003] Test passed +[Hera] [HADES][TEST ] Testing FLUSH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3451991760] Expected: Should handle empty buffers +[Hera] [HADES][TEST ] [KRELTSC: 3452927100] FLUSH: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3453854922] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3454914309] Testing word: LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3455639565] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3456405666] Running LOAD.basic: 1 LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3457447959] Test passed +[Hera] [HADES][TEST ] Testing LOAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3458814555] Expected: Should interpret block 1 +[Hera] [HADES][TEST ] [KRELTSC: 3459693048] Running LOAD.zero_block: 0 LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3460572654] Expected error occurred +[Hera] [HADES][TEST ] Testing LOAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3462024804] Expected: Should handle block 0 +[Hera] [HADES][TEST ] [KRELTSC: 3462892713] Running LOAD.nonexistent: 9999 LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3463839477] Expected error occurred +[Hera] [HADES][TEST ] Testing LOAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3465343539] Expected: Should handle missing block +[Hera] [HADES][TEST ] [KRELTSC: 3466280664] Running LOAD.empty_stack: LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3467163882] Expected error occurred +[Hera] [HADES][TEST ] Testing LOAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3468592974] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3469497423] LOAD: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3470397483] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3471467664] Testing word: LIST +[Hera] [HADES][TEST ] [KRELTSC: 3472184877] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3472973868] Running LIST.basic: 1 LIST + +[Hera] Block 1 + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + + + +[Hera] [HADES][TEST ] [KRELTSC: 3491202708] Test passed +[Hera] [HADES][TEST ] Testing LIST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3492582828] Expected: Should display block 1 +[Hera] [HADES][TEST ] [KRELTSC: 3493456806] Running LIST.zero_block: 0 LIST +[Hera] [HADES][TEST ] [KRELTSC: 3494352477] Expected error occurred +[Hera] [HADES][TEST ] Testing LIST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3495819684] Expected: Should handle block 0 +[Hera] [HADES][TEST ] [KRELTSC: 3496718988] Running LIST.nonexistent: 9999 LIST +[Hera] [HADES][TEST ] [KRELTSC: 3497633496] Expected error occurred +[Hera] [HADES][TEST ] Testing LIST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3499095411] Expected: Should handle missing block +[Hera] [HADES][TEST ] [KRELTSC: 3500006076] Running LIST.empty_stack: LIST +[Hera] [HADES][TEST ] [KRELTSC: 3500875707] Expected error occurred +[Hera] [HADES][TEST ] Testing LIST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3502307172] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3503226552] LIST: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3504149712] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3505257336] Testing word: SCR +[Hera] [HADES][TEST ] [KRELTSC: 3505966485] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3506764695] Running SCR.basic: SCR @ . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 3507952854] Test passed +[Hera] [HADES][TEST ] Testing SCR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3509300151] Expected: Should show current block +[Hera] [HADES][TEST ] [KRELTSC: 3510172113] Running SCR.after_list: 1 LIST SCR @ . CR + +[Hera] Block 1 + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + + + +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 3528551292] Test passed +[Hera] [HADES][TEST ] Testing SCR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3529936389] Expected: Should update after LIST +[Hera] [HADES][TEST ] [KRELTSC: 3530813223] Running SCR.after_load: 1 LOAD SCR @ . CR +[Hera] [HADES][TEST ] [KRELTSC: 3531827313] Test passed +[Hera] [HADES][TEST ] Testing SCR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3533191851] Expected: Should update after LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3534121689] SCR: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3535061985] ▶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3536150898] Testing word: THRU +[Hera] [HADES][TEST ] [KRELTSC: 3536909733] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3537708090] Running THRU.single_block: 1 1 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3538866009] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3540242202] Expected: Should load single block (1-1) +[Hera] [HADES][TEST ] [KRELTSC: 3541207341] Running THRU.ascending: 1 3 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3542148561] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3543482502] Expected: Should load blocks 1-3 in order +[Hera] [HADES][TEST ] [KRELTSC: 3544433949] Running THRU.descending: 3 1 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3545356920] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3546760917] Expected: Should auto-swap and load 1-3 +[Hera] [HADES][TEST ] [KRELTSC: 3547717908] Running THRU.same_block: 2 2 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3548660577] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3550032192] Expected: Should load single block (2-2) +[Hera] [HADES][TEST ] [KRELTSC: 3550986474] Running THRU.zero_start: 0 3 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3551940000] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3553411932] Expected: Should reject block 0 as start +[Hera] [HADES][TEST ] [KRELTSC: 3554375937] Running THRU.zero_end: 1 0 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3555260835] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3556709898] Expected: Should reject block 0 as end +[Hera] [HADES][TEST ] [KRELTSC: 3557636250] Running THRU.both_zero: 0 0 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3558516087] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3559969308] Expected: Should reject both blocks as 0 +[Hera] [HADES][TEST ] [KRELTSC: 3560906748] Running THRU.invalid_start: 9999 10000 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3561879972] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3563382207] Expected: Should reject invalid start block +[Hera] [HADES][TEST ] [KRELTSC: 3564303309] Running THRU.invalid_end: 1 9999 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3565226532] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3566700732] Expected: Should reject invalid end block +[Hera] [HADES][TEST ] [KRELTSC: 3567668349] Running THRU.both_invalid: 9998 9999 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3568603626] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3570067893] Expected: Should reject both invalid blocks +[Hera] [HADES][TEST ] [KRELTSC: 3571016001] Running THRU.empty_stack: THRU +[Hera] [HADES][TEST ] [KRELTSC: 3571863582] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3573352188] Expected: Should cause stack underflow (no args) +[Hera] [HADES][TEST ] [KRELTSC: 3574450866] Running THRU.one_arg: 1 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3575309703] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3576730563] Expected: Should cause stack underflow (one arg) +[Hera] [HADES][TEST ] [KRELTSC: 3577720335] Running THRU.small_range: 1 2 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3578658447] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3580056585] Expected: Should load 2-block range +[Hera] [HADES][TEST ] [KRELTSC: 3581056143] Running THRU.medium_range: 1 5 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3582000534] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3583351548] Expected: Should load 5-block range +[Hera] [HADES][TEST ] [KRELTSC: 3584264838] Running THRU.negative_start: -1 3 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3585184890] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3586648107] Expected: Should handle negative start +[Hera] [HADES][TEST ] [KRELTSC: 3587547873] Running THRU.negative_end: 1 -3 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3588460890] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3589935300] Expected: Should handle negative end +[Hera] [HADES][TEST ] [KRELTSC: 3590853189] Running THRU.both_negative: -3 -1 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3591785169] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3593251704] Expected: Should handle both negative +[Hera] [HADES][TEST ] [KRELTSC: 3594202542] THRU: 17 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3595214259] === Block Words Summary: 0 passed, 0 failed, 0 skipped, 0 error +[Hera] [HADES][INFO ] [KRELTSC: 3596304453] +[Hera] === Testing Module: Dictionary Words === +[Hera] [HADES][INFO ] [KRELTSC: 3597503007] Running Dictionary Words Tests (Module 4)... +[Hera] [HADES][TEST ] [KRELTSC: 3598485093] Testing word: HERE +[Hera] [HADES][TEST ] [KRELTSC: 3599212911] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3600004296] Running HERE.basic: HERE HERE = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3601235106] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3602629779] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 3603482148] Running HERE.after_comma: HERE 42 , HERE SWAP - 1 CELLS = 0 S +[Hera] [HADES][TEST ] [KRELTSC: 3604731501] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3606088941] Expected: Asserts HERE advances by exactly 1 CELLS (8 bytes +[Hera] [HADES][TEST ] [KRELTSC: 3607152108] Running HERE.after_c_comma: HERE 65 C, HERE SWAP - . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 3608530149] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3609884754] Expected: Should print: 1 +[Hera] [HADES][TEST ] [KRELTSC: 3610679016] Running HERE.after_allot: HERE 10 ALLOT HERE SWAP - . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 3612084756] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3613442658] Expected: Should print: 10 +[Hera] [HADES][TEST ] [KRELTSC: 3614255421] Running HERE.stability: HERE DUP HERE = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3615519474] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3616835649] Expected: Should be stable +[Hera] [HADES][TEST ] [KRELTSC: 3617665275] HERE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3618683901] Testing word: ALLOT +[Hera] [HADES][TEST ] [KRELTSC: 3619416801] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3620208333] Running ALLOT.basic: HERE 10 ALLOT HERE SWAP - . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 3621555399] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3622973130] Expected: Should print: 10 +[Hera] [HADES][TEST ] [KRELTSC: 3623808426] Running ALLOT.zero: HERE 0 ALLOT HERE SWAP - . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3625209840] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3626557641] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 3627378573] Running ALLOT.negative: HERE -4 ALLOT HERE SWAP - . CR +[Hera] -4 +[Hera] [HADES][TEST ] [KRELTSC: 3628756656] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3630127746] Expected: Should print: -4 +[Hera] [HADES][TEST ] [KRELTSC: 3630948930] Running ALLOT.large: HERE 100 ALLOT HERE SWAP - . CR +[Hera] 100 +[Hera] [HADES][TEST ] [KRELTSC: 3632321259] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3633640080] Expected: Should print: 100 +[Hera] [HADES][TEST ] [KRELTSC: 3634465443] Running ALLOT.after_use: ALIGN HERE 10 ALLOT 42 OVER ! @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3635954931] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3637341414] Expected: Should store and retrieve +[Hera] [HADES][TEST ] [KRELTSC: 3638334945] Running ALLOT.empty_stack: ALLOT +[Hera] [HADES][TEST ] [KRELTSC: 3639248067] Expected error occurred +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3640726236] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3641632218] ALLOT: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3642573333] Testing word: , +[Hera] [HADES][TEST ] [KRELTSC: 3643267110] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3644058012] Running ,.basic: 42 , HERE 1 CELLS - @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3645393906] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3646726398] Expected: Should compile 42 +[Hera] [HADES][TEST ] [KRELTSC: 3647558334] Running ,.negative: -999 , HERE 1 CELLS - @ . CR +[Hera] [HADES][INFO ] [KRELTSC: 3648668919] L8[TABLE]: Config 1 → 2 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 3650187471] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3651536721] Expected: Should compile -999 +[Hera] [HADES][TEST ] [KRELTSC: 3652348854] Running ,.zero: 0 , HERE 1 CELLS - @ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3653639661] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3654972636] Expected: Should compile 0 +[Hera] [HADES][TEST ] [KRELTSC: 3655795836] Running ,.max_int: 2147483647 , HERE 1 CELLS - @ . CR +[Hera] 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 3657237927] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3658576635] Expected: Should compile max int +[Hera] [HADES][TEST ] [KRELTSC: 3659444208] Running ,.min_int: -2147483648 , HERE 1 CELLS - @ . CR +[Hera] -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 3660843753] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3662186976] Expected: Should compile min int +[Hera] [HADES][TEST ] [KRELTSC: 3663028299] Running ,.multiple: 10 , 20 , HERE 1 CELLS - @ . HERE 1 CELLS +[Hera] 20 20 +[Hera] [HADES][TEST ] [KRELTSC: 3664585113] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3665944191] Expected: Should compile multiple +[Hera] [HADES][TEST ] [KRELTSC: 3666825708] Running ,.empty_stack: , +[Hera] [HADES][TEST ] [KRELTSC: 3667675284] Expected error occurred +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3669135729] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3670067604] ,: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3671019135] Testing word: C, +[Hera] [HADES][TEST ] [KRELTSC: 3671742333] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3672549006] Running C,.basic: 65 C, HERE 1 - C@ . CR +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 3673824378] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3675174027] Expected: Should compile byte 65 +[Hera] [HADES][TEST ] [KRELTSC: 3676030407] Running C,.zero: 0 C, HERE 1 - C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3677303910] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3678669078] Expected: Should compile byte 0 +[Hera] [HADES][TEST ] [KRELTSC: 3679506327] Running C,.high_byte: 255 C, HERE 1 - C@ . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 3680879811] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3682215495] Expected: Should compile byte 255 +[Hera] [HADES][TEST ] [KRELTSC: 3683114001] Running C,.truncation: 256 C, HERE 1 - C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3684390990] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3685724910] Expected: Should truncate to 0 +[Hera] [HADES][TEST ] [KRELTSC: 3686577657] Running C,.negative: -1 C, HERE 1 - C@ . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 3687902715] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3689214354] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 3690078567] Running C,.multiple: 65 C, 66 C, HERE 2 - C@ . HERE 1 - C@ . +[Hera] 65 66 +[Hera] [HADES][TEST ] [KRELTSC: 3691645839] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3693008760] Expected: Should compile multiple +[Hera] [HADES][TEST ] [KRELTSC: 3693872196] Running C,.empty_stack: C, +[Hera] [HADES][TEST ] [KRELTSC: 3694719672] Expected error occurred +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3696247044] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3697169217] C,: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3698072553] Testing word: 2, +[Hera] [HADES][TEST ] [KRELTSC: 3698794323] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3699601689] Running 2,.basic: 12345 67890 2, HERE 2 CELLS - 2@ . . CR +[Hera] 67890 12345 +[Hera] [HADES][TEST ] [KRELTSC: 3701082252] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3702542193] Expected: Should compile double +[Hera] [HADES][TEST ] [KRELTSC: 3703433181] Running 2,.zero: 0 0 2, HERE 2 CELLS - 2@ . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 3704789319] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3706156272] Expected: Should compile zero double +[Hera] [HADES][TEST ] [KRELTSC: 3707057298] Running 2,.negative: -1000 -2000 2, HERE 2 CELLS - 2@ . . CR +[Hera] -2000 -1000 +[Hera] [HADES][TEST ] [KRELTSC: 3708576669] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3709934193] Expected: Should compile negative double +[Hera] [HADES][TEST ] [KRELTSC: 3710822703] Running 2,.large: 2147483647 -1 2, HERE 2 CELLS - 2@ . . CR +[Hera] -1 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 3712344699] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3713677611] Expected: Should compile large double +[Hera] [HADES][TEST ] [KRELTSC: 3714589158] Running 2,.one_item: 42 2, +[Hera] [HADES][TEST ] [KRELTSC: 3715451901] Expected error occurred +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3716856696] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3717766227] Running 2,.empty_stack: 2, +[Hera] [HADES][TEST ] [KRELTSC: 3718587705] Expected error occurred +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3720023286] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3720959235] 2,: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3721875759] Testing word: PAD +[Hera] [HADES][TEST ] [KRELTSC: 3722618508] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3723359703] Running PAD.basic: PAD PAD = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3724569114] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3725905155] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 3726734025] Running PAD.different_from_here: PAD HERE = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3728012232] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3729344682] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 3730161645] Running PAD.stability: PAD DUP PAD = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3731400540] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3732815247] Expected: Should be stable +[Hera] [HADES][TEST ] [KRELTSC: 3733617972] Running PAD.usable: PAD 42 OVER ! @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3734884944] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3736251603] Expected: Should be usable memory +[Hera] [HADES][TEST ] [KRELTSC: 3737178711] PAD: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3738100674] Testing word: SP@ +[Hera] [HADES][TEST ] [KRELTSC: 3738816228] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3739583820] Running SP@.depth_effect: 42 SP@ SWAP DROP SP@ = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3741066315] Test passed +[Hera] [HADES][TEST ] Testing SP@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3742427787] Expected: Should show stack effect +[Hera] [HADES][TEST ] [KRELTSC: 3743317935] Running SP@.empty_stack: DEPTH 0= SP@ AND . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3744590514] Test passed +[Hera] [HADES][TEST ] Testing SP@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3745983927] Expected: Should work on empty stack +[Hera] [HADES][TEST ] [KRELTSC: 3746863155] Running SP@.multiple_items: 1 2 3 SP@ SWAP DROP SWAP DROP SWA +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3748364928] Test passed +[Hera] [HADES][TEST ] Testing SP@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3749724027] Expected: Should track changes +[Hera] [HADES][TEST ] [KRELTSC: 3750571671] SP@: 3 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3751510980] Testing word: SP! +[Hera] [HADES][TEST ] [KRELTSC: 3752252490] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3753050721] Running SP!.basic_restore: 1 2 3 SP@ 4 5 6 DROP DROP DROP SP! +[Hera] 3 [HADES][TEST ] [KRELTSC: 3754648674] Test passed +[Hera] [HADES][TEST ] Testing SP! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3755829189] Expected: Should restore stack +[Hera] [HADES][TEST ] [KRELTSC: 3756696804] Running SP!.invalid_addr: 0 SP! +[Hera] [HADES][TEST ] [KRELTSC: 3757613181] Expected error occurred +[Hera] [HADES][TEST ] Testing SP! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3759040698] Expected: Should cause error +[Hera] [HADES][TEST ] [KRELTSC: 3759882084] Running SP!.empty_stack: SP! +[Hera] [HADES][TEST ] [KRELTSC: 3760744995] Expected error occurred +[Hera] [HADES][TEST ] Testing SP! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3762230346] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3763171209] SP!: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3764118225] Testing word: LATEST +[Hera] [HADES][TEST ] [KRELTSC: 3764887413] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3765678882] Running LATEST.basic: LATEST LATEST = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3767016393] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3768400860] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 3769204866] Running LATEST.stability: LATEST DUP LATEST = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3770548173] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3771919074] Expected: Should be stable +[Hera] [HADES][TEST ] [KRELTSC: 3772754454] LATEST: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3773704998] Testing word: COMPILATION +[Hera] [HADES][TEST ] [KRELTSC: 3774473787] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3775255092] Running COMPILATION.here_comma_sequence: HERE 10 , 20 , 30 , +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3776696889] Test passed +[Hera] [HADES][TEST ] Testing COMPILATION ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3778087299] Expected: Should advance HERE by 12 +[Hera] [HADES][TEST ] [KRELTSC: 3778998006] Running COMPILATION.mixed_compilation: HERE 42 , 65 C, 100 20 +[Hera] [HADES][INFO ] [KRELTSC: 3780507087] L8[TABLE]: Config 2 → 3 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3781968477] Test passed +[Hera] [HADES][TEST ] Testing COMPILATION ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3783399396] Expected: Should advance correctly +[Hera] [HADES][TEST ] [KRELTSC: 3784286331] Running COMPILATION.allot_comma_combo: HERE 10 ALLOT 99 , HER +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3785758242] Test passed +[Hera] [HADES][TEST ] Testing COMPILATION ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3787176666] Expected: Should combine allot and comma +[Hera] [HADES][TEST ] [KRELTSC: 3788118054] Running COMPILATION.pad_isolation: PAD 999 OVER ! HERE 42 , P +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3789583623] Test passed +[Hera] [HADES][TEST ] Testing COMPILATION ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3790989531] Expected: PAD should be isolated +[Hera] [HADES][TEST ] [KRELTSC: 3791912166] COMPILATION: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3792890073] Testing word: STACK_MGMT +[Hera] [HADES][TEST ] [KRELTSC: 3793687170] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3794457051] Running STACK_MGMT.sp_round_trip: 42 43 SP@ >R 44 45 R> SP! . +[Hera] 43 42 +[Hera] [HADES][TEST ] [KRELTSC: 3795962121] Test passed +[Hera] [HADES][TEST ] Testing STACK_MGMT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3797365698] Expected: Should print: 43 42 +[Hera] [HADES][TEST ] [KRELTSC: 3798186189] Running STACK_MGMT.depth_preservation: 1 2 3 DEPTH >R SP@ >R +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3799664904] Test passed +[Hera] [HADES][TEST ] Testing STACK_MGMT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3801124761] Expected: Should preserve depth +[Hera] [HADES][TEST ] [KRELTSC: 3802027488] STACK_MGMT: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3803076018] === Dictionary Words Summary: 0 passed, 0 failed, 0 skipped, 0 +[Hera] [HADES][INFO ] [KRELTSC: 3804185973] +[Hera] === Testing Module: Dictionary Manipulation Words === +[Hera] [HADES][INFO ] [KRELTSC: 3805473756] Running Dictionary Manipulation Words Tests (Module 14)... +[Hera] [HADES][TEST ] [KRELTSC: 3806556831] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3807657378] Testing word: CREATE +[Hera] [HADES][TEST ] [KRELTSC: 3808421358] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3809197686] Running CREATE.basic: CREATE test1 42 , test1 @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3811343592] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3812738517] Expected: Should create and store +[Hera] [HADES][TEST ] [KRELTSC: 3813609030] Running CREATE.empty_name: CREATE +[Hera] [HADES][TEST ] [KRELTSC: 3814559658] Expected error occurred +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3816046794] Expected: Should handle empty name +[Hera] [HADES][TEST ] [KRELTSC: 3816951453] Running CREATE.redefine_shadows: CREATE T 1 , CREATE T 2 , T +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 3818893197] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3820332432] Expected: Newest definition should win (prints 2) +[Hera] [HADES][TEST ] [KRELTSC: 3821362293] Running CREATE.duplicate: CREATE test2 CREATE test2 +[Hera] [HADES][TEST ] [KRELTSC: 3822930720] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3824271570] Expected: Should allow redefinition (latest shadows) +[Hera] [HADES][TEST ] [KRELTSC: 3825276588] CREATE: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3826308696] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3827411700] Testing word: FORGET +[Hera] [HADES][TEST ] [KRELTSC: 3828156969] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3828927732] Running FORGET.basic: CREATE temp1 FORGET temp1 +[Hera] [HADES][TEST ] [KRELTSC: 3830915256] Test passed +[Hera] [HADES][TEST ] Testing FORGET ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3832297623] Expected: Should forget word +[Hera] [HADES][TEST ] [KRELTSC: 3833127144] Running FORGET.nonexistent: FORGET nonexistent +[Hera] [HADES][TEST ] [KRELTSC: 3834269292] Expected error occurred +[Hera] [HADES][TEST ] Testing FORGET ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3835741707] Expected: Should handle missing word +[Hera] [HADES][TEST ] [KRELTSC: 3836655144] Running FORGET.protected: FORGET FORGET +[Hera] [HADES][TEST ] [KRELTSC: 3837647793] Expected error occurred +[Hera] [HADES][TEST ] Testing FORGET ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3839095848] Expected: Should protect system words +[Hera] [HADES][TEST ] [KRELTSC: 3840008571] FORGET: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3840949854] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3842078583] Testing word: FENCE +[Hera] [HADES][TEST ] [KRELTSC: 3842819463] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3843591906] Running FENCE.basic: CREATE fnc1 FENCE CREATE fnc2 FORGET fnc +[Hera] [HADES][TEST ] [KRELTSC: 3845475459] Test passed +[Hera] [HADES][TEST ] Testing FENCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3846843168] Expected: Should forget a word defined after FENCE +[Hera] [HADES][TEST ] [KRELTSC: 3847806039] Running FENCE.protects_older: CREATE fnc3 CREATE fnc4 FENCE F +[Hera] [HADES][TEST ] [KRELTSC: 3849504771] Expected error occurred +[Hera] [HADES][TEST ] Testing FENCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3850961478] Expected: Should refuse to forget a word defined before FEN +[Hera] [HADES][TEST ] [KRELTSC: 3852032625] Running FENCE.forget_latest_keeps_predecessor: CREATE fnc5 FE +[Hera] [HADES][TEST ] [KRELTSC: 3854037159] Test passed +[Hera] [HADES][TEST ] Testing FENCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3855409446] Expected: Forgetting the newest word must not disturb an ol +[Hera] [HADES][TEST ] [KRELTSC: 3856481853] FENCE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3857410893] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3858515724] Testing word: IMMEDIATE +[Hera] [HADES][TEST ] [KRELTSC: 3859274370] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3860057922] Running IMMEDIATE.basic: : test3 42 ; IMMEDIATE test3 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3862174470] Test passed +[Hera] [HADES][TEST ] Testing IMMEDIATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3863573826] Expected: Should execute immediately +[Hera] [HADES][TEST ] [KRELTSC: 3864478632] Running IMMEDIATE.already_immediate: : test4 43 ; IMMEDIATE I +[Hera] [HADES][TEST ] [KRELTSC: 3865879479] Test passed +[Hera] [HADES][TEST ] Testing IMMEDIATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3867275097] Expected: Should handle double immediate +[Hera] [HADES][TEST ] [KRELTSC: 3868264533] IMMEDIATE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3869367915] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3870462225] Testing word: FIND +[Hera] [HADES][TEST ] [KRELTSC: 3871199703] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3871947198] Running FIND.existing: FIND DUP . CR +[Hera] 35722304 +[Hera] [HADES][TEST ] [KRELTSC: 3873362787] Test passed +[Hera] [HADES][TEST ] Testing FIND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3874708845] Expected: Should find system word +[Hera] [HADES][TEST ] [KRELTSC: 3875572302] Running FIND.user_word: : test5 44 ; FIND test5 . CR +[Hera] 36056640 +[Hera] [HADES][TEST ] [KRELTSC: 3877207257] Test passed +[Hera] [HADES][TEST ] Testing FIND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3878595000] Expected: Should find user word +[Hera] [HADES][TEST ] [KRELTSC: 3879488781] Running FIND.nonexistent: FIND nonexistent . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3880759302] Test passed +[Hera] [HADES][TEST ] Testing FIND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3882156831] Expected: Should return 0 +[Hera] [HADES][TEST ] [KRELTSC: 3882956805] Running FIND.empty: FIND +[Hera] [HADES][TEST ] [KRELTSC: 3883821669] Expected error occurred +[Hera] [HADES][TEST ] Testing FIND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3885300678] Expected: Should error (no token) +[Hera] [HADES][TEST ] [KRELTSC: 3886209873] FIND: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3887128833] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3888258381] Testing word: DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3889062912] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3889836678] Running DEFINITIONS.basic: FORTH DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3890929707] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3892375032] Expected: Should set current to context +[Hera] [HADES][TEST ] [KRELTSC: 3893317470] Running DEFINITIONS.multiple: FORTH DEFINITIONS DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3894444540] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3895863909] Expected: Should be idempotent +[Hera] [HADES][TEST ] [KRELTSC: 3896749962] DEFINITIONS: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3897747063] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3898834275] Testing word: SMUDGE +[Hera] [HADES][TEST ] [KRELTSC: 3899580300] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3900354780] Running SMUDGE.during_def: : test6 SMUDGE 45 ; +[Hera] [HADES][TEST ] [KRELTSC: 3901648758] Test passed +[Hera] [HADES][TEST ] Testing SMUDGE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3903041037] Expected: Should hide incomplete def +[Hera] [HADES][TEST ] [KRELTSC: 3903921693] Running SMUDGE.outside_def: SMUDGE +[Hera] [HADES][TEST ] [KRELTSC: 3904873728] Expected error occurred +[Hera] [HADES][TEST ] Testing SMUDGE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3906310632] Expected: Should error outside def +[Hera] [HADES][TEST ] [KRELTSC: 3907195341] SMUDGE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3908125599] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3909226251] Testing word: LATEST +[Hera] [HADES][TEST ] [KRELTSC: 3909961293] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3910800390] Running LATEST.basic: LATEST @ . CR +[Hera] 35803728 +[Hera] [HADES][TEST ] [KRELTSC: 3912119526] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3913459179] Expected: Should show latest word +[Hera] [HADES][TEST ] [KRELTSC: 3914339247] Running LATEST.after_def: : test7 46 ; LATEST @ . CR +[Hera] 35842912 +[Hera] [HADES][TEST ] [KRELTSC: 3916044636] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3917430048] Expected: Should update after def +[Hera] [HADES][TEST ] [KRELTSC: 3918291741] Running LATEST.after_forget: CREATE test8 FORGET test8 LATEST +[Hera] 35842912 +[Hera] [HADES][TEST ] [KRELTSC: 3920074704] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3921500919] Expected: Should update after forget +[Hera] [HADES][TEST ] [KRELTSC: 3922434327] LATEST: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3923410995] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3924490920] Testing word: >BODY +[Hera] [HADES][TEST ] [KRELTSC: 3925223253] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3926042127] Running >BODY.basic: CREATE test9 ' test9 >BODY . CR +[Hera] 36058152 +[Hera] [HADES][TEST ] [KRELTSC: 3928041852] Test passed +[Hera] [HADES][TEST ] Testing >BODY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3929431632] Expected: Should get param field +[Hera] [HADES][TEST ] [KRELTSC: 3930280872] Running >BODY.variable: VARIABLE var1 ' var1 >BODY . CR +[Hera] 36058616 +[Hera] [HADES][TEST ] [KRELTSC: 3932187063] Test passed +[Hera] [HADES][TEST ] Testing >BODY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3933561849] Expected: Should get var storage +[Hera] [HADES][TEST ] [KRELTSC: 3934415310] Running >BODY.nonexistent: ' NONEXISTENT >BODY +[Hera] [HADES][ERROR] [KRELTSC: 3935417073] ': word 'NONEXISTENT' not found +[Hera] [HADES][TEST ] [KRELTSC: 3936451575] Expected error occurred +[Hera] [HADES][TEST ] Testing >BODY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3937920441] Expected: Should handle missing word +[Hera] [HADES][TEST ] [KRELTSC: 3938829636] >BODY: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3939742317] ▶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3940837257] Testing word: HIDDEN +[Hera] [HADES][TEST ] [KRELTSC: 3941567028] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3942338295] Running HIDDEN.basic: : test10 HIDDEN 47 ; +[Hera] [HADES][TEST ] [KRELTSC: 3943730259] Test passed +[Hera] [HADES][TEST ] Testing HIDDEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3945139506] Expected: Should hide word +[Hera] [HADES][TEST ] [KRELTSC: 3945990951] Running HIDDEN.outside_def: HIDDEN +[Hera] [HADES][TEST ] [KRELTSC: 3946948950] Expected error occurred +[Hera] [HADES][TEST ] Testing HIDDEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3948435204] Expected: Should error outside def +[Hera] [HADES][TEST ] [KRELTSC: 3949325604] HIDDEN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3950282994] === Dictionary Manipulation Words Summary: 0 passed, 0 failed, +[Hera] [HADES][INFO ] [KRELTSC: 3951397359] +[Hera] === Testing Module: Vocabulary Words === +[Hera] [HADES][INFO ] [KRELTSC: 3952587492] Running Vocabulary Words Tests (Module 15)... +[Hera] [HADES][TEST ] [KRELTSC: 3953538435] ▶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 3954640305] Testing word: VOCABULARY +[Hera] [HADES][TEST ] [KRELTSC: 3955427343] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3956161797] Running VOCABULARY.basic: VOCABULARY TEST-VOC1 TEST-VOC1 DEFI +[Hera] [HADES][TEST ] [KRELTSC: 3961423074] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3962830032] Expected: Should create vocabulary +[Hera] [HADES][TEST ] [KRELTSC: 3963591576] Running VOCABULARY.create_and_switch: VOCABULARY MYVOC MYVOC +[Hera] 36063136 +[Hera] [HADES][TEST ] [KRELTSC: 3968554884] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3970000860] Expected: Should create and switch +[Hera] [HADES][TEST ] [KRELTSC: 3970876875] Running VOCABULARY.word_isolation: VOCABULARY ISOLATED ISOLAT +[Hera] [HADES][TEST ] [KRELTSC: 3978811494] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3979868004] Expected: Should create word in isolated vocab +[Hera] [HADES][TEST ] [KRELTSC: 3980627973] Running VOCABULARY.cross_vocab_access: VOCABULARY V1 V1 DEFIN +[Hera] 11 +[Hera] [HADES][TEST ] [KRELTSC: 3988472460] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3989531763] Expected: Should access word across vocabs +[Hera] [HADES][TEST ] [KRELTSC: 3990367647] Running VOCABULARY.multiple_vocabs: VOCABULARY VA VOCABULARY +[Hera] [HADES][TEST ] [KRELTSC: 3995470773] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3996795957] Expected: Should create multiple vocabs +[Hera] [HADES][TEST ] [KRELTSC: 3997601475] Running VOCABULARY.duplicate: VOCABULARY TESTVOC VOCABULARY T +[Hera] [HADES][ERROR] [KRELTSC: 3998880165] VOCABULARY: duplicate 'TESTVOC' +[Hera] [HADES][TEST ] [KRELTSC: 3999737343] Expected error occurred +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4001221602] Expected: Should handle duplicate +[Hera] [HADES][TEST ] [KRELTSC: 4002104652] Running VOCABULARY.empty_name: VOCABULARY +[Hera] [HADES][ERROR] [KRELTSC: 4003048119] VOCABULARY: missing name +[Hera] [HADES][TEST ] [KRELTSC: 4003870080] Expected error occurred +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4005401295] Expected: Should handle empty name +[Hera] [HADES][TEST ] [KRELTSC: 4006303896] VOCABULARY: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4007332455] ▶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 4008404337] Testing word: FORTH +[Hera] [HADES][TEST ] [KRELTSC: 4009113108] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4009884270] Running FORTH.basic: FORTH DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 4013618490] Test passed +[Hera] [HADES][TEST ] Testing FORTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4014954132] Expected: Should select FORTH vocab +[Hera] [HADES][TEST ] [KRELTSC: 4015821495] Running FORTH.persistence: FORTH : TEST1 42 ; TEST1 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4017339144] Test passed +[Hera] [HADES][TEST ] Testing FORTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4018725060] Expected: Should find word in FORTH +[Hera] [HADES][TEST ] [KRELTSC: 4019744715] Running FORTH.from_other: VOCABULARY OTHER-VOC OTHER-VOC FORT +[Hera] [HADES][TEST ] [KRELTSC: 4024546638] Test passed +[Hera] [HADES][TEST ] Testing FORTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4025903364] Expected: Should return to FORTH +[Hera] [HADES][TEST ] [KRELTSC: 4026634416] FORTH: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4027353897] ▶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 4028177286] Testing word: DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 4028971191] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4029830007] Running DEFINITIONS.basic: FORTH DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 4033634451] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4035099558] Expected: Should set current vocabulary +[Hera] [HADES][TEST ] [KRELTSC: 4036049199] Running DEFINITIONS.new_vocab: VOCABULARY TEST-VOC6 TEST-VOC6 +[Hera] [HADES][TEST ] [KRELTSC: 4040919162] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4042323222] Expected: Should set new current +[Hera] [HADES][TEST ] [KRELTSC: 4043148291] Running DEFINITIONS.word_creation: VOCABULARY TEST-VOC7 TEST- +[Hera] [HADES][TEST ] [KRELTSC: 4047969954] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4049352279] Expected: Should create in correct vocab +[Hera] [HADES][TEST ] [KRELTSC: 4050167646] DEFINITIONS: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4051018083] ▶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 4052074194] Testing word: CONTEXT +[Hera] [HADES][TEST ] [KRELTSC: 4052888952] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4053741783] Running CONTEXT.basic: CONTEXT @ . CR +[Hera] 36069120 +[Hera] [HADES][TEST ] [KRELTSC: 4055110710] Test passed +[Hera] [HADES][TEST ] Testing CONTEXT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4056496206] Expected: Should show current context +[Hera] [HADES][TEST ] [KRELTSC: 4057431462] Running CONTEXT.modify: CONTEXT @ 1+ CONTEXT ! +[Hera] [HADES][TEST ] [KRELTSC: 4058511681] Test passed +[Hera] [HADES][TEST ] Testing CONTEXT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4059939639] Expected: Should allow modification (impl-defined effect) +[Hera] [HADES][TEST ] [KRELTSC: 4061017653] Running CONTEXT.initial: FORTH CONTEXT @ . CR +[Hera] 35813536 +[Hera] [HADES][TEST ] [KRELTSC: 4065045012] Test passed +[Hera] [HADES][TEST ] Testing CONTEXT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4066424880] Expected: Should show FORTH vocab +[Hera] [HADES][TEST ] [KRELTSC: 4067400015] CONTEXT: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4068553293] ▶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 4069838577] Testing word: CURRENT +[Hera] [HADES][TEST ] [KRELTSC: 4070740338] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4071676476] Running CURRENT.basic: CURRENT @ . CR +[Hera] 36069120 +[Hera] [HADES][TEST ] [KRELTSC: 4073207880] Test passed +[Hera] [HADES][TEST ] Testing CURRENT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4074619584] Expected: Should show current vocab +[Hera] [HADES][TEST ] [KRELTSC: 4075496523] Running CURRENT.after_def: VOCABULARY TEST-VOC8 TEST-VOC8 DEF +[Hera] 36065824 +[Hera] [HADES][TEST ] [KRELTSC: 4080829599] Test passed +[Hera] [HADES][TEST ] Testing CURRENT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4082202390] Expected: Should show new vocab +[Hera] [HADES][TEST ] [KRELTSC: 4083039933] Running CURRENT.protect: CURRENT @ 1+ CURRENT ! +[Hera] [HADES][INFO ] [KRELTSC: 4083975798] L8[TABLE]: Config 3 → 4 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] [HADES][TEST ] [KRELTSC: 4084918278] Test passed +[Hera] [HADES][TEST ] Testing CURRENT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4086294933] Expected: Should allow modification (impl-defined effect) +[Hera] [HADES][TEST ] [KRELTSC: 4087371141] CURRENT: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4088430339] ▶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 4089542352] Testing word: ORDER +[Hera] [HADES][TEST ] [KRELTSC: 4090334619] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4091159667] Running ORDER.basic: ORDER +[Hera] Search order: +[Hera] + + +[Hera] Current: + + +[Hera] [HADES][TEST ] [KRELTSC: 4093407381] Test passed +[Hera] [HADES][TEST ] Testing ORDER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4094785947] Expected: Should list search order +[Hera] [HADES][TEST ] [KRELTSC: 4095692286] Running ORDER.multiple: VOCABULARY TEST-VOC9 TEST-VOC9 DEFINI +[Hera] Search order: +[Hera] + + +[Hera] Current: + + +[Hera] [HADES][TEST ] [KRELTSC: 4101505359] Test passed +[Hera] [HADES][TEST ] Testing ORDER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4102627389] Expected: Should show all vocabs +[Hera] [HADES][TEST ] [KRELTSC: 4103288700] Running ORDER.after_forth: TEST-VOC9 FORTH ORDER +[Hera] Search order: + + +[Hera] Current: + + +[Hera] [HADES][TEST ] [KRELTSC: 4107525828] Test passed +[Hera] [HADES][TEST ] Testing ORDER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4108911114] Expected: Should show FORTH only +[Hera] [HADES][TEST ] [KRELTSC: 4109781732] ORDER: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4110800883] === Vocabulary Words Summary: 0 passed, 0 failed, 0 skipped, 0 +[Hera] [HADES][INFO ] [KRELTSC: 4111861971] +[Hera] === Testing Module: System Words === +[Hera] [HADES][INFO ] [KRELTSC: 4112984568] Running System Words Tests (Module 18)... +[Hera] [HADES][WARN ] [KRELTSC: 4113919656] Some system tests marked as unimplemented due to system-level e +[Hera] [HADES][TEST ] [KRELTSC: 4115024466] ▶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4116145719] Testing word: QUIT +[Hera] [HADES][TEST ] [KRELTSC: 4116870807] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4117653603] Running QUIT.in_definition: : BAD-WORD QUIT ; +[Hera] [HADES][TEST ] [KRELTSC: 4119035382] Expected error occurred +[Hera] [HADES][TEST ] Testing QUIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4120608597] Expected: Should prevent compilation +[Hera] [HADES][TEST ] [KRELTSC: 4121537721] QUIT: 1 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4122520752] ▶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4123628250] Testing word: ABORT +[Hera] [HADES][TEST ] [KRELTSC: 4124376186] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4125184854] Running ABORT.basic: ABORT +[Hera] [HADES][TEST ] [KRELTSC: 4126152009] Test passed +[Hera] [HADES][TEST ] Testing ABORT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4127470620] Expected: Should clear stacks and return to QUIT +[Hera] [HADES][TEST ] [KRELTSC: 4128462114] Running ABORT.with_data: 1 2 3 ABORT DEPTH . CR +[Hera] [HADES][TEST ] [KRELTSC: 4129477653] Test passed +[Hera] [HADES][TEST ] Testing ABORT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4130855190] Expected: Should clear stack +[Hera] [HADES][TEST ] [KRELTSC: 4131742755] Running ABORT.in_definition_runtime: : BAD-WORD ABORT ; 123 +[Hera] [HADES][TEST ] [KRELTSC: 4133304504] Test passed +[Hera] [HADES][TEST ] Testing ABORT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4134642015] Expected: ABORT may appear in a definition; when executed i +[Hera] [HADES][TEST ] [KRELTSC: 4135733532] ABORT: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4136676705] ▶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4137774312] Testing word: ABORT" +[Hera] [HADES][TEST ] [KRELTSC: 4138501962] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4139265102] Running ABORT".condition_true: -1 ABORT" Error" + +[Hera] [HADES][TEST ] [KRELTSC: 4140676470] Test passed +[Hera] [HADES][TEST ] Testing ABORT" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4142038488] Expected: Should abort with message (no error; stacks clear +[Hera] [HADES][TEST ] [KRELTSC: 4143109425] Running ABORT".condition_false: 0 ABORT" Error" +[Hera] [HADES][TEST ] [KRELTSC: 4144108164] Test passed +[Hera] [HADES][TEST ] Testing ABORT" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4145471043] Expected: Should not abort +[Hera] [HADES][TEST ] [KRELTSC: 4146288951] Running ABORT".empty_stack: ABORT" +[Hera] [HADES][TEST ] [KRELTSC: 4147205454] Expected error occurred +[Hera] [HADES][TEST ] Testing ABORT" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4148703825] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4149623604] ABORT": 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4150612641] ▶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4151714028] Testing word: BYE +[Hera] [HADES][TEST ] [KRELTSC: 4152458037] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4153231530] BYE: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4154214204] ▶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4155324915] Testing word: COLD +[Hera] [HADES][TEST ] [KRELTSC: 4156109223] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4156868688] COLD: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4157799954] ▶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4158872550] Testing word: WARM +[Hera] [HADES][TEST ] [KRELTSC: 4159616895] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4160400447] WARM: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4161404667] === System Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 4162500489] +[Hera] === Testing Module: Defining Words === +[Hera] [HADES][INFO ] [KRELTSC: 4163681865] Running Defining Words Tests (Module 13)... +[Hera] [HADES][TEST ] [KRELTSC: 4164679050] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4165747635] Testing word: : +[Hera] [HADES][TEST ] [KRELTSC: 4166447019] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4167223893] Running :.basic: : TEST1 42 ; TEST1 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4168803975] Test passed +[Hera] [HADES][TEST ] Testing : ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4170139155] Expected: Should define and execute +[Hera] [HADES][TEST ] [KRELTSC: 4171069245] Running :.empty_name: : +[Hera] [HADES][TEST ] [KRELTSC: 4171892109] Expected error occurred +[Hera] [HADES][TEST ] Testing : ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4173306333] Expected: Should handle empty definition +[Hera] [HADES][TEST ] [KRELTSC: 4174239069] Running :.nested: : TEST3 : ; +[Hera] [HADES][ERROR] [KRELTSC: 4175376051] Nested ':' inside a definition is not allowed +[Hera] [HADES][TEST ] [KRELTSC: 4176354525] Expected error occurred +[Hera] [HADES][TEST ] Testing : ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4177777947] Expected: Should prevent nested definition +[Hera] [HADES][TEST ] [KRELTSC: 4178734749] :: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4179689703] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4180760367] Testing word: ; +[Hera] [HADES][TEST ] [KRELTSC: 4181480205] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4182296370] Running ;.alone: ; +[Hera] [HADES][TEST ] [KRELTSC: 4183178664] Expected error occurred +[Hera] [HADES][TEST ] Testing ; ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4184652045] Expected: Should error outside definition +[Hera] [HADES][TEST ] [KRELTSC: 4185614874] Running ;.immediate: : TEST4 42 ; IMMEDIATE TEST4 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4187309028] Test passed +[Hera] [HADES][TEST ] Testing ; ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4188668022] Expected: Should handle immediate +[Hera] [HADES][TEST ] [KRELTSC: 4189577721] ;: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4190523855] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4191636939] Testing word: CONSTANT +[Hera] [HADES][TEST ] [KRELTSC: 4192394073] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4193160825] Running CONSTANT.basic: 42 CONSTANT MEANING MEANING . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4195177161] Test passed +[Hera] [HADES][TEST ] Testing CONSTANT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4196622570] Expected: Should create constant +[Hera] [HADES][TEST ] [KRELTSC: 4197510387] Running CONSTANT.zero: 0 CONSTANT ZERO ZERO . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4199072829] Test passed +[Hera] [HADES][TEST ] Testing CONSTANT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4200468048] Expected: Should handle zero +[Hera] [HADES][TEST ] [KRELTSC: 4201301202] Running CONSTANT.negative: -1 CONSTANT MINUS MINUS . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 4202906274] Test passed +[Hera] [HADES][TEST ] Testing CONSTANT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4204278645] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 4205134290] Running CONSTANT.empty_stack: CONSTANT +[Hera] [HADES][TEST ] [KRELTSC: 4206084477] Expected error occurred +[Hera] [HADES][TEST ] Testing CONSTANT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4207618674] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4208561805] CONSTANT: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4209559704] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4210671276] Testing word: VARIABLE +[Hera] [HADES][TEST ] [KRELTSC: 4211412387] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4212179307] Running VARIABLE.basic: VARIABLE VAR1 42 VAR1 ! VAR1 @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4214071428] Test passed +[Hera] [HADES][TEST ] Testing VARIABLE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4215486387] Expected: Should create variable +[Hera] [HADES][TEST ] [KRELTSC: 4216367043] Running VARIABLE.multiple: VARIABLE VAR2 VARIABLE VAR3 +[Hera] [HADES][TEST ] [KRELTSC: 4217953068] Test passed +[Hera] [HADES][TEST ] Testing VARIABLE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4219352844] Expected: Should create multiple +[Hera] [HADES][TEST ] [KRELTSC: 4220242047] Running VARIABLE.store_fetch: VARIABLE VAR4 -99 VAR4 ! VAR4 @ +[Hera] -99 +[Hera] [HADES][TEST ] [KRELTSC: 4221980889] Test passed +[Hera] [HADES][TEST ] Testing VARIABLE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4223368758] Expected: Should store/fetch +[Hera] [HADES][TEST ] [KRELTSC: 4224204831] VARIABLE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4225126269] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4226233011] Testing word: CREATE +[Hera] [HADES][TEST ] [KRELTSC: 4226953563] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4227722646] Running CREATE.basic: CREATE OBJ1 +[Hera] [HADES][TEST ] [KRELTSC: 4228945497] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4230334710] Expected: Should create word +[Hera] [HADES][TEST ] [KRELTSC: 4231157259] Running CREATE.with_data: CREATE OBJ2 42 , OBJ2 @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4232792529] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4234161162] Expected: Should allow data +[Hera] [HADES][TEST ] [KRELTSC: 4234992258] Running CREATE.empty_name: CREATE +[Hera] [HADES][TEST ] [KRELTSC: 4235861406] Expected error occurred +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4237349760] Expected: Should handle empty name +[Hera] [HADES][TEST ] [KRELTSC: 4238270043] CREATE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4239206307] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4240322058] Testing word: DOES> +[Hera] [HADES][TEST ] [KRELTSC: 4241022681] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4241784981] Running DOES>.basic: : CONST CREATE , DOES> @ ; 42 CONST MEAN +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4244940021] Test passed +[Hera] [HADES][TEST ] Testing DOES> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4246291581] Expected: Should define behavior +[Hera] [HADES][TEST ] [KRELTSC: 4247164110] Running DOES>.multiple: : ARRAY CREATE DOES> SWAP CELLS + ; C +[Hera] [HADES][TEST ] [KRELTSC: 4248966456] Test passed +[Hera] [HADES][TEST ] Testing DOES> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4250336349] Expected: Should work with arrays +[Hera] [HADES][TEST ] [KRELTSC: 4251237669] Running DOES>.outside: DOES> +[Hera] [HADES][ERROR] [KRELTSC: 4252094322] DOES>: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4252848957] Expected error occurred +[Hera] [HADES][TEST ] Testing DOES> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4254340545] Expected: Should error outside definition +[Hera] [HADES][TEST ] [KRELTSC: 4255313328] DOES>: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4256284788] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4257403626] Testing word: [ +[Hera] [HADES][TEST ] [KRELTSC: 4258099293] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4258853130] Running [.basic: : TEST5 [ 42 ] LITERAL ; TEST5 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4260792564] Test passed +[Hera] [HADES][TEST ] Testing [ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4262200299] Expected: Should enter interpret +[Hera] [HADES][TEST ] [KRELTSC: 4263102312] Running [.outside: [ +[Hera] [HADES][TEST ] [KRELTSC: 4263878745] Test passed +[Hera] [HADES][TEST ] Testing [ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4265220834] Expected: Should be allowed outside definition (no error) +[Hera] [HADES][TEST ] [KRELTSC: 4266313527] [: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4267226544] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4268304159] Testing word: ] +[Hera] [HADES][TEST ] [KRELTSC: 4269029310] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4269771030] Running ].basic: [ 42 ] . CR +[Hera] [HADES][TEST ] [KRELTSC: 4270764540] Test passed +[Hera] [HADES][TEST ] Testing ] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4272173703] Expected: Should resume compile +[Hera] [HADES][TEST ] [KRELTSC: 4273070214] Running ].nested: : TEST6 [ ] 42 ; TEST6 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4274738118] Test passed +[Hera] [HADES][TEST ] Testing ] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4276076889] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4276909308] ]: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4277847714] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4278923481] Testing word: DEFER +[Hera] [HADES][TEST ] [KRELTSC: 4279662387] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4280442096] Running DEFER.basic: DEFER DF1 : DF1W 42 . CR ; ' DF1W IS DF1 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4283022156] Test passed +[Hera] [HADES][TEST ] Testing DEFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4284397950] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 4285239819] Running DEFER.uninit: DEFER DF2 DF2 +[Hera] [HADES][ERROR] [KRELTSC: 4286457861] DEFER runtime: no target set for 'DF2' +[Hera] [HADES][TEST ] [KRELTSC: 4287378333] Expected error occurred +[Hera] [HADES][TEST ] Testing DEFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4288844700] Expected: Should error: uninitialized deferred word +[Hera] [HADES][TEST ] [KRELTSC: 4289886174] DEFER: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4290845664] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4291935711] Testing word: IS +[Hera] [HADES][TEST ] [KRELTSC: 4292663970] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4293443217] Running IS.basic: DEFER IS1 : IS1W 99 . CR ; ' IS1W IS IS1 IS +[Hera] 99 +[Hera] [HADES][TEST ] [KRELTSC: 4295781126] Test passed +[Hera] [HADES][TEST ] Testing IS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4297143018] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4297976697] Running IS.not_defer: 42 IS DUP +[Hera] [HADES][ERROR] [KRELTSC: 4298897736] IS: 'DUP' was not created by DEFER +[Hera] [HADES][TEST ] [KRELTSC: 4299799203] Expected error occurred +[Hera] [HADES][TEST ] Testing IS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4301199399] Expected: Should error: DUP is not a DEFER word +[Hera] [HADES][TEST ] [KRELTSC: 4302211683] Running IS.not_found: 42 IS NOSUCH +[Hera] [HADES][ERROR] [KRELTSC: 4303122852] IS: word 'NOSUCH' not found +[Hera] [HADES][TEST ] [KRELTSC: 4303954179] Expected error occurred +[Hera] [HADES][TEST ] Testing IS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4305430416] Expected: Should error: word not found +[Hera] [HADES][TEST ] [KRELTSC: 4306328439] IS: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4307256807] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4308341436] Testing word: DEFER@ +[Hera] [HADES][TEST ] [KRELTSC: 4309064046] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4309887099] Running DEFER@.basic: DEFER DFA1 : DFA1W 7 . CR ; ' DFA1W IS +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 4312314846] Test passed +[Hera] [HADES][TEST ] Testing DEFER@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4313679216] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 4314521673] Running DEFER@.not_found: DEFER@ NOSUCH2 +[Hera] [HADES][ERROR] [KRELTSC: 4315508526] DEFER@: word 'NOSUCH2' not found +[Hera] [HADES][TEST ] [KRELTSC: 4316391030] Expected error occurred +[Hera] [HADES][TEST ] Testing DEFER@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4317898137] Expected: Should error: word not found +[Hera] [HADES][TEST ] [KRELTSC: 4318844901] DEFER@: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4319796432] ▶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4320888747] Testing word: ['] +[Hera] [HADES][TEST ] [KRELTSC: 4321605519] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4322410743] Running ['].compile_xt: : BKT1 ['] DUP ; 77 BKT1 EXECUTE . . +[Hera] 77 77 +[Hera] [HADES][TEST ] [KRELTSC: 4324686282] Test passed +[Hera] [HADES][TEST ] Testing ['] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4326069552] Expected: Should print: 77 77 +[Hera] [HADES][TEST ] [KRELTSC: 4326926919] Running ['].pin_like: : BKT2 ['] DROP ; 1 2 BKT2 EXECUTE . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 4328781093] Test passed +[Hera] [HADES][TEST ] Testing ['] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4330232046] Expected: Should print: 1 +[Hera] [HADES][TEST ] [KRELTSC: 4331052621] Running ['].not_found: : BKT3 ['] NOSUCHWORD ; +[Hera] [HADES][ERROR] [KRELTSC: 4332378015] [']': word 'NOSUCHWORD' not found +[Hera] [HADES][TEST ] [KRELTSC: 4333232862] Expected error occurred +[Hera] [HADES][TEST ] Testing ['] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4334658531] Expected: Should error: word not found +[Hera] [HADES][TEST ] [KRELTSC: 4335578436] [']: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4336538640] === Defining Words Summary: 0 passed, 0 failed, 0 skipped, 0 er +[Hera] [HADES][INFO ] [KRELTSC: 4337628057] +[Hera] === Testing Module: Control Words === +[Hera] [HADES][INFO ] [KRELTSC: 4338766362] Running Control Words Tests (Module 12)... +[Hera] [HADES][TEST ] [KRELTSC: 4339725012] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4340848701] Testing word: IF +[Hera] [HADES][TEST ] [KRELTSC: 4341574629] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4342350159] Running IF.true: : TEST1 IF 42 ELSE 24 THEN ; -1 TEST1 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4345007331] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4346336379] Expected: Should take true branch +[Hera] [HADES][TEST ] [KRELTSC: 4347216405] Running IF.false: : TEST2 IF 42 ELSE 24 THEN ; 0 TEST2 . CR +[Hera] 24 +[Hera] [HADES][TEST ] [KRELTSC: 4349087526] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4350425205] Expected: Should take false branch +[Hera] [HADES][TEST ] [KRELTSC: 4351325748] Running IF.nested: : TEST3 IF IF 1 ELSE 2 THEN ELSE 3 THEN ; +[Hera] [HADES][INFO ] [KRELTSC: 4366017012] L8[TABLE]: Config 4 → 5 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 4367101452] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4368152523] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4368810033] Running IF.no_else: : TEST4 IF 42 THEN ; -1 TEST4 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4370243136] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4371418359] Expected: Should work without ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4372345026] Running IF.empty_stack: IF +[Hera] [HADES][ERROR] [KRELTSC: 4373231226] IF: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4373968389] Expected error occurred +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4375438515] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4376380071] IF: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4377339750] Testing word: IF +[Hera] [HADES][TEST ] [KRELTSC: 4378054632] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4378905489] Running IF.true: : TEST1 IF 42 ELSE 24 THEN ; -1 TEST1 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4380899943] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4382402892] Expected: Should take true branch +[Hera] [HADES][TEST ] [KRELTSC: 4383298500] Running IF.false: : TEST2 IF 42 ELSE 24 THEN ; 0 TEST2 . CR +[Hera] 24 +[Hera] [HADES][TEST ] [KRELTSC: 4385189739] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4386615891] Expected: Should take false branch +[Hera] [HADES][TEST ] [KRELTSC: 4387516224] Running IF.nested: : TEST3 IF IF 1 ELSE 2 THEN ELSE 3 THEN ; +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 4389385980] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4390753836] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4391607108] Running IF.no_else: : TEST4 IF 42 THEN ; -1 TEST4 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4393320393] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4394679744] Expected: Should work without ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4395567771] Running IF.empty_stack: IF +[Hera] [HADES][ERROR] [KRELTSC: 4396380660] IF: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4397094261] Expected error occurred +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4398571170] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4399508190] IF: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4400500104] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4401596325] Testing word: ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4402329813] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4403095263] Running ELSE.alone: ELSE +[Hera] [HADES][ERROR] [KRELTSC: 4404035874] ELSE: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4404766527] Expected error occurred +[Hera] [HADES][TEST ] Testing ELSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4406221008] Expected: Should error outside IF +[Hera] [HADES][TEST ] [KRELTSC: 4407096813] Running ELSE.double: : BAD IF 1 ELSE ELSE 2 THEN ; +[Hera] [HADES][ERROR] [KRELTSC: 4408514313] ELSE: missing IF +[Hera] [HADES][TEST ] [KRELTSC: 4409202210] Expected error occurred +[Hera] [HADES][TEST ] Testing ELSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4410686238] Expected: Should prevent double ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4411560552] ELSE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4412481486] Testing word: ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4413228120] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4413981579] Running ELSE.alone: ELSE +[Hera] [HADES][ERROR] [KRELTSC: 4414922148] ELSE: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4415667501] Expected error occurred +[Hera] [HADES][TEST ] Testing ELSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4417115283] Expected: Should error outside IF +[Hera] [HADES][TEST ] [KRELTSC: 4417988841] Running ELSE.double: : BAD IF 1 ELSE ELSE 2 THEN ; +[Hera] [HADES][ERROR] [KRELTSC: 4419381582] ELSE: missing IF +[Hera] [HADES][TEST ] [KRELTSC: 4420094931] Expected error occurred +[Hera] [HADES][TEST ] Testing ELSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4421562789] Expected: Should prevent double ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4422568647] ELSE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4423487019] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4424575680] Testing word: THEN +[Hera] [HADES][TEST ] [KRELTSC: 4425302574] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4426067646] Running THEN.alone: THEN +[Hera] [HADES][ERROR] [KRELTSC: 4427125038] THEN: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4427838492] Expected error occurred +[Hera] [HADES][TEST ] Testing THEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4429258890] Expected: Should error outside IF +[Hera] [HADES][TEST ] [KRELTSC: 4430171319] Running THEN.extra: : BAD IF 1 THEN THEN ; +[Hera] [HADES][ERROR] [KRELTSC: 4431598143] CF: underflow +[Hera] [HADES][ERROR] [KRELTSC: 4432284003] THEN: unmatched +[Hera] [HADES][TEST ] [KRELTSC: 4433001951] Expected error occurred +[Hera] [HADES][TEST ] Testing THEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4434418401] Expected: Should prevent extra THEN +[Hera] [HADES][TEST ] [KRELTSC: 4435288641] THEN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4436227068] Testing word: THEN +[Hera] [HADES][TEST ] [KRELTSC: 4436936301] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4437718908] Running THEN.alone: THEN +[Hera] [HADES][ERROR] [KRELTSC: 4438592382] THEN: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4439330868] Expected error occurred +[Hera] [HADES][TEST ] Testing THEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4440812838] Expected: Should error outside IF +[Hera] [HADES][TEST ] [KRELTSC: 4441702083] Running THEN.extra: : BAD IF 1 THEN THEN ; +[Hera] [HADES][ERROR] [KRELTSC: 4443022206] CF: underflow +[Hera] [HADES][ERROR] [KRELTSC: 4443738873] THEN: unmatched +[Hera] [HADES][TEST ] [KRELTSC: 4444472088] Expected error occurred +[Hera] [HADES][TEST ] Testing THEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4445911911] Expected: Should prevent extra THEN +[Hera] [HADES][TEST ] [KRELTSC: 4446800001] THEN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4447718415] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4448799180] Testing word: BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4449534453] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4450311012] Running BEGIN.until: : TEST5 0 BEGIN 1+ DUP 5 = UNTIL ; TEST5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4452747642] Test passed +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4454138220] Expected: Should loop until true +[Hera] [HADES][TEST ] [KRELTSC: 4454994642] Running BEGIN.while: : TEST6 0 BEGIN DUP 5 < WHILE 1+ REPEAT +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4457535180] Test passed +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4458911058] Expected: Should loop while true +[Hera] [HADES][TEST ] [KRELTSC: 4459757190] Running BEGIN.alone: BEGIN +[Hera] [HADES][ERROR] [KRELTSC: 4460658090] BEGIN: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4461399264] Expected error occurred +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4462844505] Expected: Should error outside definition +[Hera] [HADES][TEST ] [KRELTSC: 4463762982] BEGIN: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4464727386] Testing word: BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4465455015] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4466240919] Running BEGIN.until: : TEST5 0 BEGIN 1+ DUP 5 = UNTIL ; TEST5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4468303392] Test passed +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4469667699] Expected: Should loop until true +[Hera] [HADES][TEST ] [KRELTSC: 4470536553] Running BEGIN.while: : TEST6 0 BEGIN DUP 5 < WHILE 1+ REPEAT +[Hera] [HADES][INFO ] [KRELTSC: 4472356182] L8[TABLE]: Config 5 → 6 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4473978012] Test passed +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4475369661] Expected: Should loop while true +[Hera] [HADES][TEST ] [KRELTSC: 4476245928] Running BEGIN.alone: BEGIN +[Hera] [HADES][ERROR] [KRELTSC: 4477099536] BEGIN: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4477855956] Expected error occurred +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4479350211] Expected: Should error outside definition +[Hera] [HADES][TEST ] [KRELTSC: 4480294455] BEGIN: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4481275239] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4482351111] Testing word: UNTIL +[Hera] [HADES][TEST ] [KRELTSC: 4483112844] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4483903095] Running UNTIL.basic: : TEST8 BEGIN DUP 1- DUP 0= UNTIL ; 5 TE +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4485989697] Test passed +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4487323176] Expected: Should count down +[Hera] [HADES][TEST ] [KRELTSC: 4488178275] Running UNTIL.immediate: : TEST9 BEGIN 1 UNTIL ; IMMEDIATE +[Hera] [HADES][TEST ] [KRELTSC: 4489624986] Test passed +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4491012183] Expected: Should be immediate +[Hera] [HADES][TEST ] [KRELTSC: 4491883095] Running UNTIL.no_begin: UNTIL +[Hera] [HADES][ERROR] [KRELTSC: 4492855437] UNTIL: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4493603646] Expected error occurred +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4495050882] Expected: Should error without BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4495967448] UNTIL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4496915787] Testing word: UNTIL +[Hera] [HADES][TEST ] [KRELTSC: 4497644508] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4498392675] Running UNTIL.basic: : TEST8 BEGIN DUP 1- DUP 0= UNTIL ; 5 TE +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4500438075] Test passed +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4501863744] Expected: Should count down +[Hera] [HADES][TEST ] [KRELTSC: 4502695218] Running UNTIL.immediate: : TEST9 BEGIN 1 UNTIL ; IMMEDIATE +[Hera] [HADES][TEST ] [KRELTSC: 4504170867] Test passed +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4505540088] Expected: Should be immediate +[Hera] [HADES][TEST ] [KRELTSC: 4506421584] Running UNTIL.no_begin: UNTIL +[Hera] [HADES][ERROR] [KRELTSC: 4507293420] UNTIL: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4508048706] Expected error occurred +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4509507114] Expected: Should error without BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4510442055] UNTIL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4511404569] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4512532584] Testing word: WHILE +[Hera] [HADES][TEST ] [KRELTSC: 4513257798] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4514010333] Running WHILE.basic: : TEST10 BEGIN DUP 5 < WHILE 1+ REPEAT ; +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4516102374] Test passed +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4517446269] Expected: Should count up +[Hera] [HADES][TEST ] [KRELTSC: 4518258675] Running WHILE.zero_times: : TEST11 BEGIN DUP 0< WHILE 1+ REPE +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4520113731] Test passed +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4521472305] Expected: Should handle zero iterations +[Hera] [HADES][TEST ] [KRELTSC: 4522389732] Running WHILE.no_begin: WHILE +[Hera] [HADES][ERROR] [KRELTSC: 4523307957] WHILE: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4524041046] Expected error occurred +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4525508253] Expected: Should error without BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4526416209] WHILE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4527389685] Testing word: WHILE +[Hera] [HADES][TEST ] [KRELTSC: 4528124160] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4528887258] Running WHILE.basic: : TEST10 BEGIN DUP 5 < WHILE 1+ REPEAT ; +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4530992760] Test passed +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4532372880] Expected: Should count up +[Hera] [HADES][TEST ] [KRELTSC: 4533219474] Running WHILE.zero_times: : TEST11 BEGIN DUP 0< WHILE 1+ REPE +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4535068167] Test passed +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4536439908] Expected: Should handle zero iterations +[Hera] [HADES][TEST ] [KRELTSC: 4537345638] Running WHILE.no_begin: WHILE +[Hera] [HADES][ERROR] [KRELTSC: 4538227092] WHILE: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4538967552] Expected error occurred +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4540545639] Expected: Should error without BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4541443641] WHILE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4542375705] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4543482027] Testing word: REPEAT +[Hera] [HADES][TEST ] [KRELTSC: 4544262786] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4545053394] Running REPEAT.basic: : TEST12 BEGIN DUP 5 < WHILE 1+ REPEAT +[Hera] [HADES][INFO ] [KRELTSC: 4546757796] L8[TABLE]: Config 6 → 7 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4548576669] Test passed +[Hera] [HADES][TEST ] Testing REPEAT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4549959939] Expected: Should terminate loop +[Hera] [HADES][TEST ] [KRELTSC: 4550832258] Running REPEAT.no_while: REPEAT +[Hera] [HADES][ERROR] [KRELTSC: 4551796683] REPEAT: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4552547433] Expected error occurred +[Hera] [HADES][TEST ] Testing REPEAT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4554014850] Expected: Should error without WHILE +[Hera] [HADES][TEST ] [KRELTSC: 4554921714] REPEAT: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4555892145] Testing word: REPEAT +[Hera] [HADES][TEST ] [KRELTSC: 4556621832] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4557390117] Running REPEAT.basic: : TEST12 BEGIN DUP 5 < WHILE 1+ REPEAT +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4559570925] Test passed +[Hera] [HADES][TEST ] Testing REPEAT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4560962406] Expected: Should terminate loop +[Hera] [HADES][TEST ] [KRELTSC: 4561800243] Running REPEAT.no_while: REPEAT +[Hera] [HADES][ERROR] [KRELTSC: 4562622561] REPEAT: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4563381585] Expected error occurred +[Hera] [HADES][TEST ] Testing REPEAT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4564855617] Expected: Should error without WHILE +[Hera] [HADES][TEST ] [KRELTSC: 4565740662] REPEAT: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4566723441] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4567811178] Testing word: DO +[Hera] [HADES][TEST ] [KRELTSC: 4568507265] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4569286974] Running DO.basic: : TEST13 5 0 DO I . LOOP ; TEST13 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4572011829] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4573339470] Expected: Should count 0 to 4 +[Hera] [HADES][TEST ] [KRELTSC: 4574200974] Running DO.negative: : TEST14 -1 -5 DO I . LOOP ; TEST14 CR +[Hera] -5 -4 -3 -2 +[Hera] [HADES][TEST ] [KRELTSC: 4576187364] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4577569437] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 4578485814] Running DO.empty: : TEST15 0 0 DO LOOP ; +[Hera] [HADES][TEST ] [KRELTSC: 4579836093] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4581167010] Expected: Should handle empty range +[Hera] [HADES][TEST ] [KRELTSC: 4582083324] Running DO.nested: : TEST16 3 0 DO 3 0 DO J I + . LOOP LOOP ; +[Hera] 0 1 2 1 2 3 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4584522621] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4585868238] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4586717331] DO: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4587629508] Testing word: DO +[Hera] [HADES][TEST ] [KRELTSC: 4588322865] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4589092242] Running DO.basic: : TEST13 5 0 DO I . LOOP ; TEST13 CR +[Hera] 0 1 2 3 [HADES][INFO ] [KRELTSC: 4591176492] L8[TABLE]: Config 7 → 8 regime=7 score=6553 L1=0 L2=0 L3=0 L4 +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 4592415219] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4593762348] Expected: Should count 0 to 4 +[Hera] [HADES][TEST ] [KRELTSC: 4594635318] Running DO.negative: : TEST14 -1 -5 DO I . LOOP ; TEST14 CR +[Hera] -5 -4 -3 -2 +[Hera] [HADES][TEST ] [KRELTSC: 4596613203] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4597952121] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 4598834352] Running DO.empty: : TEST15 0 0 DO LOOP ; +[Hera] [HADES][TEST ] [KRELTSC: 4600195698] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4601577729] Expected: Should handle empty range +[Hera] [HADES][TEST ] [KRELTSC: 4602467352] Running DO.nested: : TEST16 3 0 DO 3 0 DO J I + . LOOP LOOP ; +[Hera] 0 1 2 1 2 3 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4604854401] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4606257768] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4607122632] DO: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4608064923] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4609200057] Testing word: ?DO +[Hera] [HADES][TEST ] [KRELTSC: 4609937451] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4610724762] Running ?DO.basic: : TEST17 5 0 ?DO I . LOOP ; TEST17 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4613298249] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4614679104] Expected: Should count 0 to 4 +[Hera] [HADES][TEST ] [KRELTSC: 4615541679] Running ?DO.skip: : TEST18 1 1 ?DO I . LOOP ; +[Hera] [HADES][TEST ] [KRELTSC: 4617064116] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4618459944] Expected: Should skip when equal +[Hera] [HADES][TEST ] [KRELTSC: 4619351331] Running ?DO.nested: : TEST19 3 0 ?DO 3 I ?DO J I + . LOOP LOO +[Hera] 0 1 2 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4621608873] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4623008838] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4623896529] ?DO: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4624833948] Testing word: ?DO +[Hera] [HADES][TEST ] [KRELTSC: 4625581422] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4626374277] Running ?DO.basic: : TEST17 5 0 ?DO I . LOOP ; TEST17 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4628424024] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4629739926] Expected: Should count 0 to 4 +[Hera] [HADES][TEST ] [KRELTSC: 4630592127] Running ?DO.skip: : TEST18 1 1 ?DO I . LOOP ; +[Hera] [HADES][TEST ] [KRELTSC: 4631971197] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4633308267] Expected: Should skip when equal +[Hera] [HADES][TEST ] [KRELTSC: 4634194572] Running ?DO.nested: : TEST19 3 0 ?DO 3 I ?DO J I + . LOOP LOO +[Hera] [HADES][INFO ] [KRELTSC: 4635781878] L8[TABLE]: Config 8 → 9 regime=7 score=6553 L1=0 L2=0 L3=0 L4 +[Hera] 0 1 2 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4637743635] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4639160379] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4640171151] ?DO: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4641229635] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4642364559] Testing word: LOOP +[Hera] [HADES][TEST ] [KRELTSC: 4643095674] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4643881032] Running LOOP.basic: : TEST20 5 0 DO I . LOOP ; TEST20 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4646078514] Test passed +[Hera] [HADES][TEST ] Testing LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4647492192] Expected: Should increment by 1 +[Hera] [HADES][TEST ] [KRELTSC: 4648341327] Running LOOP.no_do: LOOP +[Hera] [HADES][ERROR] [KRELTSC: 4649295420] LOOP: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4650023007] Expected error occurred +[Hera] [HADES][TEST ] Testing LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4651457181] Expected: Should error without DO +[Hera] [HADES][TEST ] [KRELTSC: 4652340084] LOOP: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4653298335] Testing word: LOOP +[Hera] [HADES][TEST ] [KRELTSC: 4654013910] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4654813002] Running LOOP.basic: : TEST20 5 0 DO I . LOOP ; TEST20 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4656904665] Test passed +[Hera] [HADES][TEST ] Testing LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4658272521] Expected: Should increment by 1 +[Hera] [HADES][TEST ] [KRELTSC: 4659123693] Running LOOP.no_do: LOOP +[Hera] [HADES][ERROR] [KRELTSC: 4659954621] LOOP: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4660700058] Expected error occurred +[Hera] [HADES][TEST ] Testing LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4662172851] Expected: Should error without DO +[Hera] [HADES][TEST ] [KRELTSC: 4663073982] LOOP: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4664018898] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4665118983] Testing word: +LOOP +[Hera] [HADES][TEST ] [KRELTSC: 4665861879] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4666659942] Running +LOOP.basic: : TEST21 10 0 DO I . 2 +LOOP ; TEST21 CR +[Hera] 0 2 4 6 8 +[Hera] [HADES][TEST ] [KRELTSC: 4669233702] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4670642844] Expected: Should count by 2 +[Hera] [HADES][TEST ] [KRELTSC: 4671481353] Running +LOOP.negative: : TEST22 0 10 DO I . -1 +LOOP ; TEST2 +[Hera] 10 9 8 7 6 5 4 3 2 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 4673767413] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4675219185] Expected: Should count down +[Hera] [HADES][TEST ] [KRELTSC: 4676062965] Running +LOOP.variable: : TEST23 10 0 DO I . DUP +LOOP ; 3 TE +[Hera] 0 3 6 9 +[Hera] [HADES][TEST ] [KRELTSC: 4678069872] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4679445750] Expected: Should use stack value +[Hera] [HADES][TEST ] [KRELTSC: 4680349800] +LOOP: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4681293960] Testing word: +LOOP +[Hera] [HADES][TEST ] [KRELTSC: 4682025537] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4682810916] Running +LOOP.basic: : TEST21 10 0 DO I . 2 +LOOP ; TEST21 CR +[Hera] [HADES][INFO ] [KRELTSC: 4684648773] L8[TABLE]: Config 9 → 10 regime=7 score=6553 L1=0 L2=0 L3=0 L +[Hera] 0 2 4 6 8 +[Hera] [HADES][TEST ] [KRELTSC: 4686267642] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4687668846] Expected: Should count by 2 +[Hera] [HADES][TEST ] [KRELTSC: 4688561619] Running +LOOP.negative: : TEST22 0 10 DO I . -1 +LOOP ; TEST2 +[Hera] 10 9 8 7 6 5 4 3 2 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 4690828296] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4692186156] Expected: Should count down +[Hera] [HADES][TEST ] [KRELTSC: 4693018008] Running +LOOP.variable: : TEST23 10 0 DO I . DUP +LOOP ; 3 TE +[Hera] 0 3 6 9 +[Hera] [HADES][TEST ] [KRELTSC: 4695015948] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4696357218] Expected: Should use stack value +[Hera] [HADES][TEST ] [KRELTSC: 4697227479] +LOOP: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4698164268] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4699250241] Testing word: I +[Hera] [HADES][TEST ] [KRELTSC: 4699947105] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4700715180] Running I.basic: : TI 4 0 DO I . LOOP CR ; TI +[Hera] 0 1 2 3 +[Hera] [HADES][TEST ] [KRELTSC: 4702659003] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4704027258] Expected: Should print: 0 1 2 3 +[Hera] [HADES][TEST ] [KRELTSC: 4704913983] Running I.single: : TI1 1 0 DO I . LOOP CR ; TI1 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4706710680] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4708053441] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4708852848] Running I.offset: : TI2 5 3 DO I . LOOP CR ; TI2 +[Hera] 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4710628419] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4711993398] Expected: Should print: 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4712832579] Running I.in_expr: : TI3 3 0 DO I 2 * . LOOP CR ; TI3 +[Hera] 0 2 4 +[Hera] [HADES][TEST ] [KRELTSC: 4714742886] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4716120654] Expected: Should print: 0 2 4 +[Hera] [HADES][TEST ] [KRELTSC: 4716977643] I: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4717914369] Testing word: I +[Hera] [HADES][TEST ] [KRELTSC: 4718595609] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4719409716] Running I.basic: : TI 4 0 DO I . LOOP CR ; TI +[Hera] 0 1 2 3 +[Hera] [HADES][TEST ] [KRELTSC: 4721528763] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4722897207] Expected: Should print: 0 1 2 3 +[Hera] [HADES][TEST ] [KRELTSC: 4723779123] Running I.single: : TI1 1 0 DO I . LOOP CR ; TI1 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 4725718872] L8[TABLE]: Config 10 → 11 regime=7 score=6553 L1=0 L2=0 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 4726863057] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4728193827] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4729034499] Running I.offset: : TI2 5 3 DO I . LOOP CR ; TI2 +[Hera] 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4730848563] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4732209762] Expected: Should print: 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4733048838] Running I.in_expr: : TI3 3 0 DO I 2 * . LOOP CR ; TI3 +[Hera] 0 2 4 +[Hera] [HADES][TEST ] [KRELTSC: 4734955722] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4736316795] Expected: Should print: 0 2 4 +[Hera] [HADES][TEST ] [KRELTSC: 4737198060] I: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4738140225] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4739265111] Testing word: J +[Hera] [HADES][TEST ] [KRELTSC: 4739984151] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4740767913] Running J.basic: : TJ 2 0 DO 3 0 DO J . LOOP LOOP CR ; TJ +[Hera] 0 0 0 1 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 4743016278] Test passed +[Hera] [HADES][TEST ] Testing J ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4744376364] Expected: Should print: 0 0 0 1 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 4745290746] Running J.paired: : TJ2 2 0 DO 2 0 DO J I + . LOOP LOOP CR ; +[Hera] 0 1 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 4747432389] Test passed +[Hera] [HADES][TEST ] Testing J ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4748794743] Expected: Should print: 0 1 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 4749688734] J: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4750717398] Testing word: J +[Hera] [HADES][TEST ] [KRELTSC: 4751448597] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4752231666] Running J.basic: : TJ 2 0 DO 3 0 DO J . LOOP LOOP CR ; TJ +[Hera] 0 0 0 1 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 4754423814] Test passed +[Hera] [HADES][TEST ] Testing J ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4755775605] Expected: Should print: 0 0 0 1 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 4756653510] Running J.paired: : TJ2 2 0 DO 2 0 DO J I + . LOOP LOOP CR ; +[Hera] 0 1 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 4758789630] Test passed +[Hera] [HADES][TEST ] Testing J ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4760169519] Expected: Should print: 0 1 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 4761064833] J: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4762017834] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4763121426] Testing word: EXIT +[Hera] [HADES][TEST ] [KRELTSC: 4763863839] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4764670764] Running EXIT.early_return: : TEX 5 EXIT 99 ; TEX . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4766518932] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4767878220] Expected: Should print: 5 +[Hera] [HADES][TEST ] [KRELTSC: 4768682394] Running EXIT.cond_exit_pos: : TEX2 DUP 0> IF EXIT THEN NEGATE +[Hera] [HADES][INFO ] [KRELTSC: 4770293493] L8[TABLE]: Config 11 → 12 regime=7 score=6553 L1=0 L2=0 L3=0 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4771816224] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4773196869] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4774025529] Running EXIT.cond_exit_neg: : TEX2 DUP 0> IF EXIT THEN NEGATE +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 4775880081] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4777294872] Expected: Should print: 4 +[Hera] [HADES][TEST ] [KRELTSC: 4778137140] Running EXIT.no_skipped: : TEX3 1 2 EXIT 3 ; TEX3 . . CR +[Hera] 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 4779940725] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4781394891] Expected: Should print: 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 4782249297] EXIT: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4783233084] Testing word: EXIT +[Hera] [HADES][TEST ] [KRELTSC: 4783955400] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4784749536] Running EXIT.early_return: : TEX 5 EXIT 99 ; TEX . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4786557279] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4787951049] Expected: Should print: 5 +[Hera] [HADES][TEST ] [KRELTSC: 4788773136] Running EXIT.cond_exit_pos: : TEX2 DUP 0> IF EXIT THEN NEGATE +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4790637327] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4792021458] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4792816749] Running EXIT.cond_exit_neg: : TEX2 DUP 0> IF EXIT THEN NEGATE +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 4794671406] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4796040543] Expected: Should print: 4 +[Hera] [HADES][TEST ] [KRELTSC: 4796840139] Running EXIT.no_skipped: : TEX3 1 2 EXIT 3 ; TEX3 . . CR +[Hera] 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 4798582089] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4799958303] Expected: Should print: 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 4800783288] EXIT: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4801708716] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4802793030] Testing word: LEAVE +[Hera] [HADES][TEST ] [KRELTSC: 4803527421] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4804297260] Running LEAVE.basic: : TLV 0 5 0 DO I 3 = IF LEAVE THEN 1+ LO +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4806872616] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4808245407] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4809070518] Running LEAVE.at_start: : TLV2 0 5 0 DO LEAVE 1+ LOOP ; TLV2 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4810945545] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4812309705] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4813112346] Running LEAVE.qdloop: : TLV3 0 5 0 ?DO I 2 = IF LEAVE THEN 1+ +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 4815194139] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4816570521] Expected: Should print: 2 +[Hera] [HADES][TEST ] [KRELTSC: 4817402625] LEAVE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4818385299] Testing word: LEAVE +[Hera] [HADES][TEST ] [KRELTSC: 4819159989] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4819950996] Running LEAVE.basic: : TLV 0 5 0 DO I 3 = IF LEAVE THEN 1+ LO +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4822108032] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4823520009] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4824332205] Running LEAVE.at_start: : TLV2 0 5 0 DO LEAVE 1+ LOOP ; TLV2 +[Hera] [HADES][INFO ] [KRELTSC: 4826017812] L8[TABLE]: Config 12 → 13 regime=7 score=6553 L1=0 L2=0 L3=0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4827540249] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4828914174] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4829721708] Running LEAVE.qdloop: : TLV3 0 5 0 ?DO I 2 = IF LEAVE THEN 1+ +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 4831820217] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4833184986] Expected: Should print: 2 +[Hera] [HADES][TEST ] [KRELTSC: 4833996657] LEAVE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4834913727] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4836000204] Testing word: UNLOOP +[Hera] [HADES][TEST ] [KRELTSC: 4836733230] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4837509033] Running UNLOOP.early_exit: : TUL 5 0 DO I 2 = IF UNLOOP 42 EX +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4839713508] Test passed +[Hera] [HADES][TEST ] Testing UNLOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4841095392] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 4841922036] Running UNLOOP.full_loop: : TUL2 5 0 DO I 9 = IF UNLOOP 77 EX +[Hera] 99 +[Hera] [HADES][TEST ] [KRELTSC: 4844000343] Test passed +[Hera] [HADES][TEST ] Testing UNLOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4845407658] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4846247805] UNLOOP: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4847273634] Testing word: UNLOOP +[Hera] [HADES][TEST ] [KRELTSC: 4848060042] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4848857370] Running UNLOOP.early_exit: : TUL 5 0 DO I 2 = IF UNLOOP 42 EX +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4851018228] Test passed +[Hera] [HADES][TEST ] Testing UNLOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4852424241] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 4853257794] Running UNLOOP.full_loop: : TUL2 5 0 DO I 9 = IF UNLOOP 77 EX +[Hera] 99 +[Hera] [HADES][TEST ] [KRELTSC: 4855383267] Test passed +[Hera] [HADES][TEST ] Testing UNLOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4856804820] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4857638247] UNLOOP: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4858620942] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4859730267] Testing word: AGAIN +[Hera] [HADES][TEST ] [KRELTSC: 4860516339] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4861309425] Running AGAIN.basic: : TAG 0 BEGIN 1+ DUP 3 = IF EXIT THEN AG +[Hera] 3 [HADES][INFO ] [KRELTSC: 4863760356] L8[TABLE]: Config 13 → 14 regime=7 score=6553 L1=0 L2=0 L3=0 + +[Hera] [HADES][TEST ] [KRELTSC: 4864737528] Test passed +[Hera] [HADES][TEST ] Testing AGAIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4866090453] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4866928857] Running AGAIN.countdown: : CD 10 BEGIN 1- DUP 0= IF EXIT THEN +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4869093768] Test passed +[Hera] [HADES][TEST ] Testing AGAIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4870469268] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4871284005] AGAIN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4872229194] Testing word: AGAIN +[Hera] [HADES][TEST ] [KRELTSC: 4872977844] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4873767843] Running AGAIN.basic: : TAG 0 BEGIN 1+ DUP 3 = IF EXIT THEN AG +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4875857028] Test passed +[Hera] [HADES][TEST ] Testing AGAIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4877243427] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4878050394] Running AGAIN.countdown: : CD 10 BEGIN 1- DUP 0= IF EXIT THEN +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4880282757] Test passed +[Hera] [HADES][TEST ] Testing AGAIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4881626715] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4882424610] AGAIN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4883379438] ▶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4884464886] Testing word: CASE +[Hera] [HADES][TEST ] [KRELTSC: 4885207257] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4886006055] Running CASE.match_1: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 4889237598] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4890628974] Expected: Should print: 10 +[Hera] [HADES][TEST ] [KRELTSC: 4891462611] Running CASE.match_2: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 20 +[Hera] [HADES][TEST ] [KRELTSC: 4893698796] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4895026038] Expected: Should print: 20 +[Hera] [HADES][TEST ] [KRELTSC: 4895843589] Running CASE.default: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 99 +[Hera] [HADES][INFO ] [KRELTSC: 4898504940] L8[TABLE]: Config 14 → 0 regime=6 score=26214 L1=0 L2=0 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 4899618906] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4900962864] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4901773485] Running CASE.zero_case: : TC CASE 0 OF 88 ENDOF 1 OF 77 ENDOF +[Hera] 88 +[Hera] [HADES][TEST ] [KRELTSC: 4903970526] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4905409173] Expected: Should print: 88 +[Hera] [HADES][TEST ] [KRELTSC: 4906248732] Running CASE.neg_case: : TC CASE -1 OF 55 ENDOF 44 SWAP ENDCA +[Hera] 55 +[Hera] [HADES][TEST ] [KRELTSC: 4908406041] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4910133501] Expected: Should print: 55 +[Hera] [HADES][TEST ] [KRELTSC: 4910965227] CASE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4911928350] Testing word: CASE +[Hera] [HADES][TEST ] [KRELTSC: 4912666122] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4913467335] Running CASE.match_1: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 4915908795] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4917305043] Expected: Should print: 10 +[Hera] [HADES][TEST ] [KRELTSC: 4918138848] Running CASE.match_2: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 20 +[Hera] [HADES][TEST ] [KRELTSC: 4920331710] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4921725963] Expected: Should print: 20 +[Hera] [HADES][TEST ] [KRELTSC: 4922577576] Running CASE.default: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 99 +[Hera] [HADES][TEST ] [KRELTSC: 4924817142] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4926229749] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4927066494] Running CASE.zero_case: : TC CASE 0 OF 88 ENDOF 1 OF 77 ENDOF +[Hera] 88 +[Hera] [HADES][TEST ] [KRELTSC: 4929302196] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4930723791] Expected: Should print: 88 +[Hera] [HADES][TEST ] [KRELTSC: 4931534097] Running CASE.neg_case: : TC CASE -1 OF 55 ENDOF 44 SWAP ENDCA +[Hera] 55 +[Hera] [HADES][TEST ] [KRELTSC: 4933630317] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4935004809] Expected: Should print: 55 +[Hera] [HADES][TEST ] [KRELTSC: 4935882819] CASE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4936884456] === Control Words Summary: 0 passed, 0 failed, 0 skipped, 0 err +[Hera] [HADES][INFO ] [KRELTSC: 4937978283] +[Hera] === Testing Module: StarForth Words === +[Hera] [HADES][INFO ] [KRELTSC: 4939177467] Running StarForth Words Tests (Module 17: StarForth Extensions) +[Hera] [HADES][TEST ] [KRELTSC: 4940323647] ▶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 4941432405] Testing word: ENTROPY@ +[Hera] [HADES][TEST ] [KRELTSC: 4942199850] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4942992768] Running ENTROPY@.after_execution: : TESTWORD 1 1 + DROP ; TES +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 4945059420] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4946439540] Expected: Should show execution count > 0 +[Hera] [HADES][TEST ] [KRELTSC: 4947378471] Running ENTROPY@.zero_initial: : NEWWORD ; ' NEWWORD ENTROPY@ +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4949166831] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4950554910] Expected: Should show 0 for unused word +[Hera] [HADES][TEST ] [KRELTSC: 4951452030] Running ENTROPY@.multiple_calls: : ENTTEST 1 DROP ; ENTTEST E +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4953339804] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4954757934] Expected: Should increment with each call +[Hera] [HADES][TEST ] [KRELTSC: 4955720574] Running ENTROPY@.null_addr: 0 ENTROPY@ +[Hera] [HADES][ERROR] [KRELTSC: 4956709863] ENTROPY@: null dictionary entry +[Hera] [HADES][TEST ] [KRELTSC: 4957520022] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4959024609] Expected: Should handle null address +[Hera] [HADES][TEST ] [KRELTSC: 4960044684] Running ENTROPY@.empty_stack: ENTROPY@ +[Hera] [HADES][ERROR] [KRELTSC: 4961005644] ENTROPY@: data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4961932983] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4963406217] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4964318499] ENTROPY@: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4965348990] ▶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 4966459827] Testing word: ENTROPY! +[Hera] [HADES][TEST ] [KRELTSC: 4967228469] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4968011370] Running ENTROPY!.set_entropy: : ENTSET ; 42 ' ENTSET ENTROPY! +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4970039403] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4971450897] Expected: Should set entropy to 42 +[Hera] [HADES][TEST ] [KRELTSC: 4972323174] Running ENTROPY!.overwrite: : ENTOV ; 10 ' ENTOV ENTROPY! 20 +[Hera] [HADES][INFO ] [KRELTSC: 4973911908] L8[TABLE]: Config 0 → 14 regime=7 score=6553 L1=0 L2=0 L3=0 L +[Hera] 20 +[Hera] [HADES][TEST ] [KRELTSC: 4975388964] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4976792478] Expected: Should overwrite previous value +[Hera] [HADES][TEST ] [KRELTSC: 4977734013] Running ENTROPY!.zero_entropy: : ENTZERO ; 0 ' ENTZERO ENTROP +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4979440599] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4980840816] Expected: Should set entropy to 0 +[Hera] [HADES][TEST ] [KRELTSC: 4981693500] Running ENTROPY!.null_addr: 42 0 ENTROPY! +[Hera] [HADES][ERROR] [KRELTSC: 4982682012] ENTROPY!: null dictionary entry +[Hera] [HADES][TEST ] [KRELTSC: 4983535242] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4985071959] Expected: Should handle null address +[Hera] [HADES][TEST ] [KRELTSC: 4985962380] Running ENTROPY!.one_arg: 42 ENTROPY! +[Hera] [HADES][ERROR] [KRELTSC: 4986938271] ENTROPY!: data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4987762206] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4989267486] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4990167987] Running ENTROPY!.empty_stack: ENTROPY! +[Hera] [HADES][ERROR] [KRELTSC: 4991100492] ENTROPY!: data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4991952042] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4993473933] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4994420592] ENTROPY!: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4995451629] ▶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 4996587225] Testing word: WORD-ENTROPY +[Hera] [HADES][TEST ] [KRELTSC: 4997389341] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4998191709] Running WORD-ENTROPY.display_all: 1 DUP DUP DUP DROP DROP DRO +[Hera] Word Usage Statistics (Execution Heat Counts): + +[Hera] ============================================= + +[Hera] DEFER@: 2 + +[Hera] IS: 5 + +[Hera] DEFER: 4 + +[Hera] WORD-ENTROPY: 1 + +[Hera] ENTROPY!: 7 + +[Hera] ENTROPY@: 8 + +[Hera] ENDCASE: 10 + +[Hera] ENDOF: 18 + +[Hera] OF: 18 + +[Hera] CASE: 10 + +[Hera] EXIT: 119 + +[Hera] UNLOOP: 6 + +[Hera] J: 58 + +[Hera] I: 212 + +[Hera] LEAVE: 6 + +[Hera] +LOOP: 6 + +[Hera] LOOP: 48 + +[Hera] DO: 42 + +[Hera] ?DO: 10 + +[Hera] UNTIL: 8 + +[Hera] AGAIN: 4 + +[Hera] REPEAT: 10 + +[Hera] WHILE: 10 + +[Hera] BEGIN: 20 + +[Hera] THEN: 32 + +[Hera] ELSE: 14 + +[Hera] IF: 32 + +[Hera] (LEAVE): 6 + +[Hera] (+LOOP): 40 + +[Hera] (LOOP): 152 + +[Hera] (DO): 48 + +[Hera] (?DO): 12 + +[Hera] (0BRANCH): 142 + +[Hera] (BRANCH): 72 + +[Hera] DOES>: 3 + +[Hera] does_rt: 1 + +[Hera] LITERAL: 1 + +[Hera] LIT: 305 + +[Hera] FENCE: 3 + +[Hera] FORGET: 7 + +[Hera] ]: 3 + +[Hera] [: 4 + +[Hera] IMMEDIATE: 6 + +[Hera] CONSTANT: 4 + +[Hera] VARIABLE: 5 + +[Hera] CREATE: 23 + +[Hera] ;: 121 + +[Hera] :: 129 + +[Hera] ABORT": 3 + +[Hera] ABORT: 4 + +[Hera] QUIT: 1 + +[Hera] EXECUTE: 2 + +[Hera] ORDER: 3 + +[Hera] FORTH: 10 + +[Hera] CURRENT: 4 + +[Hera] CONTEXT: 5 + +[Hera] DEFINITIONS: 15 + +[Hera] VOCABULARY: 15 + +[Hera] ': 16 + +[Hera] FIND: 4 + +[Hera] >BODY: 2 + +[Hera] HIDDEN: 2 + +[Hera] SMUDGE: 2 + +[Hera] LATEST: 7 + +[Hera] SP@: 8 + +[Hera] SP!: 5 + +[Hera] PAD: 15 + +[Hera] 2,: 7 + +[Hera] C,: 10 + +[Hera] ,: 21 + +[Hera] ALLOT: 9 + +[Hera] ALIGN: 1 + +[Hera] HERE: 109 + +[Hera] SCR: 3 + +[Hera] THRU: 17 + +[Hera] LIST: 5 + +[Hera] LOAD: 5 + +[Hera] FLUSH: 3 + +[Hera] EMPTY-BUFFERS: 4 + +[Hera] SAVE-BUFFERS: 3 + +[Hera] UPDATE: 7 + +[Hera] BUFFER: 4 + +[Hera] BLOCK: 12 + +[Hera] SPACES: 10 + +[Hera] SPACE: 7 + +[Hera] TYPE: 43 + +[Hera] CR: 659 + +[Hera] EMIT: 15 + +[Hera] BLANK: 2 + +[Hera] SKIP: 4 + +[Hera] SCAN: 5 + +[Hera] SEARCH: 4 + +[Hera] COMPARE: 5 + +[Hera] CMOVE>: 4 + +[Hera] CMOVE: 6 + +[Hera] -TRAILING: 4 + +[Hera] LITERAL: 1 + +[Hera] [']: 3 + +[Hera] BL: 19 + +[Hera] SOURCE: 2 + +[Hera] >IN: 5 + +[Hera] S": 37 + +[Hera] (s"): 4 + +[Hera] WORD: 15 + +[Hera] SPAN: 4 + +[Hera] EXPECT: 4 + +[Hera] COUNT: 14 + +[Hera] OCTAL: 6 + +[Hera] HEX: 7 + +[Hera] DECIMAL: 14 + +[Hera] BASE: 9 + +[Hera] SIGN: 3 + +[Hera] HOLD: 2 + +[Hera] #>: 16 + +[Hera] #S: 11 + +[Hera] #: 5 + +[Hera] <#: 17 + +[Hera] .: 901 + +[Hera] D2/: 5 + +[Hera] D2*: 5 + +[Hera] D0<: 7 + +[Hera] D0=: 7 + +[Hera] 2R@: 3 + +[Hera] 2R>: 7 + +[Hera] 2>R: 7 + +[Hera] 2ROT: 6 + +[Hera] 2OVER: 6 + +[Hera] 2SWAP: 7 + +[Hera] 2DUP: 6 + +[Hera] 2DROP: 6 + +[Hera] D=: 7 + +[Hera] D<: 8 + +[Hera] DMIN: 6 + +[Hera] DMAX: 6 + +[Hera] DABS: 7 + +[Hera] DNEGATE: 6 + +[Hera] D-: 8 + +[Hera] D+: 7 + +[Hera] S>D: 7 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] MOD: 38 + +[Hera] M/MOD: 7 + +[Hera] M*: 8 + +[Hera] M+: 7 + +[Hera] FALSE: 18 + +[Hera] TRUE: 30 + +[Hera] WITHIN: 31 + +[Hera] U>: 25 + +[Hera] U<: 25 + +[Hera] <=: 31 + +[Hera] >=: 31 + +[Hera] >: 30 + +[Hera] <: 74 + +[Hera] <>: 26 + +[Hera] =: 176 + +[Hera] 0<>: 22 + +[Hera] 0>: 27 + +[Hera] 0<: 24 + +[Hera] 0=: 66 + +[Hera] NOT: 18 + +[Hera] XOR: 32 + +[Hera] OR: 22 + +[Hera] AND: 43 + +[Hera] MAX: 26 + +[Hera] MIN: 4 + +[Hera] NEGATE: 30 + +[Hera] ABS: 25 + +[Hera] 2/: 31 + +[Hera] 2*: 31 + +[Hera] 2-: 10 + +[Hera] 2+: 19 + +[Hera] 1-: 79 + +[Hera] 1+: 84 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] /MOD: 20 + +[Hera] MOD: 38 + +[Hera] /: 35 + +[Hera] *: 50 + +[Hera] -: 34 + +[Hera] +: 135 + +[Hera] CELLS: 18 + +[Hera] ERASE: 11 + +[Hera] MOVE: 11 + +[Hera] FILL: 23 + +[Hera] 2!: 17 + +[Hera] 2@: 14 + +[Hera] -!: 17 + +[Hera] +!: 35 + +[Hera] C!: 51 + +[Hera] C@: 97 + +[Hera] !: 111 + +[Hera] @: 182 + +[Hera] R@: 47 + +[Hera] R>: 64 + +[Hera] >R: 66 + +[Hera] ROLL: 10 + +[Hera] PICK: 16 + +[Hera] DEPTH: 79 + +[Hera] -ROT: 18 + +[Hera] OVER: 22 + +[Hera] SWAP: 41 + +[Hera] DUP: 144 + +[Hera] DROP: 51 + +[Hera] ------------------------------------- + +[Hera] Total executions: 6794 + +[Hera] Total words: 518 + +[Hera] Average executions per word: 13 + +[Hera] [HADES][TEST ] [KRELTSC: 5068024059] Test passed +[Hera] [HADES][TEST ] Testing WORD-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5069470392] Expected: Should display all word entropy stats +[Hera] [HADES][TEST ] [KRELTSC: 5070471819] Running WORD-ENTROPY.after_execution: : WDENT 1 2 + DROP ; WD +[Hera] Word Usage Statistics (Execution Heat Counts): + +[Hera] ============================================= + +[Hera] WDENT: 2 + +[Hera] DEFER@: 2 + +[Hera] IS: 5 + +[Hera] DEFER: 4 + +[Hera] WORD-ENTROPY: 2 + +[Hera] ENTROPY!: 7 + +[Hera] ENTROPY@: 8 + +[Hera] ENDCASE: 10 + +[Hera] ENDOF: 18 + +[Hera] OF: 18 + +[Hera] CASE: 10 + +[Hera] EXIT: 121 + +[Hera] UNLOOP: 6 + +[Hera] J: 58 + +[Hera] I: 212 + +[Hera] LEAVE: 6 + +[Hera] +LOOP: 6 + +[Hera] LOOP: 48 + +[Hera] DO: 42 + +[Hera] ?DO: 10 + +[Hera] UNTIL: 8 + +[Hera] AGAIN: 4 + +[Hera] REPEAT: 10 + +[Hera] WHILE: 10 + +[Hera] BEGIN: 20 + +[Hera] THEN: 32 + +[Hera] ELSE: 14 + +[Hera] IF: 32 + +[Hera] (LEAVE): 6 + +[Hera] (+LOOP): 40 + +[Hera] (LOOP): 152 + +[Hera] (DO): 48 + +[Hera] (?DO): 12 + +[Hera] (0BRANCH): 142 + +[Hera] (BRANCH): 72 + +[Hera] DOES>: 3 + +[Hera] does_rt: 1 + +[Hera] LITERAL: 1 + +[Hera] LIT: 309 + +[Hera] FENCE: 3 + +[Hera] FORGET: 7 + +[Hera] ]: 3 + +[Hera] [: 4 + +[Hera] IMMEDIATE: 6 + +[Hera] CONSTANT: 4 + +[Hera] VARIABLE: 5 + +[Hera] CREATE: 23 + +[Hera] ;: 122 + +[Hera] :: 130 + +[Hera] ABORT": 3 + +[Hera] ABORT: 4 + +[Hera] QUIT: 1 + +[Hera] EXECUTE: 2 + +[Hera] ORDER: 3 + +[Hera] FORTH: 10 + +[Hera] CURRENT: 4 + +[Hera] CONTEXT: 5 + +[Hera] DEFINITIONS: 15 + +[Hera] VOCABULARY: 15 + +[Hera] ': 16 + +[Hera] FIND: 4 + +[Hera] >BODY: 2 + +[Hera] HIDDEN: 2 + +[Hera] SMUDGE: 2 + +[Hera] LATEST: 7 + +[Hera] SP@: 8 + +[Hera] SP!: 5 + +[Hera] PAD: 15 + +[Hera] 2,: 7 + +[Hera] C,: 10 + +[Hera] ,: 21 + +[Hera] ALLOT: 9 + +[Hera] ALIGN: 1 + +[Hera] HERE: 109 + +[Hera] SCR: 3 + +[Hera] THRU: 17 + +[Hera] LIST: 5 + +[Hera] LOAD: 5 + +[Hera] FLUSH: 3 + +[Hera] EMPTY-BUFFERS: 4 + +[Hera] SAVE-BUFFERS: 3 + +[Hera] UPDATE: 7 + +[Hera] BUFFER: 4 + +[Hera] BLOCK: 12 + +[Hera] SPACES: 10 + +[Hera] SPACE: 7 + +[Hera] TYPE: 43 + +[Hera] CR: 659 + +[Hera] EMIT: 15 + +[Hera] BLANK: 2 + +[Hera] SKIP: 4 + +[Hera] SCAN: 5 + +[Hera] SEARCH: 4 + +[Hera] COMPARE: 5 + +[Hera] CMOVE>: 4 + +[Hera] CMOVE: 6 + +[Hera] -TRAILING: 4 + +[Hera] LITERAL: 1 + +[Hera] [']: 3 + +[Hera] BL: 19 + +[Hera] SOURCE: 2 + +[Hera] >IN: 5 + +[Hera] S": 37 + +[Hera] (s"): 4 + +[Hera] WORD: 15 + +[Hera] SPAN: 4 + +[Hera] EXPECT: 4 + +[Hera] COUNT: 14 + +[Hera] OCTAL: 6 + +[Hera] HEX: 7 + +[Hera] DECIMAL: 14 + +[Hera] BASE: 9 + +[Hera] SIGN: 3 + +[Hera] HOLD: 2 + +[Hera] #>: 16 + +[Hera] #S: 11 + +[Hera] #: 5 + +[Hera] <#: 17 + +[Hera] .: 901 + +[Hera] D2/: 5 + +[Hera] D2*: 5 + +[Hera] D0<: 7 + +[Hera] D0=: 7 + +[Hera] 2R@: 3 + +[Hera] 2R>: 7 + +[Hera] 2>R: 7 + +[Hera] 2ROT: 6 + +[Hera] 2OVER: 6 + +[Hera] 2SWAP: 7 + +[Hera] 2DUP: 6 + +[Hera] 2DROP: 6 + +[Hera] D=: 7 + +[Hera] D<: 8 + +[Hera] DMIN: 6 + +[Hera] DMAX: 6 + +[Hera] DABS: 7 + +[Hera] DNEGATE: 6 + +[Hera] D-: 8 + +[Hera] D+: 7 + +[Hera] S>D: 7 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] MOD: 38 + +[Hera] M/MOD: 7 + +[Hera] M*: 8 + +[Hera] M+: 7 + +[Hera] FALSE: 18 + +[Hera] TRUE: 30 + +[Hera] WITHIN: 31 + +[Hera] U>: 25 + +[Hera] U<: 25 + +[Hera] <=: 31 + +[Hera] >=: 31 + +[Hera] >: 30 + +[Hera] <: 74 + +[Hera] <>: 26 + +[Hera] =: 176 + +[Hera] 0<>: 22 + +[Hera] 0>: 27 + +[Hera] 0<: 24 + +[Hera] 0=: 66 + +[Hera] NOT: 18 + +[Hera] XOR: 32 + +[Hera] OR: 22 + +[Hera] AND: 43 + +[Hera] MAX: 26 + +[Hera] MIN: 4 + +[Hera] NEGATE: 30 + +[Hera] ABS: 25 + +[Hera] 2/: 31 + +[Hera] 2*: 31 + +[Hera] 2-: 10 + +[Hera] 2+: 19 + +[Hera] 1-: 79 + +[Hera] 1+: 84 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] /MOD: 20 + +[Hera] MOD: 38 + +[Hera] /: 35 + +[Hera] *: 50 + +[Hera] -: 34 + +[Hera] +: 138 + +[Hera] CELLS: 18 + +[Hera] ERASE: 11 + +[Hera] MOVE: 11 + +[Hera] FILL: 23 + +[Hera] 2!: 17 + +[Hera] 2@: 14 + +[Hera] -!: 17 + +[Hera] +!: 35 + +[Hera] C!: 51 + +[Hera] C@: 97 + +[Hera] !: 111 + +[Hera] @: 182 + +[Hera] R@: 47 + +[Hera] R>: 64 + +[Hera] >R: 66 + +[Hera] ROLL: 10 + +[Hera] PICK: 16 + +[Hera] DEPTH: 79 + +[Hera] -ROT: 18 + +[Hera] OVER: 22 + +[Hera] SWAP: 41 + +[Hera] DUP: 144 + +[Hera] DROP: 54 + +[Hera] ------------------------------------- + +[Hera] Total executions: 6811 + +[Hera] Total words: 519 + +[Hera] Average executions per word: 13 + +[Hera] [HADES][TEST ] [KRELTSC: 5140586052] Test passed +[Hera] [HADES][TEST ] Testing WORD-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5142053490] Expected: Should show defined word entropy +[Hera] [HADES][TEST ] [KRELTSC: 5142994815] Running WORD-ENTROPY.stack_preserved: DEPTH WORD-ENTROPY DEPT +[Hera] Word Usage Statistics (Execution Heat Counts): + +[Hera] ============================================= + +[Hera] WDENT: 2 + +[Hera] DEFER@: 2 + +[Hera] IS: 5 + +[Hera] DEFER: 4 + +[Hera] WORD-ENTROPY: 3 + +[Hera] ENTROPY!: 7 + +[Hera] ENTROPY@: 8 + +[Hera] ENDCASE: 10 + +[Hera] ENDOF: 18 + +[Hera] OF: 18 + +[Hera] CASE: 10 + +[Hera] EXIT: 121 + +[Hera] UNLOOP: 6 + +[Hera] J: 58 + +[Hera] I: 212 + +[Hera] LEAVE: 6 + +[Hera] +LOOP: 6 + +[Hera] LOOP: 48 + +[Hera] DO: 42 + +[Hera] ?DO: 10 + +[Hera] UNTIL: 8 + +[Hera] AGAIN: 4 + +[Hera] REPEAT: 10 + +[Hera] WHILE: 10 + +[Hera] BEGIN: 20 + +[Hera] THEN: 32 + +[Hera] ELSE: 14 + +[Hera] IF: 32 + +[Hera] (LEAVE): 6 + +[Hera] (+LOOP): 40 + +[Hera] (LOOP): 152 + +[Hera] (DO): 48 + +[Hera] (?DO): 12 + +[Hera] (0BRANCH): 142 + +[Hera] (BRANCH): 72 + +[Hera] DOES>: 3 + +[Hera] does_rt: 1 + +[Hera] LITERAL: 1 + +[Hera] LIT: 309 + +[Hera] FENCE: 3 + +[Hera] FORGET: 7 + +[Hera] ]: 3 + +[Hera] [: 4 + +[Hera] IMMEDIATE: 6 + +[Hera] CONSTANT: 4 + +[Hera] VARIABLE: 5 + +[Hera] CREATE: 23 + +[Hera] ;: 122 + +[Hera] :: 130 + +[Hera] ABORT": 3 + +[Hera] ABORT: 4 + +[Hera] QUIT: 1 + +[Hera] EXECUTE: 2 + +[Hera] ORDER: 3 + +[Hera] FORTH: 10 + +[Hera] CURRENT: 4 + +[Hera] CONTEXT: 5 + +[Hera] DEFINITIONS: 15 + +[Hera] VOCABULARY: 15 + +[Hera] ': 16 + +[Hera] FIND: 4 + +[Hera] >BODY: 2 + +[Hera] HIDDEN: 2 + +[Hera] SMUDGE: 2 + +[Hera] LATEST: 7 + +[Hera] SP@: 8 + +[Hera] SP!: 5 + +[Hera] PAD: 15 + +[Hera] 2,: 7 + +[Hera] C,: 10 + +[Hera] ,: 21 + +[Hera] ALLOT: 9 + +[Hera] ALIGN: 1 + +[Hera] HERE: 109 + +[Hera] SCR: 3 + +[Hera] THRU: 17 + +[Hera] LIST: 5 + +[Hera] LOAD: 5 + +[Hera] FLUSH: 3 + +[Hera] EMPTY-BUFFERS: 4 + +[Hera] SAVE-BUFFERS: 3 + +[Hera] UPDATE: 7 + +[Hera] BUFFER: 4 + +[Hera] BLOCK: 12 + +[Hera] SPACES: 10 + +[Hera] SPACE: 7 + +[Hera] TYPE: 43 + +[Hera] CR: 659 + +[Hera] EMIT: 15 + +[Hera] BLANK: 2 + +[Hera] SKIP: 4 + +[Hera] SCAN: 5 + +[Hera] SEARCH: 4 + +[Hera] COMPARE: 5 + +[Hera] CMOVE>: 4 + +[Hera] CMOVE: 6 + +[Hera] -TRAILING: 4 + +[Hera] LITERAL: 1 + +[Hera] [']: 3 + +[Hera] BL: 19 + +[Hera] SOURCE: 2 + +[Hera] >IN: 5 + +[Hera] S": 37 + +[Hera] (s"): 4 + +[Hera] WORD: 15 + +[Hera] SPAN: 4 + +[Hera] EXPECT: 4 + +[Hera] COUNT: 14 + +[Hera] OCTAL: 6 + +[Hera] HEX: 7 + +[Hera] DECIMAL: 14 + +[Hera] BASE: 9 + +[Hera] SIGN: 3 + +[Hera] HOLD: 2 + +[Hera] #>: 16 + +[Hera] #S: 11 + +[Hera] #: 5 + +[Hera] <#: 17 + +[Hera] .: 901 + +[Hera] D2/: 5 + +[Hera] D2*: 5 + +[Hera] D0<: 7 + +[Hera] D0=: 7 + +[Hera] 2R@: 3 + +[Hera] 2R>: 7 + +[Hera] 2>R: 7 + +[Hera] 2ROT: 6 + +[Hera] 2OVER: 6 + +[Hera] 2SWAP: 7 + +[Hera] 2DUP: 6 + +[Hera] 2DROP: 6 + +[Hera] D=: 7 + +[Hera] D<: 8 + +[Hera] DMIN: 6 + +[Hera] DMAX: 6 + +[Hera] DABS: 7 + +[Hera] DNEGATE: 6 + +[Hera] D-: 8 + +[Hera] D+: 7 + +[Hera] S>D: 7 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] MOD: 38 + +[Hera] M/MOD: 7 + +[Hera] M*: 8 + +[Hera] M+: 7 + +[Hera] FALSE: 18 + +[Hera] TRUE: 30 + +[Hera] WITHIN: 31 + +[Hera] U>: 25 + +[Hera] U<: 25 + +[Hera] <=: 31 + +[Hera] >=: 31 + +[Hera] >: 30 + +[Hera] <: 74 + +[Hera] <>: 26 + +[Hera] =: 176 + +[Hera] 0<>: 22 + +[Hera] 0>: 27 + +[Hera] 0<: 24 + +[Hera] 0=: 66 + +[Hera] NOT: 18 + +[Hera] XOR: 32 + +[Hera] OR: 22 + +[Hera] AND: 43 + +[Hera] MAX: 26 + +[Hera] MIN: 4 + +[Hera] NEGATE: 30 + +[Hera] ABS: 25 + +[Hera] 2/: 31 + +[Hera] 2*: 31 + +[Hera] 2-: 10 + +[Hera] 2+: 19 + +[Hera] 1-: 79 + +[Hera] 1+: 84 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] /MOD: 20 + +[Hera] MOD: 38 + +[Hera] /: 35 + +[Hera] *: 50 + +[Hera] -: 34 + +[Hera] +: 138 + +[Hera] CELLS: 18 + +[Hera] ERASE: 11 + +[Hera] MOVE: 11 + +[Hera] FILL: 23 + +[Hera] 2!: 17 + +[Hera] 2@: 14 + +[Hera] -!: 17 + +[Hera] +!: 35 + +[Hera] C!: 51 + +[Hera] C@: 97 + +[Hera] !: 111 + +[Hera] @: 182 + +[Hera] R@: 47 + +[Hera] R>: 64 + +[Hera] >R: 66 + +[Hera] ROLL: 10 + +[Hera] PICK: 16 + +[Hera] DEPTH: 80 + +[Hera] -ROT: 18 + +[Hera] OVER: 22 + +[Hera] SWAP: 41 + +[Hera] DUP: 144 + +[Hera] DROP: 54 + +[Hera] ------------------------------------- + +[Hera] Total executions: 6813 + +[Hera] Total words: 519 + +[Hera] Average executions per word: 13 + +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5212928952] Test passed +[Hera] [HADES][TEST ] Testing WORD-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5214366339] Expected: Should not affect stack +[Hera] [HADES][TEST ] [KRELTSC: 5215269969] WORD-ENTROPY: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5216292816] ▶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5217388953] Testing word: RESET-ENTROPY +[Hera] [HADES][TEST ] [KRELTSC: 5218207890] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5219014899] Running RESET-ENTROPY.reset_defined: : RESETTEST 1 DROP ; RES +[Hera] [HADES][TEST ] [KRELTSC: 5221053495] Test passed +[Hera] [HADES][TEST ] Testing RESET-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5222436576] Expected: Should reset all entropy counters +[Hera] [HADES][TEST ] [KRELTSC: 5223378993] Running RESET-ENTROPY.double_reset: RESET-ENTROPY RESET-ENTRO +[Hera] [HADES][TEST ] [KRELTSC: 5224569882] Test passed +[Hera] [HADES][TEST ] Testing RESET-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5225998785] Expected: Should handle multiple resets +[Hera] [HADES][TEST ] [KRELTSC: 5226895212] Running RESET-ENTROPY.after_usage: 1 DUP DUP DUP DROP DROP DR +[Hera] [HADES][TEST ] [KRELTSC: 5228111868] Test passed +[Hera] [HADES][TEST ] Testing RESET-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5229527352] Expected: Should reset after word usage +[Hera] [HADES][TEST ] [KRELTSC: 5230437177] RESET-ENTROPY: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5231444484] ▶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5232528252] Testing word: TOP-WORDS +[Hera] [HADES][TEST ] [KRELTSC: 5233303194] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5234087943] Running TOP-WORDS.display_top5: : TOPTEST 1 DROP ; TOPTEST TO +[Hera] Top 5 most frequently used words: + +[Hera] ================================== + +[Hera] 1. DROP: 6 + +[Hera] 2. TOPTEST: 5 + +[Hera] 3. EXIT: 5 + +[Hera] 4. LIT: 5 + +[Hera] 5. TOP-WORDS: 1 + +[Hera] [HADES][TEST ] [KRELTSC: 5239047177] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5240433660] Expected: Should display top 5 hot words +[Hera] [HADES][TEST ] [KRELTSC: 5241391764] Running TOP-WORDS.display_top10: 10 TOP-WORDS +[Hera] Top 10 most frequently used words: + +[Hera] ================================== + +[Hera] 1. DROP: 6 + +[Hera] 2. TOPTEST: 5 + +[Hera] 3. EXIT: 5 + +[Hera] 4. LIT: 5 + +[Hera] 5. TOP-WORDS: 2 + +[Hera] 6. ;: 1 + +[Hera] 7. :: 1 + +[Hera] [HADES][TEST ] [KRELTSC: 5245812705] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5247226236] Expected: Should display top 10 words +[Hera] [HADES][TEST ] [KRELTSC: 5248162227] Running TOP-WORDS.after_reset: RESET-ENTROPY 5 TOP-WORDS +[Hera] Top 5 most frequently used words: + +[Hera] ================================== + +[Hera] 1. TOP-WORDS: 1 + +[Hera] [HADES][TEST ] [KRELTSC: 5250860853] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5252229213] Expected: Should handle display after reset +[Hera] [HADES][TEST ] [KRELTSC: 5253192525] Running TOP-WORDS.single_word: 1 TOP-WORDS +[Hera] Top 1 most frequently used words: + +[Hera] ================================== + +[Hera] 1. TOP-WORDS: 2 + +[Hera] [HADES][TEST ] [KRELTSC: 5255585790] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5256969102] Expected: Should display top 1 word +[Hera] [HADES][TEST ] [KRELTSC: 5257850976] Running TOP-WORDS.large_count: 100 TOP-WORDS +[Hera] Top 100 most frequently used words: + +[Hera] ================================== + +[Hera] 1. TOP-WORDS: 3 + +[Hera] [HADES][TEST ] [KRELTSC: 5260254720] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5261680494] Expected: Should handle large count +[Hera] [HADES][TEST ] [KRELTSC: 5262583221] Running TOP-WORDS.zero_count: 0 TOP-WORDS +[Hera] TOP-WORDS: invalid count 0 + +[Hera] [HADES][TEST ] [KRELTSC: 5264017542] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5265446277] Expected: Should handle zero count +[Hera] [HADES][TEST ] [KRELTSC: 5266332015] Running TOP-WORDS.negative_count: -5 TOP-WORDS +[Hera] TOP-WORDS: invalid count -5 + +[Hera] [HADES][TEST ] [KRELTSC: 5267869131] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5269272939] Expected: Should handle negative count +[Hera] [HADES][TEST ] [KRELTSC: 5270208552] Running TOP-WORDS.empty_stack: TOP-WORDS +[Hera] [HADES][ERROR] [KRELTSC: 5271175329] TOP-WORDS: data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 5272009932] Expected error occurred +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5273540937] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 5274443643] TOP-WORDS: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5275433436] ▶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5276513760] Testing word: (- +[Hera] [HADES][TEST ] [KRELTSC: 5277232590] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5278023093] Running (-.comment_line: (- This is a comment +[Hera] 1 2 + . CR +[Hera] [HADES][WARN ] [KRELTSC: 5279468103] (- comment not terminated +[Hera] [HADES][TEST ] [KRELTSC: 5280297960] Test passed +[Hera] [HADES][TEST ] Testing (- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5281680768] Expected: Should ignore rest of line +[Hera] [HADES][TEST ] [KRELTSC: 5282601744] Running (-.mid_line: 1 (- comment here +[Hera] 2 + . CR +[Hera] [HADES][WARN ] [KRELTSC: 5283890871] (- comment not terminated +[Hera] [HADES][TEST ] [KRELTSC: 5284677279] Test passed +[Hera] [HADES][TEST ] Testing (- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5286045849] Expected: Should work mid-expression +[Hera] [HADES][TEST ] [KRELTSC: 5286963318] Running (-.no_stack_effect: DEPTH (- comment +[Hera] DEPTH = . CR +[Hera] [HADES][WARN ] [KRELTSC: 5288290371] (- comment not terminated +[Hera] [HADES][TEST ] [KRELTSC: 5289107082] Test passed +[Hera] [HADES][TEST ] Testing (- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5290500369] Expected: Should not affect stack +[Hera] [HADES][TEST ] [KRELTSC: 5291400198] Running (-.multiple: 1 (- first +[Hera] 2 (- second +[Hera] + . CR +[Hera] [HADES][WARN ] [KRELTSC: 5292969696] (- comment not terminated +[Hera] [HADES][TEST ] [KRELTSC: 5293760346] Test passed +[Hera] [HADES][TEST ] Testing (- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5295099285] Expected: Should handle multiple comments +[Hera] [HADES][TEST ] [KRELTSC: 5296069590] (-: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5297017845] === StarForth Words Summary: 0 passed, 0 failed, 0 skipped, 0 e +[Hera] [HADES][INFO ] [KRELTSC: 5298111672] +[Hera] === Testing Module: ACL Words === +[Hera] [HADES][INFO ] [KRELTSC: 5299257117] Running ACL Words Tests (Module 24)... +[Hera] [HADES][WARN ] [KRELTSC: 5303399850] ACL: denied '__acl_deny_test__' +[Hera] [HADES][INFO ] [KRELTSC: 5305373976] SKIP: STRICT mode test (ACL.4th not loaded) +[Hera] [HADES][INFO ] [KRELTSC: 5306489727] SKIP: ACL-TTL-COMPUTE (ACL.4th not loaded) +[Hera] [HADES][WARN ] [KRELTSC: 5307834147] vm_create_word: cannot shadow pinned word '__acl_shadow_target_ +[Hera] [HADES][TEST ] [KRELTSC: 5312408031] === ACL Words Summary: 29 passed, 0 failed, 0 skipped, 0 errors +[Hera] [HADES][INFO ] [KRELTSC: 5313504819] +[Hera] === Testing Module: Mama FORTH Words === +[Hera] [HADES][INFO ] [KRELTSC: 5314656459] Running Mama FORTH Words Tests (Capsule System M7.1)... +[Hera] [HADES][TEST ] [KRELTSC: 5315736258] Testing word: CAPSULE-COUNT +[Hera] [HADES][TEST ] [KRELTSC: 5316540474] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5317353951] CAPSULE-COUNT: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5318414283] Testing word: CAPSULE@ +[Hera] [HADES][TEST ] [KRELTSC: 5319180006] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5319997389] CAPSULE@: 0 passed, 0 failed, 3 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5320972041] Testing word: CAPSULE-FLAGS@ +[Hera] [HADES][TEST ] [KRELTSC: 5321798958] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5322594081] CAPSULE-FLAGS@: 0 passed, 0 failed, 3 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5323639797] Testing word: CAPSULE-LEN@ +[Hera] [HADES][TEST ] [KRELTSC: 5324443068] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5325225486] CAPSULE-LEN@: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5326248018] Testing word: CAPSULE-HASH@ +[Hera] [HADES][TEST ] [KRELTSC: 5327060907] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5327872179] CAPSULE-HASH@: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5328893178] Testing word: MAMA-VM-ID +[Hera] [HADES][TEST ] [KRELTSC: 5329693320] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5330485356] MAMA-VM-ID: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5331488400] Testing word: VM-COUNT +[Hera] [HADES][TEST ] [KRELTSC: 5332255509] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5333046642] VM-COUNT: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5334037989] Testing word: CAPSULE-BIRTH +[Hera] [HADES][TEST ] [KRELTSC: 5334844389] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5335634892] CAPSULE-BIRTH: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5336666748] Testing word: CAPSULE-RUN +[Hera] [HADES][TEST ] [KRELTSC: 5337461766] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5338248741] CAPSULE-RUN: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5339237295] Testing word: CAPSULE-TEST +[Hera] [HADES][TEST ] [KRELTSC: 5339982585] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5340765612] CAPSULE-TEST: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5341840077] === Mama FORTH Words Summary: 0 passed, 0 failed, 0 skipped, 0 +[Hera] [HADES][INFO ] [KRELTSC: 5342944971] +[Hera] === Testing Module: Q48.16 Words === +[Hera] [HADES][INFO ] [KRELTSC: 5344100097] Running Q48.16 Words Tests (Module 25)... +[Hera] [HADES][TEST ] [KRELTSC: 5345068764] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5346153834] Testing word: Q.+ +[Hera] [HADES][TEST ] [KRELTSC: 5346874890] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5347655880] Running Q.+.basic: 1 Q.FROM-INT 2 Q.FROM-INT Q.+ Q.TO-INT . C +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5349270381] Test passed +[Hera] [HADES][TEST ] Testing Q.+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5350645923] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5353057290] Q.+: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5354036583] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5355109788] Testing word: Q.- +[Hera] [HADES][TEST ] [KRELTSC: 5355842037] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5356635753] Running Q.-.basic: 5 Q.FROM-INT 2 Q.FROM-INT Q.- Q.TO-INT . C +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5358170622] Test passed +[Hera] [HADES][TEST ] Testing Q.- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5359536840] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][INFO ] [KRELTSC: 5361500277] L8[TABLE]: Config 14 → 0 regime=3 score=26214 L1=0 L2=0 L3=0 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5363204175] Q.-: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5364123345] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5365327128] Testing word: Q.* +[Hera] [HADES][TEST ] [KRELTSC: 5366047554] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5366820816] Running Q.*.basic: 3 Q.FROM-INT 4 Q.FROM-INT Q.* Q.TO-INT . C +[Hera] 12 +[Hera] [HADES][TEST ] [KRELTSC: 5368360515] Test passed +[Hera] [HADES][TEST ] Testing Q.* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5369708694] Expected: Should print: 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] [HADES][TEST ] [KRELTSC: 5372093055] Q.*: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5373038517] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5374091541] Testing word: Q./ +[Hera] [HADES][TEST ] [KRELTSC: 5374814130] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5375593041] Running Q./.basic: 10 Q.FROM-INT 2 Q.FROM-INT Q./ Q.TO-INT . +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 5377189776] Test passed +[Hera] [HADES][TEST ] Testing Q./ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5378564310] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 5381030004] Running Q./.by_zero: 5 Q.FROM-INT 0 Q.FROM-INT Q./ Q.TO-INT . +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5382462624] Test passed +[Hera] [HADES][TEST ] Testing Q./ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5383803642] Expected: Should print: 0 (division by zero yields q=0) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5386395042] Q./: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5387306463] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5388354846] Testing word: Q.ABS +[Hera] [HADES][TEST ] [KRELTSC: 5389125441] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5389897905] Running Q.ABS.basic: 3 Q.FROM-INT Q.NEG Q.ABS Q.TO-INT . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5391378027] Test passed +[Hera] [HADES][TEST ] Testing Q.ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5392732065] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5395056828] Q.ABS: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5396008506] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5397065457] Testing word: Q.NEG +[Hera] [HADES][TEST ] [KRELTSC: 5397808248] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5398600620] Running Q.NEG.basic: 5 Q.FROM-INT Q.NEG Q.TO-INT . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 5399949282] Test passed +[Hera] [HADES][TEST ] Testing Q.NEG ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5401316046] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 5403631884] Q.NEG: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5404563360] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5405644713] Testing word: Q.LOG +[Hera] [HADES][TEST ] [KRELTSC: 5406373098] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5407119627] Running Q.LOG.of_one: Q.1 Q.LOG Q.TO-INT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5408511738] Test passed +[Hera] [HADES][TEST ] Testing Q.LOG ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5409872076] Expected: Should print: 0 (ln 1.0 = 0) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 5411712222] L8[TABLE]: Config 0 → 1 regime=3 score=26214 L1=0 L2=0 L3=0 L +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5413429749] Q.LOG: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5414396904] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5415473868] Testing word: Q.EXP +[Hera] [HADES][TEST ] [KRELTSC: 5416242510] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5417016696] Running Q.EXP.of_zero: Q.0 Q.EXP Q.TO-INT . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5418456687] Test passed +[Hera] [HADES][TEST ] Testing Q.EXP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5419842645] Expected: Should print: 1 (e^0 = 1) +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5422283517] Q.EXP: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5423234355] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5424344100] Testing word: Q.SQRT +[Hera] [HADES][TEST ] [KRELTSC: 5425111398] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5425862820] Running Q.SQRT.of_four: 4 Q.FROM-INT Q.SQRT Q.TO-INT . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 5427466296] Test passed +[Hera] [HADES][TEST ] Testing Q.SQRT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5428809372] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 5431167714] Q.SQRT: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5432123340] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5433185142] Testing word: Q.SIN +[Hera] [HADES][TEST ] [KRELTSC: 5433930075] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5434749831] Running Q.SIN.of_zero: Q.0 Q.SIN Q.TO-INT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5436212439] Test passed +[Hera] [HADES][TEST ] Testing Q.SIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5437596507] Expected: Should print: 0 (sin 0 = 0) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5439967323] Q.SIN: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5440919904] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5441965347] Testing word: Q.COS +[Hera] [HADES][TEST ] [KRELTSC: 5442697911] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5443493160] Running Q.COS.of_zero: Q.0 Q.COS Q.TO-INT . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5444988885] Test passed +[Hera] [HADES][TEST ] Testing Q.COS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5446396305] Expected: Should print: 1 (cos 0 = 1) +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5448759603] Q.COS: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5449718358] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5450759034] Testing word: Q.FROM-INT +[Hera] [HADES][TEST ] [KRELTSC: 5451522699] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5452313832] Running Q.FROM-INT.round_trip: 7 Q.FROM-INT Q.TO-INT . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 5453656173] Test passed +[Hera] [HADES][TEST ] Testing Q.FROM-INT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5455059666] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 5457325692] Q.FROM-INT: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5458315191] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5459359941] Testing word: Q.TO-INT +[Hera] [HADES][TEST ] [KRELTSC: 5460091392] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5460862050] Running Q.TO-INT.of_one: Q.1 Q.TO-INT . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5462116947] Test passed +[Hera] [HADES][TEST ] Testing Q.TO-INT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5463514497] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5465773908] Q.TO-INT: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5466751227] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5467778085] Testing word: Q.1 +[Hera] [HADES][TEST ] [KRELTSC: 5468514072] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5469271227] Running Q.1.raw_value: Q.1 . CR +[Hera] 65536 +[Hera] [HADES][TEST ] [KRELTSC: 5470488933] Test passed +[Hera] [HADES][TEST ] Testing Q.1 ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5471840493] Expected: Should print: 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] [HADES][TEST ] [KRELTSC: 5474249151] Q.1: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5475166641] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5476217208] Testing word: Q.0 +[Hera] [HADES][TEST ] [KRELTSC: 5476969554] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5477743005] Running Q.0.raw_value: Q.0 . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5478891684] Test passed +[Hera] [HADES][TEST ] Testing Q.0 ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5480285811] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5482537830] Q.0: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5483478651] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5484537009] Testing word: Q.SCALE +[Hera] [HADES][TEST ] [KRELTSC: 5485285302] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5486054532] Running Q.SCALE.raw_value: Q.SCALE . CR +[Hera] 65536 +[Hera] [HADES][TEST ] [KRELTSC: 5487336414] Test passed +[Hera] [HADES][TEST ] Testing Q.SCALE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5488728294] Expected: Should print: 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] [HADES][TEST ] [KRELTSC: 5491142937] Q.SCALE: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5492120130] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5493188190] Testing word: Q.= +[Hera] [HADES][TEST ] [KRELTSC: 5493916365] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5494686099] Running Q.=.equal: Q.1 Q.1 Q.= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5495960316] Test passed +[Hera] [HADES][TEST ] Testing Q.= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5497330188] Expected: Should print: -1 (true) +[Hera] -1 +[Hera] -1 [HADES][INFO ] [KRELTSC: 5498811885] L8[TABLE]: Config 1 → 2 regime=3 score=26214 L1=0 L2=0 L3=0 L + +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5500671309] Running Q.=.not_equal: Q.1 Q.0 Q.= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5501901048] Test passed +[Hera] [HADES][TEST ] Testing Q.= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5503229781] Expected: Should print: 0 (false) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5505557358] Q.=: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5506490703] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5507548641] Testing word: Q.< +[Hera] [HADES][TEST ] [KRELTSC: 5508288975] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5509205982] Running Q.<.true: Q.0 Q.1 Q.< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5510565690] Test passed +[Hera] [HADES][TEST ] Testing Q.< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5511947280] Expected: Should print: -1 (true) +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5514397581] Running Q.<.false: Q.1 Q.0 Q.< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5515561380] Test passed +[Hera] [HADES][TEST ] Testing Q.< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5516903385] Expected: Should print: 0 (false) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5519240118] Q.<: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5520166806] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5521222581] Testing word: Q.> +[Hera] [HADES][TEST ] [KRELTSC: 5521940844] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5522683299] Running Q.>.true: Q.1 Q.0 Q.> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5523955416] Test passed +[Hera] [HADES][TEST ] Testing Q.> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5525320038] Expected: Should print: -1 (true) +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5527715487] Running Q.>.false: Q.0 Q.1 Q.> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5528899152] Test passed +[Hera] [HADES][TEST ] Testing Q.> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5530247772] Expected: Should print: 0 (false) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5532595320] Q.>: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5533524108] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5534553654] Testing word: Q.0= +[Hera] [HADES][TEST ] [KRELTSC: 5535306441] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5536073088] Running Q.0=.true: Q.0 Q.0= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5537372757] Test passed +[Hera] [HADES][TEST ] Testing Q.0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5538701112] Expected: Should print: -1 (true) +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5541066804] Running Q.0=.false: Q.1 Q.0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5542252296] Test passed +[Hera] [HADES][TEST ] Testing Q.0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5543631450] Expected: Should print: 0 (false) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5545946112] Q.0=: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5546878722] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5547933699] Testing word: Q.MAX +[Hera] [HADES][TEST ] [KRELTSC: 5548670862] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5549458698] Running Q.MAX.basic: 3 Q.FROM-INT 7 Q.FROM-INT Q.MAX Q.TO-INT +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 5550980715] Test passed +[Hera] [HADES][TEST ] Testing Q.MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5552354661] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][INFO ] [KRELTSC: 5554484859] L8[TABLE]: Config 2 → 3 regime=3 score=26214 L1=0 L2=0 L3=0 L +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 5555952255] Q.MAX: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5556882849] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5557942005] Testing word: Q.MIN +[Hera] [HADES][TEST ] [KRELTSC: 5558682696] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5559440061] Running Q.MIN.basic: 3 Q.FROM-INT 7 Q.FROM-INT Q.MIN Q.TO-INT +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5560919679] Test passed +[Hera] [HADES][TEST ] Testing Q.MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5562268530] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5564600202] Q.MIN: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5565550872] ▶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5566598604] Testing word: Q.PRINT +[Hera] [HADES][TEST ] [KRELTSC: 5567352357] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5568145044] Running Q.PRINT.of_one: Q.1 Q.PRINT CR +[Hera] 1.5u +[Hera] [HADES][TEST ] [KRELTSC: 5569698414] Test passed +[Hera] [HADES][TEST ] Testing Q.PRINT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5571120429] Expected: Should print: 1.00000 +[Hera] 1.5u +[Hera] 1.5u +[Hera] 1.5u +[Hera] 1.5u +[Hera] 1.5u +[Hera] [HADES][TEST ] [KRELTSC: 5573495949] Q.PRINT: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5574465708] === Q48.16 Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 5575571169] +[Hera] === Testing Module: Inference Engine Words === +[Hera] [HADES][INFO ] [KRELTSC: 5576792109] Running Inference Engine Words Tests (Module 26)... +[Hera] [HADES][TEST ] [KRELTSC: 5577815796] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5578913109] Testing word: Q.VARIANCE +[Hera] [HADES][TEST ] [KRELTSC: 5579692776] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5580458856] Running Q.VARIANCE.three_cells: 100 HERE ! 200 HERE 8 + ! 300 +[Hera] 6666 +[Hera] [HADES][TEST ] [KRELTSC: 5582374623] Test passed +[Hera] [HADES][TEST ] Testing Q.VARIANCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5583806781] Expected: Should print population variance of {100,200,300} +[Hera] [HADES][TEST ] [KRELTSC: 5584903674] Q.VARIANCE: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5585944539] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5587052457] Testing word: INFER-DECAY-SLOPE +[Hera] [HADES][TEST ] [KRELTSC: 5587926015] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5588769123] Running INFER-DECAY-SLOPE.three_cells: 300 HERE ! 200 HERE 8 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5590907427] Test passed +[Hera] [HADES][TEST ] Testing INFER-DECAY-SLOPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5592360354] Expected: Should print decay slope for a decreasing traject +[Hera] [HADES][TEST ] [KRELTSC: 5593434084] INFER-DECAY-SLOPE: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5594486772] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5595611574] Testing word: INFER-WINDOW-WIDTH +[Hera] [HADES][TEST ] [KRELTSC: 5596455375] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5597253039] Running INFER-WINDOW-WIDTH.three_cells: 100 HERE ! 200 HERE 8 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5598947487] Test passed +[Hera] [HADES][TEST ] Testing INFER-WINDOW-WIDTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5600456085] Expected: Should print an inferred window width (no error) +[Hera] [HADES][TEST ] [KRELTSC: 5601524796] INFER-WINDOW-WIDTH: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5602585590] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5603690862] Testing word: INFER-RUN +[Hera] [HADES][TEST ] [KRELTSC: 5604466959] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5605237260] Running INFER-RUN.basic: INFER-RUN +[Hera] [HADES][TEST ] [KRELTSC: 5609721663] Test passed +[Hera] [HADES][TEST ] Testing INFER-RUN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5611098759] Expected: Should run without error +[Hera] [HADES][TEST ] [KRELTSC: 5611949700] INFER-RUN: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5612689635] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5613512604] Testing word: INFER-WINDOW@ +[Hera] [HADES][TEST ] [KRELTSC: 5614207914] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5614987056] Running INFER-WINDOW@.after_run: INFER-RUN INFER-WINDOW@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5617525914] Test passed +[Hera] [HADES][TEST ] Testing INFER-WINDOW@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5619003054] Expected: Should print last adaptive_window_width (no error +[Hera] [HADES][TEST ] [KRELTSC: 5620098498] INFER-WINDOW@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5621079429] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5622193731] Testing word: INFER-DECAY@ +[Hera] [HADES][TEST ] [KRELTSC: 5622984780] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5623764447] Running INFER-DECAY@.after_run: INFER-RUN INFER-DECAY@ Q.TO-I +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5626110882] Test passed +[Hera] [HADES][TEST ] Testing INFER-DECAY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5627522565] Expected: Should print last adaptive_decay_slope (no error) +[Hera] [HADES][TEST ] [KRELTSC: 5628619416] INFER-DECAY@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5629635312] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5630730063] Testing word: INFER-VARIANCE@ +[Hera] [HADES][TEST ] [KRELTSC: 5631511851] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5632294773] Running INFER-VARIANCE@.after_run: INFER-RUN INFER-VARIANCE@ +[Hera] 1169 +[Hera] [HADES][TEST ] [KRELTSC: 5634687114] Test passed +[Hera] [HADES][TEST ] Testing INFER-VARIANCE@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5636154762] Expected: Should print last window_variance_q48 (no error) +[Hera] [HADES][TEST ] [KRELTSC: 5637217824] INFER-VARIANCE@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5638260852] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5639370366] Testing word: INFER-FIT@ +[Hera] [HADES][TEST ] [KRELTSC: 5640161709] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5640953409] Running INFER-FIT@.after_run: INFER-RUN INFER-FIT@ Q.TO-INT . +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5643365301] Test passed +[Hera] [HADES][TEST ] Testing INFER-FIT@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5644821504] Expected: Should print last slope_fit_quality_q48 (no error +[Hera] [HADES][TEST ] [KRELTSC: 5645908443] INFER-FIT@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5646923751] ▶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5647977930] Testing word: INFER-EARLY-EXIT@ +[Hera] [HADES][TEST ] [KRELTSC: 5648816712] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5649577227] Running INFER-EARLY-EXIT@.after_run: INFER-RUN INFER-EARLY-EX +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5653563741] Test passed +[Hera] [HADES][TEST ] Testing INFER-EARLY-EXIT@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5655061083] Expected: Should print 0 or 1 (no error) +[Hera] [HADES][TEST ] [KRELTSC: 5655953751] INFER-EARLY-EXIT@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5656787304] === Inference Engine Words Summary: 0 passed, 0 failed, 0 skipp +[Hera] [HADES][INFO ] [KRELTSC: 5657613843] +[Hera] === Testing Module: Physics Freeze Words === +[Hera] [HADES][INFO ] [KRELTSC: 5658688791] Running Physics Freeze Words Tests (Module 27)... +[Hera] [HADES][TEST ] [KRELTSC: 5659784529] ▶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5661037305] Testing word: FREEZE-WORD +[Hera] [HADES][TEST ] [KRELTSC: 5661844629] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5662674864] Running FREEZE-WORD.basic: : __freeze_test_word__ ; S" __free +[Hera] 245 +[Hera] [HADES][TEST ] [KRELTSC: 5664760458] Test passed +[Hera] [HADES][TEST ] Testing FREEZE-WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5666157798] Expected: Should print: -1 (word is now frozen) +[Hera] [HADES][TEST ] [KRELTSC: 5667153765] FREEZE-WORD: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5668160820] ▶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5669253366] Testing word: UNFREEZE-WORD +[Hera] [HADES][TEST ] [KRELTSC: 5670066360] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5670870030] Running UNFREEZE-WORD.basic: : __unfreeze_test_word__ ; S" __ +[Hera] 270 +[Hera] [HADES][TEST ] [KRELTSC: 5672886534] Test passed +[Hera] [HADES][TEST ] Testing UNFREEZE-WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5674333665] Expected: Should print: 0 (freeze cleared) +[Hera] [HADES][TEST ] [KRELTSC: 5675262600] UNFREEZE-WORD: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5676293091] ▶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5677371714] Testing word: FROZEN? +[Hera] [HADES][TEST ] [KRELTSC: 5678134203] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5678896797] Running FROZEN?.not_frozen: : __frozen_test_word__ ; S" __fro +[Hera] 224 +[Hera] [HADES][TEST ] [KRELTSC: 5680753008] Test passed +[Hera] [HADES][TEST ] Testing FROZEN? ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5682173637] Expected: Should print: 0 (freshly defined word is not froz +[Hera] [HADES][TEST ] [KRELTSC: 5683266918] Running FROZEN?.not_found: S" __nonexistent_freeze_xyz__" FRO +[Hera] 245 +[Hera] [HADES][TEST ] [KRELTSC: 5684694750] Test passed +[Hera] [HADES][TEST ] Testing FROZEN? ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5686107441] Expected: Should print: 0 (not-found treated as not frozen) +[Hera] [HADES][TEST ] [KRELTSC: 5687151351] FROZEN?: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5688110589] ▶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5689149207] Testing word: HEAT! +[Hera] [HADES][TEST ] [KRELTSC: 5689834710] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5690672631] Running HEAT!.basic: : __heat_store_test_word__ ; 999 S" __he +[Hera] 249 +[Hera] [HADES][TEST ] [KRELTSC: 5692986663] Test passed +[Hera] [HADES][TEST ] Testing HEAT! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5694376002] Expected: Should print: 999 +[Hera] [HADES][TEST ] [KRELTSC: 5695203129] HEAT!: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5696148213] ▶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5697221733] Testing word: HEAT@ +[Hera] [HADES][TEST ] [KRELTSC: 5697941025] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5698711515] Running HEAT@.of_fresh_word: : __heat_fetch_test_word__ ; S" +[Hera] 224 +[Hera] [HADES][TEST ] [KRELTSC: 5700548154] Test passed +[Hera] [HADES][TEST ] Testing HEAT@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5701959018] Expected: Should print: 0 (freshly defined word has zero he +[Hera] [HADES][TEST ] [KRELTSC: 5703085752] HEAT@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5703986022] ▶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5705051667] Testing word: DECAY-RATE@ +[Hera] [HADES][TEST ] [KRELTSC: 5705881503] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5706656718] Running DECAY-RATE@.basic: DECAY-RATE@ . CR +[Hera] 224 +[Hera] [HADES][TEST ] [KRELTSC: 5708108175] Test passed +[Hera] [HADES][TEST ] Testing DECAY-RATE@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5709529182] Expected: Should print the compile-time DECAY_RATE_PER_US_Q +[Hera] [HADES][TEST ] [KRELTSC: 5710727988] DECAY-RATE@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5711790336] === Physics Freeze Words Summary: 0 passed, 0 failed, 0 skipped +[Hera] [HADES][INFO ] [KRELTSC: 5712900585] FINAL TEST SUMMARY: +[Hera] [HADES][INFO ] [KRELTSC: 5713639281] Total tests run: 1050 +[Hera] [HADES][INFO ] [KRELTSC: 5714414664] Passed: 1012 +[Hera] [HADES][INFO ] [KRELTSC: 5715210207] Failed: 0 +[Hera] [HADES][INFO ] [KRELTSC: 5715968937] Stubs (not yet implemented): 38 +[Hera] [HADES][INFO ] [KRELTSC: 5716839450] Errors: 0 +[Hera] [HADES][INFO ] [KRELTSC: 5717639634] ALL IMPLEMENTED TESTS PASSED! +[Hera] [HADES][INFO ] [KRELTSC: 5718514704] Contract checks (A4'/A1): all passed +[Hera] [HADES][INFO ] [KRELTSC: 5719433601] ============================================== +[Hera] PARITY:M7.1a word_count=532 here=0x00000000000000d8 latest_id=701 hash=0x7e41c4035bee764d +[Hera] PARITY:OK +[Hera] POST: PASSED +[Hera] [HAL][exec] regions frozen: +[Hera] kernel.text: [0x000000003d70e000, 0x000000003d75d5ea) +[Hera] VM: parity bootstrap complete +[Hera] PCI: init... +[Hera] PCI: ECAM mapped (amd64) +[Hera] virtio-rng: found device +[Hera] rng: backend = virtio-rng +[Hera] entropy: ready +[Hera] virtio-blk: found device +[Hera] Artemis: virtio-blk attached +[Hera] virtio-input: no device on PCI bus 0 +[Hera] Init: Mama birth... +[Hera] [HADES][WARN ] [KRELTSC: 5885201028] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 5890173891] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 6068193012] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 6071854719] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 6366641631] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 6585892509] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6588438423] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6602540427] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6605016138] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6607555710] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6610034067] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6612792774] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6615381612] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6617810682] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6620302836] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6623064084] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6625517682] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6628028001] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6630777951] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6633294360] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6635826792] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6638471238] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6641259366] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6643801143] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6646377360] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6648944148] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6651490188] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6654276027] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6656873979] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6659453262] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6671482629] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6673937319] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6676286967] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6679065750] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6681933090] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6685087878] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6687546621] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6690484836] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6702753876] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6705773970] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6708711345] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6712198731] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6724179210] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6726650973] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6729498321] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6732367446] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6736041543] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6739370715] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6751989321] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6762427413] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6771543870] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6781152735] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6790266231] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6799514043] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6820793133] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6830270622] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6839505687] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6848780967] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6858398295] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6867633822] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6887690355] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6897201402] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6906650100] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6916008015] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6925119747] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6934397442] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6943968843] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6952883847] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6961835979] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6970880805] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6979877142] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6988778307] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 6997758306] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 7018195107] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 7027184388] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 7036216761] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 7045218768] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 7054300617] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 7063447713] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[Hera] [HADES][WARN ] [KRELTSC: 7072636074] vm_dictionary_track_entry: out of stable IDs, disabling metrics + +[Hera] ================================================ +[Hera] LithosAnanke — FORTH-79 bare-metal kernel +[Hera] Stadium step one: Hera alone +[Hera] ================================================ +[Hera] Hera [live] +[Hera] ================================================ + +[Hera] (no identity) +[Hera] PARITY:MAMA_INIT capsule_id=0x1ef4939ed32ec1e6 mode=m capsule_hash=0x1ef4939ed32ec1e6 dict_hash=0x452d5d6f8ba81d19 +[Hera] Init: Mama birth OK +[Hera] ACL: CAPSULE-BIRTH pinned STRICT +[Hera] ACL: BIRTH pinned STRICT +[Hera] Starting heartbeat... +[Hera] APIC Timer: started (LVT=0x00020020 ICR=10089873) +[Hera] I/O APIC: keyboard IRQ1 unmasked +[Hera] Heartbeat running. +[Hera] Stadium words: promotions=705 evictions=0 +[Hera] Stadium conservation: resident_sum=47641 reservoir=17895 sum=65536 (Q48_ONE=65536) +[Hera] Stadium quota grant self-test: OK +[Hera] Hera reservoir=17895 +[Hera] test-vm reservoir=65536 +[Hera] Startup: birthing Hermes (fleet foundation)... +[Hermes] (no identity) +[Hermes] PARITY:BIRTH vm_id=0xbc2ca8d118904a3b-0xa5c18737a93e539d capsule_id=0x2df61924448a6812 mode=p capsule_hash=0x2df61924448a6812 dict_hash=0x1ca2a49663ad28f7 +[Hera] BIRTH: Hermes live +[Hera] Startup: Hermes live +[Hera] Startup: birthing Artemis (fleet foundation)... +[Artemis] Artemis: LithosAnanke disk -- resuming +[Artemis] Artemis: persist-read... +[Artemis] PASS: persist-read +[Artemis] Artemis ready +[Artemis] Artemis: 22998 data blocks +[Artemis] K-total=[HADES][WARN ] [KRELTSC: 9673854456] INFERENCE: Output validation failed, ignoring results +[Artemis] 0.5u +[Artemis] ARTEMIS-K=1.5u +[Artemis] (no identity) +[Artemis] [HADES][WARN ] [KRELTSC: 15099910413] ( Unterminated comment +[Artemis] PARITY:BIRTH vm_id=0xe9d4524e32e842d2-0xa7c734250974dd94 capsule_id=0xf55edc4e76a8c294 mode=p capsule_hash=0xf55edc4e76a8c294 dict_hash=0x5da47458b01b32d5 +[Hera] BIRTH: Artemis live +[Hera] Startup: Artemis live +[Hera] Heartbeat: 374 ticks, trust=0x00010000, variance=0x00000000 +[Hera] blkio_usb: MSC device ready +[Hera] Zuse: identity confirmed from attached thumbdrive +[Hera] LithosAnanke v2.0.0 +[Hera] StarForth Version 3.1.0 + +[Hera] StarForth CLI +[Hera] FORTH-79 interpreter type BYE or power off to exit + +[zuse@Hera] ok> S" multiuser-doe.4th" EXEC +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30784016634] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30795838941] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30805618494] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30814559832] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30824043033] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30832758579] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30841730136] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30850635795] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30859327527] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30868321050] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30880256946] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30893518257] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30905099316] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30920643978] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30942690618] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30965019288] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 30987245100] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31009502622] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31031475636] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31054680573] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31077156201] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31099443837] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31121618934] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31143926121] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31166240637] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31190298552] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31212515397] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31235199975] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31257084831] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31279058202] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31301298105] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31323816237] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31345772325] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31367702814] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31389673203] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31411586346] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31433495331] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31455516519] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31478091939] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31500183456] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31522394904] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31546723026] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31568952282] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31591417179] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] [HADES][WARN ] [KRELTSC: 31613711745] vm_dictionary_track_entry: out of stable IDs, disabling metrics +[zuse@Hera] ok +[zuse@Hera] ok>  +[zuse@Hera] ok +[zuse@Hera] ok> 1 0 0 2 0 0 S" amd64" DOE-PERSIST-TRIAL +[zuse@Hera] ok +[zuse@Hera] ok>  +[zuse@Hera] ok +[zuse@Hera] ok> 2 0 1 2 0 0 S" amd64" DOE-PERSIST-TRIAL +[zuse@Hera] ok +[zuse@Hera] ok>  +[zuse@Hera] ok +[zuse@Hera] ok> 3 5 0 8 1 1 S" amd64" DOE-PERSIST-TRIAL +[zuse@Hera] ok +[zuse@Hera] ok>  +[zuse@Hera] ok +[zuse@Hera] ok> BYE +[zuse@Hera] BYE: reaping children +[zuse@Hera] PARITY:KILL vm_id=0xbc2ca8d118904a3b-0xa5c18737a93e539d name=Hermes +[zuse@Hera] PARITY:KILL vm_id=0xe9d4524e32e842d2-0xa7c734250974dd94 name=Artemis +[zuse@Hera] BYE: cold restart diff --git a/scripts/build_multiuser_doe_report.sh b/scripts/build_multiuser_doe_report.sh new file mode 100755 index 00000000..250d41c5 --- /dev/null +++ b/scripts/build_multiuser_doe_report.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash +# build_multiuser_doe_report.sh — full pipeline: disk -> CSV -> R/SVG -> PDF +# +# Chains: extract_doe_region.py (spool DOE-PERSIST-TRIAL records off +# disk/artemis.img) -> analyse_multiuser_doe.R (tables + SVG charts + +# auto-generated summary fragment) -> svg_to_pdf.py (SVG -> PDF for +# \includegraphics) -> pdflatex (twice, for cross-references) -> +# multiuser_doe_report.pdf. +# +# Safe to re-run at any point, including while a multi-day campaign is +# still executing on a separate QEMU instance: every step is read-only +# with respect to disk/artemis.img, and analyse_multiuser_doe.R degrades +# to a "no data yet" placeholder rather than failing when the DoE region +# has 0 trials so far. +# +# Usage: +# scripts/build_multiuser_doe_report.sh [--loop] [--csv PATH] +# +# --loop Attach disk/artemis.img via losetup instead of reading +# the file directly (needs sudo). See extract_doe_region.py. +# --csv PATH Skip disk extraction entirely and analyse an existing +# CSV instead (e.g. to smoke-test this pipeline against +# an old per-tick run CSV, or a CSV saved from a previous +# extraction). + +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$REPO_ROOT" + +ANALYSIS_DIR="experiments/bare_metal/analysis" +RUNS_DIR="experiments/bare_metal/runs" +REPORT_DIR="$ANALYSIS_DIR/report" +CSV_OUT="$RUNS_DIR/multiuser-doe-trials.csv" + +USE_LOOP=0 +CSV_OVERRIDE="" + +while [ $# -gt 0 ]; do + case "$1" in + --loop) USE_LOOP=1; shift ;; + --csv) CSV_OVERRIDE="$2"; shift 2 ;; + *) echo "Unknown argument: $1" >&2; exit 1 ;; + esac +done + +echo "=== [1/4] Extracting trial records ===" +if [ -n "$CSV_OVERRIDE" ]; then + echo " Using existing CSV: $CSV_OVERRIDE (skipping disk extraction)" + CSV_OUT="$CSV_OVERRIDE" +elif [ -f disk/artemis.img ]; then + mkdir -p "$RUNS_DIR" + if [ "$USE_LOOP" -eq 1 ]; then + python3 scripts/extract_doe_region.py --img disk/artemis.img --loop -o "$CSV_OUT" + else + python3 scripts/extract_doe_region.py --img disk/artemis.img -o "$CSV_OUT" + fi +else + echo " disk/artemis.img not found -- writing an empty CSV so the report" >&2 + echo " still builds with a 'no data yet' placeholder." >&2 + mkdir -p "$RUNS_DIR" + echo "isa,run_id,cfg,rep,nw,mode,fail_count,fleet_k_q48,fleet_conserved,switch_count_cumulative" > "$CSV_OUT" +fi + +echo "" +echo "=== [2/4] Running R analysis (tables + charts + summary fragment) ===" +Rscript "$ANALYSIS_DIR/analyse_multiuser_doe.R" "$CSV_OUT" + +echo "" +echo "=== [3/4] Converting SVG charts to PDF ===" +python3 "$ANALYSIS_DIR/svg_to_pdf.py" + +echo "" +echo "=== [4/4] Building PDF report ===" +mkdir -p "$REPORT_DIR/sections" +if [ ! -f "$REPORT_DIR/sections/multiuser_summary_autogen.tex" ]; then + echo "No trial data has been persisted to the DoE region yet." \ + > "$REPORT_DIR/sections/multiuser_summary_autogen.tex" +fi + +cd "$REPORT_DIR" +pdflatex -interaction=nonstopmode -halt-on-error multiuser_doe_report.tex >/tmp/multiuser_doe_report_latex1.log 2>&1 || { + echo "pdflatex (pass 1) failed -- see /tmp/multiuser_doe_report_latex1.log" >&2 + tail -40 /tmp/multiuser_doe_report_latex1.log >&2 + exit 1 +} +pdflatex -interaction=nonstopmode -halt-on-error multiuser_doe_report.tex >/tmp/multiuser_doe_report_latex2.log 2>&1 || { + echo "pdflatex (pass 2) failed -- see /tmp/multiuser_doe_report_latex2.log" >&2 + tail -40 /tmp/multiuser_doe_report_latex2.log >&2 + exit 1 +} +cd "$REPO_ROOT" + +echo "" +echo "=== Done ===" +echo " PDF: $REPORT_DIR/multiuser_doe_report.pdf" diff --git a/scripts/extract_doe_region.py b/scripts/extract_doe_region.py new file mode 100755 index 00000000..a83b87d8 --- /dev/null +++ b/scripts/extract_doe_region.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python3 +""" +extract_doe_region.py -- spool the DOE-PERSIST-TRIAL binary ring off +disk/artemis.img into a CSV, for the multiuser/multitasking DoE campaign +report (FABRIC-3.md §XXXV.10). + +Reads the SAME devblock_from_top-addressed ring doe_region.c writes +(include/starkernel/doe_region.h has the authoritative layout: control +header at devblock_from_top=98, slot devblocks growable from 99, 64-byte +doe_trial_slot_t records, 64 slots/devblock). Two access modes: + + --img PATH Read the image file directly (default). No privilege + needed, works on a plain regular file. This is what + "reading the drive" reduces to when the image is + just a file, which is the normal QEMU-dev case. + + --loop PATH Attach PATH via losetup first (needs sudo), read the + resulting /dev/loopN node, then detach it again on + exit -- the literal "mount the virtual drive on a + loop device" step for when this runs against a real + block device or a copy pulled off real hardware. The + ring is raw binary at a fixed byte offset, not a + filesystem -- there is nothing to `mount` in the + POSIX-filesystem sense, so this attaches the loop + device and reads it exactly like a regular file. + +Either mode is read-only and never modifies the image. Safe to run +against a live campaign's artemis.img (the ring's control header CRC +means a torn read mid-write is simply rejected as "ring not yet +initialized" by the same discipline doe_region.c itself uses -- see +doe_region_ctrl_read()); worst case is missing the very latest record +until the next run of this script. +""" + +import argparse +import csv +import struct +import subprocess +import sys +from contextlib import contextmanager +from pathlib import Path + +DEVBLOCK_SIZE = 4096 + +# Mirrors include/starkernel/doe_region.h and include/starkernel/log_region.h +ARTEMIS_SIG_DEVBLOCK_FROM_TOP = 64 +LOG_REGION_DEVBLOCK_FROM_TOP_BASE = ARTEMIS_SIG_DEVBLOCK_FROM_TOP + 1 # 65 +LOG_REGION_MAX_DEVBLOCKS = 32 +DOE_REGION_DEVBLOCK_FROM_TOP_BASE = ( + LOG_REGION_DEVBLOCK_FROM_TOP_BASE + 1 + LOG_REGION_MAX_DEVBLOCKS +) # 98 + +DOE_SLOT_SIZE = 64 +DOE_SLOTS_PER_DEVBLOCK = DEVBLOCK_SIZE // DOE_SLOT_SIZE # 64 +DOE_REGION_MAGIC = 0x44454F44 # 'DOED' +DOE_REGION_VERSION_0 = 0 + +# doe_region_ctrl_t: magic(u64) devblocks(u32) head_slot(u32) tail_slot(u32) +# record_count(u32) hdr_crc(u64), little-endian, rest is padding to 4096. +CTRL_FMT = " int: + idx = total_devblocks - 1 - devblock_from_top + if idx < 0: + raise ValueError( + f"devblock_from_top={devblock_from_top} exceeds total_devblocks={total_devblocks}" + ) + return idx * DEVBLOCK_SIZE + + +@contextmanager +def loop_attach(img_path: Path): + """Attach img_path via losetup (read-only), yield the /dev/loopN path, + detach on exit. Requires sudo -- the literal 'mount on a loop device' + step; nothing here is a filesystem mount.""" + result = subprocess.run( + ["sudo", "losetup", "--find", "--show", "--read-only", str(img_path)], + capture_output=True, text=True, check=True, + ) + loop_dev = result.stdout.strip() + print(f" attached {img_path} -> {loop_dev}", file=sys.stderr) + try: + yield loop_dev + finally: + subprocess.run(["sudo", "losetup", "--detach", loop_dev], check=False) + print(f" detached {loop_dev}", file=sys.stderr) + + +def read_ring(dev_path: str): + """Returns a list of dicts, one per live trial record, in ring order + (oldest first). Empty list if the ring has never been written.""" + size = Path(dev_path).stat().st_size if not dev_path.startswith("/dev/") else None + if size is None: + with open(dev_path, "rb") as f: + f.seek(0, 2) + size = f.tell() + + total_devblocks = size // DEVBLOCK_SIZE + if total_devblocks <= DOE_REGION_DEVBLOCK_FROM_TOP_BASE: + raise ValueError( + f"image too small ({size} bytes, {total_devblocks} devblocks) " + f"for the DOE region fence (needs > {DOE_REGION_DEVBLOCK_FROM_TOP_BASE})" + ) + + ctrl_off = dft_to_offset(DOE_REGION_DEVBLOCK_FROM_TOP_BASE, total_devblocks) + with open(dev_path, "rb") as f: + f.seek(ctrl_off) + ctrl_raw = f.read(DEVBLOCK_SIZE) + + magic, devblocks, head_slot, tail_slot, record_count, hdr_crc = struct.unpack_from( + CTRL_FMT, ctrl_raw, 0 + ) + magic_lo = magic & 0xFFFFFFFF + version = (magic >> 32) & 0xFF + if magic_lo != DOE_REGION_MAGIC or version != DOE_REGION_VERSION_0: + print(" DOE region not yet initialized (no trials persisted yet)", file=sys.stderr) + return [] + + total_slots = devblocks * DOE_SLOTS_PER_DEVBLOCK + records = [] + with open(dev_path, "rb") as f: + idx = head_slot + for _ in range(record_count): + slot_devblock_dft = DOE_REGION_DEVBLOCK_FROM_TOP_BASE + 1 + (idx // DOE_SLOTS_PER_DEVBLOCK) + slot_off_in_devblock = (idx % DOE_SLOTS_PER_DEVBLOCK) * DOE_SLOT_SIZE + blk_off = dft_to_offset(slot_devblock_dft, total_devblocks) + f.seek(blk_off + slot_off_in_devblock) + raw = f.read(SLOT_SIZE) + (fleet_k_q48, switch_count, run_id, cfg, rep, nw, mode, + fail_count, fleet_conserved, isa_raw) = struct.unpack(SLOT_FMT, raw) + isa = isa_raw.split(b"\x00", 1)[0].decode("ascii", errors="replace") + records.append({ + "isa": isa, + "run_id": run_id, + "cfg": cfg, + "rep": rep, + "nw": nw, + "mode": mode, + "fail_count": fail_count, + "fleet_k_q48": fleet_k_q48, + "fleet_conserved": fleet_conserved, + "switch_count_cumulative": switch_count, + }) + idx = (idx + 1) % total_slots + + print(f" ring: devblocks={devblocks} head={head_slot} tail={tail_slot} " + f"record_count={record_count} -> {len(records)} records read", file=sys.stderr) + return records + + +def main(): + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("--img", default="disk/artemis.img", help="Path to the disk image (default: disk/artemis.img)") + ap.add_argument("--loop", action="store_true", help="Attach --img via losetup first (needs sudo)") + ap.add_argument("-o", "--out", default=None, help="Output CSV path (default: stdout)") + args = ap.parse_args() + + img_path = Path(args.img) + if not img_path.exists(): + print(f"extract_doe_region: image not found: {img_path}", file=sys.stderr) + sys.exit(1) + + if args.loop: + with loop_attach(img_path) as loop_dev: + records = read_ring(loop_dev) + else: + records = read_ring(str(img_path)) + + fieldnames = ["isa", "run_id", "cfg", "rep", "nw", "mode", "fail_count", + "fleet_k_q48", "fleet_conserved", "switch_count_cumulative"] + + out_f = open(args.out, "w", newline="") if args.out else sys.stdout + try: + writer = csv.DictWriter(out_f, fieldnames=fieldnames) + writer.writeheader() + for rec in records: + writer.writerow(rec) + finally: + if args.out: + out_f.close() + print(f" wrote {len(records)} rows -> {args.out}", file=sys.stderr) + + +if __name__ == "__main__": + main()