SlimeRESCUE-VOS3 — implementation and verification, primary materials

The development process, the verification procedure and the primary materials are separated here from the product page. The figures are measured against the implementation, and where something is not verified we say so.

1. Implementation phases and size Open

PhaseDescriptionSizeVerification
A ✓z/Arch instruction disassembler, 33 format families 100% coverage757 lines28/33 PASS (5 alias), 18 formats 20/20 PASS, cobol-like seq 8/8 PASS
B ✓s390x ELF64 BE parser (Linux file(1) recognises "IBM S/390")260 linesELF roundtrip 8/8 PASS
C ✓Slot IR mapping (67 mnemonic table, compatible with existing SlimeNENC slot.c backend)406 linesSlot IR mapping 8/8 PASS
D ✓z/OS LOADLIB / PDS parser (256-byte directory blocks, EBCDIC member name, TTR pointers)275 linesPDS roundtrip 3 members byte-exact + pipeline 8/8 PASS
E ✓Python z/Arch interpreter (25 instructions + packed BCD decimal + Hercules-style trace)342 linesbehavioural 6/6 PASS + Hercules 3.13 cross-validated 6/6
F-1 ✓unified CLI + HTTP service (127.0.0.1:8770, 4 endpoints, slot/java/trace/all)316 linesE2E 5 tests PASS + curl operational verification
Total3,588 linesAll 8 tests PASS / regression 0

2. Cross-validation against the Hercules 3.13 official emulator Open

To establish the trustworthiness of SlimeRESCUE-VOS3 we executed the same hex stream on the Hercules 3.13 IBM-recognised open-source z/Architecture emulator (widely used in research and at customer sites) and compared the results in full.

EnvironmentHercules 3.13 (Ubuntu apt-get), CPUMODEL 3090, MAINSIZE 16MB
Test stream32 bytes / 8 instructions (AR / A / LM / STM / MVC / AP / CLI / BCR)
Disasm comparison6/6 instructions exact match on mnemonic + operands (1A12=AR 1,2; 5A134FC0=A 1,3(4); 98256F00=LM 2,5,3840(6); ...)Note: the denominator 6 is out of 8 instructions. The sign nibbles in the test data are not valid packed decimal, so real hardware stops with a data exception at the AP, before the 7th instruction. The comparison extends only to that point. A corrected bench is in preparation.
Register stateGR1 final = 0x15E (= 350), exact match between SlimeRESCUE interpreter and Hercules

Correction (2026-07-26): Our own implementation conformance audit found that the test data used in this bench is not valid packed decimal, and that real Hercules raises a data exception at the AP. We have therefore withdrawn the claim "Memory state: MVC + AP writes at 0x8000-0x800F byte-exact match", and corrected the interpreter instruction list to the 25 instructions that are actually implemented. A corrected bench is in preparation.

※ Hercules is widely used by z/OS customers as a verification environment. Matching it provides a defensible basis that the runtime behaviour of the same machine-code binary on Hitachi VOS3 / Fujitsu MSP / IBM z/OS hardware will be reproduced in the Java/COBOL/Rust target.

3. Verified figures Open

Every figure in this section is generated from a live measurement by claims/emit_claims.py. None of them is typed by hand. An item that was not generated is left empty — a stale number is never carried forward.

exists-over-tested means it held over the range that was measured. It is not a claim about all inputs.

the executed prefix of the corrected stream matches Hercules 3.13 at every observation point bench-trace-prefix-20260726

GR1350
mem[0x8000..0x800F]444154415f464f525f4d564321212121
mem[0x7800..0x7802]12355c
cc0
exceptionNone
instructions_executed8
Agrees with the oracleyes
Guarantee levelS
Quantifierexists-over-tested
Measured overstreams=1, instructions_decoded=8, instructions_executed=8, prefix_terminates_at=0xdeadbeef, terminal_event=left-mapped-range
ObservedGR0-15, mem[0x8000..0x800F], mem[0x7800..0x7802], cc, exception
OracleHercules 3.13 ISA-only
Provenance of the expected valueestablished on real hardware
level capS — a differential test establishes semantic equivalence under the declared obs, not byte-exactness. Rises to B when every instruction executed carries a proved obligation (SMT), which does not exist yet
audit_hashsha256:8391695c94e97bd80122e950f3e3e9761933ea251d827779002ec9cb1536eb4d

the routine as a whole, including its return to the caller bench-routine-level-20260726

