-
-
Notifications
You must be signed in to change notification settings - Fork 0
contributing
Contributions are welcome; see the contributing guide.
disrobe builds with a single stable Rust 1.95+ toolchain:
cargo build --release
cargo test -p <crate> # test a single crateThe JVM decompiler can be memory-intensive on adversarial input. Prefer per-crate test runs over a bare workspace-wide
cargo test --workspacewhen iterating locally.
Every commit on main must pass the workspace clippy gate with zero warnings:
cargo clippy --all-targets -- -D warnings -W unreachable_pub -W missing_debug_implementations -W unused
cargo fmt --all -- --checkThe workspace lints are strict by design: unwrap_used is denied, todo! and unimplemented! are denied, and unsafe is forbidden outside the two C-interop crates. New code is fully type-annotated and self-documenting; the codebase carries durable context in dedicated docs rather than inline comments.
The dark-theme benchmark and architecture SVGs in the README are generated, not drawn by hand. The data lives in xtask/data/*.json (every plotted value cites its source gate or harness inline), and xtask renders deterministic SVGs into docs/assets/:
cargo run -p xtask -- graphs # regenerate docs/assets/*.svg
cargo run -p xtask -- graphs --check # fail if committed SVGs are stale (CI runs this)After changing a number in xtask/data/, rerun graphs and commit the regenerated SVGs; the graphs CI job rejects any drift. Numbers come only from a committed test gate or a local measurement harness, never from the tool grading its own output, and no competitor recovery percentage is plotted.
These pages under docs/src are the single source of truth. The GitHub wiki is generated from them by scripts/wiki_sync.py and the wiki-sync workflow, which runs on every push to main that touches docs/. Do not edit the wiki directly; it is overwritten on the next sync. Edit the page here, then preview the generated wiki locally:
python scripts/wiki_sync.py --out ./.wiki-build # build the wiki tree
python scripts/wiki_sync.py --check --out ./.wiki-build # fail on driftA new ecosystem pass is a new disrobe-pass-<name> crate that:
- Implements the shared
Passtrait, declaring its required and produced capabilities and its rung transition. - Climbs the five-rung IR ladder rather than jumping rungs.
- Ships a
pass_run_envelope_roundtriptest and at least one real-fixture integration test incrates/disrobe-cli/tests/. - Wires its standardized emits, returning explicit
applicable: falsestubs for emits it cannot produce.
Every capability claim must be backed by a fixture in corpus/ and a passing test; nothing aspirational ships as done. Fixtures are baked locally from known-good inputs by corpus/generate.{sh,ps1}; copyrighted third-party obfuscated bytecode is never committed to the public corpus.
A decode that only passes against synthetic, self-generated fixtures is not a feature. Per-pass work is verified against a real corpus and the upstream format spec. Partial recovery carries a confidence tier; detect-only is stated as detect-only. If you are not sure a capability works against real-world input, say so in the PR.
Generate an environment report to attach to an issue:
disrobe bug-report --out report.md
disrobe bug-report --out - # write to stdoutFor security issues, do not open a public issue; use the private advisory channel. See Security.
This wiki is generated from docs/src in the disrobe repository by scripts/wiki_sync.py. Edit the docs there, not the wiki pages here.
Getting started
Architecture
- Overview
- The five-rung IR ladder
- Passes and the capability model
- The chain runner
- The .dr envelope
- LLM sidecar and provenance
Reverse-engineering toolkit
Language and format guides
- Python
- JavaScript / TypeScript
- WebAssembly
- JVM and Android
- .NET / CIL
- Native (PE / ELF / Mach-O)
- Go
- Lua
- PHP
- Ruby
- BEAM (Erlang / Elixir)
- Swift / Objective-C
- ActionScript 3 / Flash
- Mobile (Hermes / Flutter)
- Python pickle
- Shell / PowerShell
- Containers and archives
Reference
- CLI overview
- Global flags
- Command reference
- Project configuration
- Batch directory processing
- Run reports
- Analysis-depth commands
- Diff and guard tooling
- The daemon: HTTP, gRPC, LSP, MCP
- Use it as a library
- Python bindings
- The browser playground
- Forensics and malware-safety posture
- Threat model
Integrations
Project