AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Run unmodified static x86-64 Linux binaries on Linux, macOS, Windows and in the browser — a user-mode emulator in Rust with a WebAssembly JIT.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A user-mode x86-64 Linux emulator in Rust. It runs statically linked x86-64 Linux programs unchanged on Linux, macOS and Windows, and in WebAssembly (Node.js and browsers), with a JIT for WebAssembly.
Documentation: https://aletheia-works.github.io/paludarium/ (日本語): what paludarium is, installation, the command line, the Rust and JavaScript APIs, supported platforms and features, limitations, architecture, verification, design decisions, and a live demo that runs in your browser.
paludarium is a from-scratch Rust counterpart of jart/blink (behaviour and design are a reference; no code is copied). Its first user is formicarium.
| Package | Install |
|---|---|
paludarium (library and command) | cargo +nightly install paludarium / cargo add paludarium |
@aletheia-works/paludarium-wasm | npm install @aletheia-works/paludarium-wasm |
rust-toolchain.toml (rustup installs it).mise install provides the other tools (bun,
Node.js, Python, cargo-deny, cargo-llvm-cov, OpenTofu and the linters), and
mise tasks lists the tasks below. mise also reads rust-toolchain.toml, so
a global rust in mise does not override the pinned nightly here.mise run build # cargo build --release --locked
paludarium [--env KEY=VALUE]... [--mount HOST:GUEST]... [--no-jit] [--report-enosys] <program> [args...]
mise run wasm:build # paludarium.wasm for packages/paludarium-wasm
Within mise, target/release is on PATH.
| Task | What it runs |
|---|---|
mise run test | Unit tests of every crate (Linux, macOS, Windows) |
mise run test:diff | Differential tests (x86-64 Linux only) |
mise run coverage | Line coverage; fails under 80 % (x86-64 Linux) |
mise run fuzz <target> [--seconds N] | One target in fuzz/fuzz_targets/ with the nightly's settings (x86-64 Linux) |
mise run deny | cargo deny --locked check |
mise run lint:all | rust:check (rustfmt, clippy), shell:check (ShellCheck), actions:check (actionlint), python:check (Ruff), toml:check (Tombi) and markdown:check (rumdl) |
mise run ci | lint:all, build, test and deny |
Each <lang>:check has a <lang>:check:fix, and CI runs lint:all on every
pull request (test-lint-check.yml, called by ci.yml). lint-autofix.yml runs lint:all:fix
there too, and aletheia-works-bot commits any fixes to the pull request branch
as a signed style: commit (a pull request from a fork needs "Allow edits by
maintainers"); fetch it before pushing to that branch again.
Differential tests build the guests under tests/guests/ from source, run each
one natively and in the emulator, and compare standard output, standard error
and the exit status byte for byte (instruction guests also compare registers,
flags and memory; undefined flags are listed in
tests/guests/insn/UNDEFINED.md). Expected results are produced natively on
every run and never stored. Each case has a 30-second timeout.
ci/linux-dev/Dockerfile is an x86-64 Linux environment with everything the
differential tests, coverage and fuzzing need:
mise run linux-dev -- cargo test --locked -p paludarium-harness --test diff_core -- --nocapture
The working tree is copied into a named volume first, so Docker Desktop does
not need to share the repository path (PALUDARIUM_DEV_MOUNT=bind mounts it
directly). Each checkout keeps its build output in volumes of its own, so one
checkout never reuses crates another built; docker volume ls lists them, and
the shared paludarium-work and paludarium-target volumes of earlier versions
can be removed with docker volume rm. Docker on an Arm Mac runs x86-64,
native programs included, under QEMU's user-mode emulation, so its results are
not evidence of native Linux behaviour, and its signals can differ from Linux
even on the native side; CI is the evidence.
mise run docs:dev # http://localhost:5173/paludarium/
mise installs the site's packages (bun install) when you enter the directory
or run a task.
ci.yml (every pull request): unit tests on three OSes, rustfmt, clippy
(-D warnings), the wasm32 build, cargo-deny, differential tests, 80 %
coverage, probe, aube and ripgrep differential tests, the WebAssembly acceptance
tests, polyglot lint, the documentation build and the release package
check. A pull request runs the jobs its changed files need
(scripts/ci-changes.py); ci-ok, the required check, passes when every
job passed or was not needed.nightly.yml: fuzzing of every target for 600 seconds with ASan and LSan,
and the full quality run (macOS, Windows, Node.js, Chromium, Firefox and the
real Safari, with and without the JIT). A failure opens an issue; the next
passing night closes it.bump-pins.yml (every Monday): moves the nightly pinned in
rust-toolchain.toml and the aube and ripgrep guests in
tests/guests/programs/source-lock.json to their latest releases
(scripts/bump-pins.py), one pull request each from aletheia-works-bot that
merges itself once ci-ok passes. Workflows name the toolchain through
$RUST_TOOLCHAIN (scripts/rust-toolchain.sh), never the date.schedule-watch.yml (every day): checks that each scheduled workflow
started on time. A run that fails before its first job (startup_failure)
reports nothing itself, so a run that did not start, a schedule that did not
run and a disabled workflow open an Issue; the next clean day closes it.docs.yml: builds the documentation site (docs-build.yml) and deploys it
from main.release.yml, release-merge.yml, publish.yml: releases; see
docs/release.md.Actions are pinned by commit SHA and the default token is read-only.
| Path | Contents |
|---|---|
crates/paludarium-types | Shared types (GuestAddr, Errno, ExitReason, ExitStatus, Error) |
crates/paludarium-decoder | Decoder wrapping iced-x86 |
crates/paludarium-mmu | Software MMU |
crates/paludarium-cpu | Interpreter |
crates/paludarium-jit | Code cache interface and the WebAssembly JIT |
crates/paludarium-loader | ELF loading and the initial stack |
crates/paludarium-vfs | Virtual filesystem and host directory mounts |
crates/paludarium-kernel | Linux system calls |
crates/paludarium-host | The Host trait and the native and WebAssembly hosts |
crates/paludarium-runtime | Session and the execution loop |
crates/paludarium | Public API and the command |
crates/paludarium-harness | Differential tests (not published) |
crates/paludarium-wasm | WebAssembly entry point (not published) |
packages/paludarium-wasm | The npm package |
tests/guests/ | Sources of the differential test guests |
fuzz/ | cargo-fuzz targets |
docs/ | The documentation site (VitePress) and the release process |
infra/github/ | Repository settings (OpenTofu) |
spikes/wasm-threads/ | The early check that WebAssembly threads can wait and wake |