Agrees with the oracleyes
Guarantee levelR
Quantifierexists-over-tested
Measured overstreams=1, instructions_decoded=8
ObservedGR0-15, mem[0x8000..0x800F], mem[0x7800..0x7802], cc, exception
OracleHercules 3.13 ISA-only
Provenance of the expected valueestablished on real hardware
Unmodeledbranch target outside the decoded range: 0xdeadbeef
blocked byno linkage-ABI model: the return through R14 leaves the lifted range, and nothing here can tell a normal return from a wild branch. This row rises to the trace-prefix level once the R13 save-area chain / R14 / R15 / R1 model exists — without re-running the bench.
audit_hashsha256:8391695c94e97bd80122e950f3e3e9761933ea251d827779002ec9cb1536eb4d

PoO conformance of the 25-instruction interpreter conformance-suite-20260726

total13
conform13
Guarantee levelS
Quantifierexists-over-tested
Measured overtests=13, instruction_set=25
Observedregisters, storage, cc, exception, guarantee-level
OracleHercules 3.13 ISA-only
Provenance of the expected valuemixed — see the breakdown
Breakdownestablished on real hardware: T1, T3, T5, T6, T7, T8
a fail-closed design decision: T12, T13, T14
a consistency check against the repo: T11
a reading of the PoO from memory (no citation yet): T10, T2, T4, T9
audit_hashsha256:4124b5434b5cb0ac6ecb2ef213ef81b8909c7c84792ea07ec17fefe6107e264c

decode of one instruction per format family, against Hercules 3.13 decode-vs-hercules-20260726

format_families32
oracle_confirmed26
oracle_gap5
arch_level_divergence1
genuine_mismatches0
streams_in_file33
placeholders_excluded1
Guarantee levelS
Quantifierexists-over-tested
Measured overformat_families=32, instructions_per_family=1, generator=samples/test_33formats.py streams
Observedmnemonic
OracleHercules 3.13 ISA-only
Provenance of the expected valueestablished on real hardware
Unmodelede70000000056
e70000000044
e70000000013
e70000000060
e70000000036
e60000000035
findingE6 decodes as vlrl (VSI, arch12) for us and as FREE (ECPS:VM assist) for Hercules 3.13. The opcode space was reallocated between architecture levels and the decoder has no architecture-level parameter: it always resolves to the newest meaning. The opcode table already carries the level (generation / arch columns) and decode_one ignores both. For modules that predate the level in question this is a silent misdecode, not a failure to decode.
caveatcompares the mnemonic only. Operand extraction is confirmed against hardware only for the formats that appear in the executed benches (RR / RX / RS / SS / SI).
supersedesthe note 'Phase A: 28/33 PASS (5 alias)'. The unconfirmed cases are not aliases: 5 are vector-facility formats that Hercules 3.13 predates and cannot disassemble, 1 is an architecture-level divergence, and 1 stream in the file is a placeholder rather than a family vector. The 2 genuine alias cases are jxh/brxh and jxle/brxle.
audit_hashsha256:311b806f00347dc6ff1df3403875191b38465fae3b465c98465f0ebc0099d590

architecture-level cut on the opcode table arch-level-cut-20260726

table_entries_all_levels1778
table_entries_esa390448
removed_by_era_cut1330
bench_ceiling_generationg5
bench_zarch_only_instructions0
Guarantee levelB
Quantifierfor-all-table-entries
Measured oversource=GNU binutils s390-opc.txt arch column
Observedtable membership by architecture level
OracleGNU binutils s390-opc.txt encoding-table
Provenance of the expected valuea consistency check against the repo
findingthe corrected bench has an observed ceiling of g5 and uses no z/Architecture-only instruction, so declaring ESA/390 for it costs nothing. A declared level is checked against the observed ceiling; a module declared ESA/390 that needs a z-only opcode is contested rather than trusted.
caveatthe cut only removes. Meanings that existed in the target era but are absent from a binutils table — ECPS:VM assists, withdrawn S/370 instructions, Hitachi extensions — cannot be restored by lowering the level. They decode as unknown and drop the guarantee level, which is the right direction to fail but bounds coverage over a real module by the table's own era as well as by the decoder.
audit_hashsha256:75c252d858c338734b8c52171e28346d44d619be48613de025dddbab67c5730f

the ESA/390 opcode cut, asked of the machine by execution arch-cut-execution-validated-20260726

