mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Open
opened 2026-10-15 18:25:50 +00:00 by bsakaguchi
·
16 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
morluto/rea#525
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @HypergamyDenier on GitHub (Oct 10, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/1558
Originally assigned to: @N0zoM1z0 on GitHub.
Before submitting
Area
Native analysis or decompilation
Current limitation
REA does not currently have a Java RE domain. Users and agents working with compiled Java classes cannot ask REA for class/member identity, decompile .class to .java, search references, or apply deobfuscation/bytecode edits through normalized contracts. Native binary analysis does not understand JVM class identity or bytecode. Android/DEX work in https://github.com/morluto/rea/issues/717 is related, but it does not cover standalone .class/.java inspection. Today this requires manually running GUI tools or separate CLIs, which is not agent-friendly and lacks evidence, lifecycle, resource bounds, and catalog integration.
Use cases
.classfile or an archive of.classfiles (like a .jar file), inspect class name, methods, fields, annotations, constants, and bytecode..classto.java, with bytecode fallback when decompilation fails or is incomplete..classfiles..class/.javaoutput.Current tools are insufficient because they are mostly GUI-first, CLI-first, or library-only; they are not normalized into REA evidence, provider/version/options, cancellation, and resource limits.
Desired outcome and success criteria
.classto.java, with provider/version/options, source locations, failures, and explicit unknowns;.class-derived evidence and.javadecompiled output. Decompiled Java is derived analysis, not original source..classfiles, overloads, inner classes, obfuscated names, missing dependencies, malformed inputs, and decompiler failures.Authority boundaries and non-goals
.class/.javawhere the chosen provider runs; no guarantee of Windows/macOS/Linux parity until tested..javaas authoritative original source.Alternatives considered
Alternatives considered
.classidentity or.javadecompilation..class/.java.Possible direction
.classinspection and.class-to-.javadecompilation..class/.javacontracts distinct from DEX member identity.References
NOTE: This section is treated as references AND useful tools (of which there are many) which this project could greatly benefit from!
(Slight relevance)
(Additional MCPs for recaf; https://github.com/GzSakura1338/Recaf_MCP and https://github.com/Naptila/recaf-mcp)
JVM Specifications (required for agents to know in order to actually modify the stack without verifier errors):
https://docs.oracle.com/javase/specs/
(Java VM) https://docs.oracle.com/javase/specs/jvms/se27/jvms27.pdf (More important and necessary)
(Java Language) https://docs.oracle.com/javase/specs/jls/se27/jls27.pdf
@HypergamyDenier commented on GitHub (Oct 10, 2026):
Please do reply to this issue and suggest further tools for the java reverse engineering domain. I believe I have mentioned most of the well known tools as well as a few lesser known gems.
@morluto commented on GitHub (Oct 10, 2026):
@N0zoM1z0 @kaoru0822-kitauji plese take a look at this
@morluto commented on GitHub (Oct 11, 2026):
pinging again @N0zoM1z0 @kaoru0822-kitauji
@SpartanB312 commented on GitHub (Oct 11, 2026):
Wow. I just published Antares-Lite for two days, and I saw the reference
@moeyinlo commented on GitHub (Oct 12, 2026):
should be more careful when it comes to cybersecurity. Some of the tools mentioned are not appropriate to be pushed to public
@zhangtbj commented on GitHub (Oct 12, 2026):
We are also waiting for this feautures :)
@coygeek commented on GitHub (Oct 12, 2026):
Proposal for a first tracer-bullet slice, following this issue's "Start with read-only
.classinspection and.class-to-.javadecompilation", narrowed to the decompilation half. It comes from the decompiler survey in #2258 and the gap mapping in https://github.com/morluto/rea/issues/2258#issuecomment-6130226337 (gap 2).Slice: one read-only CLI/MCP operation that takes a local
.classor.jar, an optional class or package-prefix selector, and paging, and returns Java source per class from one bring-your-own engine.doctorreports a missing engine or JDK.Two things on current
mainthe slice has to handle:classifyArtifactBytes(src/artifacts/inventory/ArtifactGraphConstruction.ts) andsrc/domain/binaryTarget.tsmap the0xCAFEBABEmagic straight tomach-o-universal, so a JVM class file is classified as a universal Mach-O. Observed withrea-agents@6.4.0:rea inspect-artifacton a class-file header (magicCAFEBABE, major version 65) fails withtarget_unavailable, "truncated or invalid FAT architecture table". The slice needs byte-level disambiguation that keeps real fat Mach-O files working.src/android/JadxProvider.ts), and #367's JVM scaffold was removed inc93422a89. No JVM path exists today.Engine for the slice (checked 2026-10-12):
java -jar vineflower.jar [args] <in> [<out>]; class, JAR, ZIP or folder;--only=<prefix>,--method-to-decompilejava -jar cfr.jar <class/jar>;--outputdir,--jarfilter,--methodname--dump-bytecode-on-error(default on, usage) puts bytecode in the method bodythrow new IllegalStateException("Decompilation failed")stub, no bytecodeVineflower looks like the better first engine. Its releases are current, it handles new class files, and bytecode-on-error output maps directly onto the fallback requirement. CFR would make a reasonable second engine for comparison. Widening the JADX lane is possible because JADX accepts
.jarand.class, but REA's JADX lane is tied to APK admission and DEX-shaped contracts, and this issue asks to keep Java identity separate from DEX identity.Maintainers: would you accept this slice, with Vineflower as the engine, as the scope for a first PR? CONTRIBUTING.md asks for that decision before a new provider is built.
@HypergamyDenier commented on GitHub (Oct 12, 2026):
Hey @coygeek I personally believe this can definitely be better planned rather than having an LLM come up with the plan. This is genuinely something that requires human thought and understanding. Your plan is a little generic I must say.
@matbrgz commented on GitHub (Oct 12, 2026):
I opened focused companion proposals for the debugging side of this Java domain:
These can be specified and reviewed independently. #2377 is the static foundation; #2376 adds host-JVM runtime behavior; Android transport and JNI correlation need their own verification and scope decisions. The shared native debugger roadmap remains #1267.
For an initial JVM runtime lane, I propose attaching to one explicitly selected local endpoint where JDWP is already enabled, using a caller-installed JDK. Inspection would return raw fields and available locals without invoking toString/getters, evaluating arbitrary expressions, redefining classes or writing fields. Debugger attachment and suspension still have effects and must be declared. A socket endpoint or matching Java version does not prove that the running classes belong to a selected JAR.
The proposals include source-built fixture cases for overloads, duplicate class names in different class loaders, delayed class preparation, missing debug tables, exceptions, cancellation and disconnect. They are proposals, not claims of implemented provider support; substantial runtime-provider implementation for integration remains subject to the maintainer scope decision required by CONTRIBUTING.md.
Primary references: JVMS debug attributes, JDI EventSet, JDWP identity and frame lifetime, and Android debugger modes.
@HypergamyDenier commented on GitHub (Oct 13, 2026):
I see that there are new companion issues which are intentionally narrow (obviously a good starting base for future work!), so I don’t think they each need to cover every referenced tool. But we have mentioned bytecode edit/deobfuscation in scope, and I don’t see a focused proposal for it yet. I think it would be worth opening one. ASM, CAFED00D/Recaf, Krakatau, JByteMod, and maybe Mokapot/MokaIR (FUTURE) all seem relevant. First implementation could be one provider, but the design should still map alternatives and limitations.
@moeyinlo commented on GitHub (Oct 14, 2026):
Recaf it self already manages an abstraction layer of class decompilers, and already has a human-readable assembly language for bytecode. Just manipulating bytecode just needs linking Recaf to LLMs, shouldn't be much work. It also provides several basic tools on searching reference or strings, which may be useful for analyzing obfuscated code
@matbrgz commented on GitHub (Oct 14, 2026):
Adding an issue map and a concrete design for the bytecode transformation gap raised in this comment. The useful next step is to connect the tool list to stable analyst contracts, explicit provider boundaries and regression fixtures.
1. What the existing reports imply for the Java domain
Codepresent, native, abstract, transformed/inlined by the provider, failed decompilation, and an unsupported representation. A neighboring member's text or a failure stub must never count as the selected method's complete source. Preserve bytecode when source fails.These are proposed acceptance requirements. The issue index below records open/closed state; closure alone does not establish that a capability is shipped or still passes a real-provider regression. In particular, #367 is historical context, #2317 is a closed classification report, and #3176 reports another classification path. #2080 was closed as not planned and is not an approved implementation dependency.
2. A focused bytecode editing / general static deobfuscation design
I suggest a separately reviewable companion proposal with the following contract, rather than treating every upstream GUI or MCP command as part of REA's supported surface:
Source-built acceptance fixtures should include overloads, bridge/synthetic members, inner/nestmate classes, exception handlers, lambdas/bootstrap methods, missing dependencies, absent debug tables, invalid stack maps, duplicate and case-distinct ZIP entries, multi-release JARs and a signed JAR. Add a method with observable side effects to catch a reconstruction that looks plausible but changes their order. Record cancellation, output/heap limits and owned-workspace cleanup through both CLI and MCP.
The bytecode and verification model should follow the JVMS, with an explicit supported class-version profile. Multi-release selection and archive/signature handling should follow the JAR specification. Preserve unknown attributes as opaque evidence where supported; do not silently discard them or claim verifier support for an untested version.
3. Evaluate the tools by responsibility
The references in this issue cover several different jobs. A provider comparison should record the exact revision, callable headless interface, class-version support, dependencies, license, default rewrites, target execution/network effects, resource controls, failure output and verified fixtures for every candidate, including candidates ultimately rejected.
Recaf's documentation specifically describes multiple decompilers, assembly, automation, and automatic repairs during import. That makes original-versus-working-copy evidence a practical adapter requirement. Mokapot's documentation describes a class-file model and SSA analysis; its compatibility and stability need a pinned evaluation rather than a general maturity assumption.
Additional candidates worth adding to the inventory:
javapas a caller-installed disassembly/debug-metadata baseline for source-built regression fixtures. Bind it to the exact member bytes rather than silently choosing a classpath alternative.The integration decision should follow CONTRIBUTING.md. General static analysis/transformation, managed debugging, and specialized protection recovery must be assessed independently. A large toolkit list is not authorization to bundle every upstream behavior. This contribution proposes a roadmap and contracts; it does not claim that these providers have been integrated or tested together.
4. Incremental delivery and useful coverage measures
Measure archive occurrences accounted for, classes structurally examined, methods with exact instruction evidence, selected bodies successfully reconstructed, unresolved references and transformations independently validated. Keep denominators and exclusions explicit. Artifact capture, source reconstruction, runtime observation and behavioral recovery are different coverage measures; none implies “100% reverse engineered.”
5. Open and closed issue index
Snapshot: 2026-10-14. I paginated all 1,325 issue bodies, excluding pull requests, and supplemented that with 17 title/body/comment searches for Java, JVM, JDK, JAR, JIMAGE, JNI, DEX, JADX, Android, Apktool, Kotlin, bytecode, Recaf, CFR, Vineflower and deobfuscation/deobfuscator. The searches returned complete result sets without the 1,000-result cutoff. This is a relevance-reviewed map of 123 issues, including explicitly labeled adjacent dependencies; it excludes incidental JDK mentions in unrelated native-target examples and JavaScript-only issues. GitHub search indexing and issues created or changed after the snapshot remain limitations.
JVM class files, containers and Java-domain proposals — 8 issues
Android/DEX analysis, resources and provider contracts — 40 issues
rea doctorreadiness check for the JADX (Android) providerManaged runtime, JNI and native-debugger coordination — 7 issues
Android device/transport dependencies (adjacent to Java, not JVM bytecode features) — 10 issues
JDK and Java bridge infrastructure (Ghidra analyzes native code here) — 35 issues
GHIDRA_INSTALL_DIRthat the registered MCP server rejects at startupnpxorphans the Ghidra JVM and its runtime directoriesShared evidence, archive, paging and readiness dependencies — 23 issues
@anyanyna commented on GitHub (Oct 16, 2026):
I'd like to propose one addition to the decompilation slice, and get a scope decision before
writing anything.
The gap: @matbrgz's comment states it directly - "a valid output class does not prove
behavioral equivalence, and regenerated source does not prove that no side effect moved."
The coverage measures discussed so far count reconstructed bodies and methods with exact
instruction evidence, but nothing counts reconstructions checked against the input bytes.
Recovered source is inference plus a plausibility check, and a class that compiles cleanly
can still change overload binding, exception suppression or the order of side effects.
Proposal: make one part of that claim mechanical. Recompile the recovered source with a
pinned compiler in an owned workspace, compare the rebuilt class bytes against the original,
and report a per-class verdict next to the coverage number:
the measurement it came from;
Coverage and verdicts are printed together, so what was not verified is as visible as what
was, and a reconstruction that does not pass is never handed over as recovered source.
Deliberate non-goals for a first slice: the gate reads class bytes only - nothing loads or
runs the target classes; obfuscated or packed input is reported as a limitation, not
defeated; the original artifact is never modified; recovered names and comments are never
claimed as original. A behavioral differential mode that executes both versions is a
separate declared effect and I am not proposing it here.
Questions for a maintainer decision:
decompilation result, a separate compare operation, or a caller-gated optional step?
does compile source derived from the target. Given "REA never loads target classes",
does that belong in the same operation as decompilation, or as its own declared step?
identity? If the latter, what release identity, license and notice material would REA
expect?
of partial results. Should that be specified in the contract before any implementation?
If this is in scope, I can implement the first slice - read-only class and member identity,
one bring-your-own decompile engine, and this gate - and open a draft PR that is not
requesting merge. I have not implemented any of it yet and have not run it against a REA
adapter.
@CarbonEdge commented on GitHub (Oct 16, 2026):
Vineflower would probably help here, it also decompiles older java
@unclamped commented on GitHub (Oct 19, 2026):
+1 on this, java decomp tools are all scattered through GitHub. it would be nice for this project to support it.
@master7720 commented on GitHub (Oct 30, 2026):
lmk when this is impl 🙏