sampled_opcodes48
agree47
disagree1
disagreements['lcdfr']
Guarantee levelS
Quantifiersampled
Measured overopcodes_sampled=48, seed=11
Observedoperation exception (program interruption code 1)
OracleHercules 3.13 execution
Provenance of the expected valueestablished on real hardware
findingHercules' disassembler is not gated by ARCHMODE - in ESA/390 mode it still names LGR, LG, LMG, MVCOS, NIAI and the rest, so it cannot serve as an era-matched decode oracle. Execution is gated, and an operation exception answers exactly the question 'did this opcode exist at this level', so the cut is validated that way instead.
caveatthe one disagreement is LCDFR, which the table marks z/Architecture-only but which ESA/390 execution accepts: the oracle's own gating is per-instruction and not complete. The difference is in the safe direction - the filter refuses what the machine would have run.
audit_hashsha256:5e26cc2cc00e17e793122c4ec01eceb4b50299eab59a281a2f883281bf932838

the same decode comparison with both sides set to ESA/390 decode-vs-hercules-esa390-20260726

streams33
identical12
we_filtered_oracle_did_not13
our_table_entries448
Guarantee levelS
Quantifierexists-over-tested
Measured overstreams=33, our_arch_level=esa
Observedmnemonic
OracleHercules 3.13 ISA-only
Provenance of the expected valueestablished on real hardware
findingevery Hercules run in this audit before this point used a config with no ARCHMODE line, which defaults to ESA/390 - including the corrected bench. That was never recorded. It happens to be the era-appropriate mode for VOS3 / MSP work and the bench needs nothing newer (its observed ceiling is g5), but the environment is now part of every oracle row instead of being implicit.
caveatthe differences are not disagreements about decoding: in 13 of them the filter removed a z-only opcode and the oracle, whose disassembler ignores ARCHMODE, named it anyway. Read together with the execution-validated row rather than on its own.
audit_hashsha256:08ae8b3940d1336a1a83833f185070bb9d1efef24d24f20238d1a9c592b2993e

removal of the best-effort decode fallback decode-fail-open-removed-20260726

fallback_rate_all_levels_pct1.0
fallback_rate_esa390_pct0.6
sample_size200000
statusremoved
Guarantee levelB
Quantifiersampled
Measured overrandom_byte_sequences=200000, seed=7
Observedwhich candidate path a decode took
Oracleinternal instrumentation decoder
Provenance of the expected valuea consistency check against the repo
findingdecode_one accepted the first candidate key present in the table even after that candidate had failed both the format-shape and the length check. Candidate keys are synthesised from the opcode bytes, so a failing key can still collide with a real entry: B2FA with NIAI filtered out yields the RI/RIL candidate B20A, which is SPKA, and the decoder emitted 'spka' for bytes that are not SPKA. It fired on about 1% of arbitrary byte sequences. Now an unrecognised opcode decodes as unknown with a reject reason. Removing it revealed that SSF had never decoded through the validated path at all — its keys have the RI/RIL shape (c800 = MVCOS) and were not declared there; that is fixed, so SSF now decodes without the fallback.
audit_hashsha256:bfb9d598cd4d9c2cd932a96c4eb19a4e5496b6d569e77d0b1944179eae473890

every table entry, checked for reachability through the validated path decode-reachability-20260726

esa390_entries448
esa390_decoded_exactly442
esa390_decoded_as_base_of_extended6
esa390_unreachable0
esa390_reached_pct100.0
all_levels_entries1778
all_levels_reached_pct77.6
all_levels_unreachable398
Guarantee levelB
Quantifierfor-all-table-entries
Measured overentries_all_levels=1778, entries_esa390=448
Observedmnemonic returned for the entry's own canonical encoding
Oraclethe opcode table itself self-consistency
Provenance of the expected valuea consistency check against the repo
findingfor the ESA/390 subset - the era of the modules this product exists to rescue - every entry is reached: 442 by name and 6 as the base instruction of an extended mnemonic, 0 unreachable. Across all levels 77.6% are reached; the 398 that are not are all vector-facility entries whose keys carry mask bits in the middle of the encoding, and the only 6-byte candidate the decoder forms zeroes those bytes, so they cannot be looked up at all. That is a real structural limit, and it is irrelevant to the target era.
caveatself-consistency: the table is both the source and the check. The Hercules comparison is the independent evidence on top, and it is a sample, not a sweep.
supersedesthe figure 'all 1,778 distinct opcode keys reach a decoder = 100%'. That measured whether a format family appears in the dispatch, which is a different question: SSF appeared in the dispatch and still never decoded through the validated path. This asks every entry directly.
audit_hashsha256:76b79d400d6af27f68d9d0e317cd374e2f814ffa93bddd5ac43e76accf8cf6f1

disassembler coverage over the binutils opcode table disasm-coverage-20260726

opcode_table_distinct_keys1778
decoder_reachable_keys1778
decoder_reachable_pct100.0
format_families_in_table33
format_families_with_a_decoder33
families_without_a_decoder[]
opc_file_parsable_lines2044
alias_lines_shadowed_by_opcode_key266
Guarantee levelB
Quantifierfor-all-table-entries
Measured oversource=GNU binutils s390-opc.txt, entries=1778
Observedformat-family dispatch reachability
OracleGNU binutils s390-opc.txt encoding-table
Provenance of the expected valuea consistency check against the repo
caveatcounts decoder reachability by format family. It is not a measure of how much of a real LOADLIB can be lifted: that needs the code/data classifier and is not measured yet.
supersedesthe figure '1,778 / 1,962 mnemonics = 91%'. 1,778 is the number of distinct opcode keys the loader retains, not a covered subset of 1,962, and the denominator is not reproducible from the shipped s390_opc.txt. Every retained key dispatches to a decoder.
audit_hashsha256:f0d0a4cb470a0dd689d906f99c2c7491e02029a3358a2c81c4c72f9a9ab97fe7

after the WSL restart, every oracle-backed figure came back unchanged environment-reproduction-20260726

checks_passed14
checks_total14
failed[]
hercules3.13
python3.12
Guarantee levelS
Quantifierfor-all-checks
Measured overchecks=14, covers=['hercules version', 'declared archmode', 'corrected bench on real hardware (8 instructions, registers, two storage ranges, CC, exceptions)', 'conformance suite', 'existence oracle', 'decode reachability', 'claims regeneration']
Observedthe recorded value of each measurement, compared field by field
OracleHercules 3.13 execution
Provenance of the expected valueestablished on real hardware
findingARCHMODE was written into the three cnf files during this pass. It had never been declared: ESA/390 was the emulator's default and every earlier measurement had silently depended on it. The observations are unchanged by the declaration, which is what makes it safe to make. h4.rc, the script behind the oracle-confirmed status of T7 and T8, was found missing — it had only ever existed in the WSL-side scratch dir — and was rebuilt from REPORT.md and re-run, reproducing the recorded observation (GR1=1, GR2=7).
caveatthis says the environment still produces the recorded figures. It does not say the environment can be rebuilt from scratch: the restart preserved the installed packages, and setup_env.sh is untested on a clean machine.
audit_hashsha256:7abdc08b0faa9c58c69cf35760fd1eebdec886ca138a0526284f8a8a899fa6e9

the SKU generalisation of the claims apparatus changed no figure refactor-zero-diff-20260726

rows_before10
rows_after11
identicalTrue
missing[]
altered[]
added_after_baseline['environment-reproduction-20260726']
Guarantee levelB
Quantifierfor-all-rows
Measured overrows_compared=10, baseline=claims.baseline-prerefactor.json
Observedevery field of every row except generated_utc
Oraclethe pre-refactor document self-comparison
Provenance of the expected valuea consistency check against the repo
caveata refactor of the apparatus checked with the apparatus. It shows the rules did not move, not that they are right.
audit_hashsha256:7dacd371609c647fa3a843936616e0bda00c627ddc62400418d93a2c0b1f9701

Generated: 2026-07-26T13:09:38Zasm_rev_to/claims/emit_claims.py

4. Implementation inventory Open

opcode sourceGNU binutils s390-opc.txt (official), mechanically ingested to prevent custom drift
Interpreter instructions25 instructions (AR, A, AGR, AHI, SR, LR, LGR, L, LHI, LA, ST, LM, STM, MVC, MVI, CLI, CLC, CR, C, BCR, BC, AP, SP, CP, PR)
WASI portPhase F-2 achieved (2026-05-20) — ~580 lines of C ported, compiled via clang --target=wasm32-wasi -O2 to slimerescue.wasm = 84,530 bytes (84 KB). About 1/6 of the initial < 500 KB estimate and smaller than the existing SlimeNENC java_emit.wasm (293 KB). 3-way validation (Python ↔ native C ↔ WASM via wasmtime) confirms byte-exact match of the slot stream including the audit_hash field across raw / s390x ELF / PDS member paths. No SAB required

5. Related

Contact