[PR #3753] feat(jvm): export Vineflower sources with explicit dependencies #5876

Open
opened 2026-10-31 01:10:07 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/3753
Author: @flitzrrr
Created: 10/14/2026
Status: 🔄 Open

Base: main ← Head: feature/vineflower-jvm


📝 Commits (9)

  • 5be9896 feat(jvm): export Vineflower sources with explicit dependencies
  • 7f04cce test(jvm): classify provider-only execution wording
  • 15c15b0 fix(jvm): advertise portable class prefix pattern
  • 278de10 fix(jvm): preserve cancellation and diagnostics during publication
  • a697b83 fix(jvm): integrate current provider and CLI lifecycle contracts
  • 967a8d9 fix(jvm): integrate current main and preserve public workflows
  • ae9cd75 chore(jvm): drop unrelated merge-hook autofixes
  • 16570fa fix(jvm): retain prerequisite cleanup and separate preparation deadlines
  • f39c29b fix(jvm): preserve published evidence and actionable failure details

📊 Changes

68 files changed (+3845 additions, -6 deletions)

View changed files

📝 .agents/skills/reverse-engineer-anything/SKILL.md (+9 -3)
📝 .agents/skills/reverse-engineer-anything/references/native-and-artifacts.md (+21 -0)
📝 README.md (+1 -0)
📝 docs/.vitepress/config.ts (+1 -0)
➕ docs/jvm-analysis.md (+108 -0)
📝 docs/readme/README_ar.md (+1 -0)
📝 docs/readme/README_de.md (+1 -0)
📝 docs/readme/README_el.md (+1 -0)
📝 docs/readme/README_es.md (+1 -0)
📝 docs/readme/README_fa.md (+1 -0)
📝 docs/readme/README_fr.md (+1 -0)
📝 docs/readme/README_id.md (+1 -0)
📝 docs/readme/README_it.md (+1 -0)
📝 docs/readme/README_ja.md (+1 -0)
📝 docs/readme/README_ko.md (+1 -0)
📝 docs/readme/README_ml.md (+1 -0)
📝 docs/readme/README_pl.md (+1 -0)
📝 docs/readme/README_pt-BR.md (+1 -0)
📝 docs/readme/README_ro.md (+1 -0)
📝 docs/readme/README_ru.md (+1 -0)

...and 48 more files

📄 Description

Changes

  • Export Java sources from local .class, .jar or .zip files through CLI/MCP using caller-installed Vineflower.
  • Preserve explicit dependency snapshots, class-prefix selection, Evidence and durable source/manifest output.
  • Prepare the macOS ownership helper under its independent compiler deadline before execution budgets start.
  • Retain helper and worker cleanup through the shared owner; keep workspace/output cleanup on one retryable lease.
  • Bind returned errors to live cleanup ownership; successful retries clear earlier pending-resource reports.
  • Preserve opaque caller and artifact cancellation reasons, diagnostics, immutable inputs and published output.
  • Retain complete Evidence for published sources through commit/cleanup failures; MCP returns the retained session record.
  • Report the failed child command's actual deadline and allowance-specific recovery; fixed diagnostics and heap-derived metadata have distinct guidance.
  • Preserve primary verifier failures alongside cleanup failures through the shared cleanup owner.

Validation

Check Result
New defect regressions before correction 6 failed / 20 passed; later review regressions: 7 failed / 26 passed
Focused provider, cleanup, catalog, CLI/MCP and lifecycle suite 122 passed across 13 files
npm run check Passed, including typed lint
npm run docs:check Passed; 9 README consistency tests
npm run verify:test-discovery 2,691 files discovered exactly once
npm run verify:jvm Real Vineflower 1.12.0 / macOS arm64 / javac 26.0.2.1: CLI + stdio MCP
Real workflows class/JAR/prefix: 1/3/2 sources; hashes, input preservation, durable output, conflict refusal, Evidence export and cleanup verified
  • Regression files cover cancellation identity, the 20,000 ms version-probe timeout, allowance recovery, retained publication Evidence and cleanup retry.
  • A descriptor-close regression also failed for combined commit/rollback failure before correction; both publication-failure modes now pass.
  • Preparation ordering and helper-cleanup faults use controlled production seams.
  • Independent bounded review found an additional combined commit/cleanup case; its regression reproduced the defect and passed after correction.

Open integration prerequisite

  • Maintainer scope, naming, shared provider ownership and launcher configuration with #2717 / #1558 remain unresolved; see the integration hold.
  • This branch retains REA_VINEFLOWER_COMMAND; #2717 uses REA_VINEFLOWER_JAR. No alias or precedence is introduced.
  • Preserve distinct selected-class inspection and durable archive export.
  • [UNVERIFIED] A physical 88-second cold-helper build, Linux/Windows, case-sensitive publication, Scala/Kotlin, obfuscation, recompilation and runtime equivalence.
  • Hosted CI is separate. No target bytecode execution or Java/Vineflower installation.

Author readiness

Human owner: @flitzrrr

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/3753 **Author:** [@flitzrrr](https://github.com/flitzrrr) **Created:** 10/14/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feature/vineflower-jvm` --- ### 📝 Commits (9) - [`5be9896`](https://github.com/morluto/rea/commit/5be9896f86007858806a7c3242b2b54e4582cdd4) feat(jvm): export Vineflower sources with explicit dependencies - [`7f04cce`](https://github.com/morluto/rea/commit/7f04cce54b3808057f46c6373075f8dc8e2ac081) test(jvm): classify provider-only execution wording - [`15c15b0`](https://github.com/morluto/rea/commit/15c15b0b439f929a909cff2ec7960214a6e4d1de) fix(jvm): advertise portable class prefix pattern - [`278de10`](https://github.com/morluto/rea/commit/278de10becb7adbc476fe9fbbf2d0b892a7220ad) fix(jvm): preserve cancellation and diagnostics during publication - [`a697b83`](https://github.com/morluto/rea/commit/a697b83ecf1908dd465b7d7d924ed06d1b165e23) fix(jvm): integrate current provider and CLI lifecycle contracts - [`967a8d9`](https://github.com/morluto/rea/commit/967a8d9ea8f5acc19ac74ab5c2879d8f2dd4cc4c) fix(jvm): integrate current main and preserve public workflows - [`ae9cd75`](https://github.com/morluto/rea/commit/ae9cd756645f9396179144b930aa31e9143205de) chore(jvm): drop unrelated merge-hook autofixes - [`16570fa`](https://github.com/morluto/rea/commit/16570fa7ae9a82a499240316d226b793cb153cae) fix(jvm): retain prerequisite cleanup and separate preparation deadlines - [`f39c29b`](https://github.com/morluto/rea/commit/f39c29b77bd2bcbdb2b8e339b4e09d552b142923) fix(jvm): preserve published evidence and actionable failure details ### 📊 Changes **68 files changed** (+3845 additions, -6 deletions) <details> <summary>View changed files</summary> 📝 `.agents/skills/reverse-engineer-anything/SKILL.md` (+9 -3) 📝 `.agents/skills/reverse-engineer-anything/references/native-and-artifacts.md` (+21 -0) 📝 `README.md` (+1 -0) 📝 `docs/.vitepress/config.ts` (+1 -0) ➕ `docs/jvm-analysis.md` (+108 -0) 📝 `docs/readme/README_ar.md` (+1 -0) 📝 `docs/readme/README_de.md` (+1 -0) 📝 `docs/readme/README_el.md` (+1 -0) 📝 `docs/readme/README_es.md` (+1 -0) 📝 `docs/readme/README_fa.md` (+1 -0) 📝 `docs/readme/README_fr.md` (+1 -0) 📝 `docs/readme/README_id.md` (+1 -0) 📝 `docs/readme/README_it.md` (+1 -0) 📝 `docs/readme/README_ja.md` (+1 -0) 📝 `docs/readme/README_ko.md` (+1 -0) 📝 `docs/readme/README_ml.md` (+1 -0) 📝 `docs/readme/README_pl.md` (+1 -0) 📝 `docs/readme/README_pt-BR.md` (+1 -0) 📝 `docs/readme/README_ro.md` (+1 -0) 📝 `docs/readme/README_ru.md` (+1 -0) _...and 48 more files_ </details> ### 📄 Description ## Changes - Export Java sources from local `.class`, `.jar` or `.zip` files through CLI/MCP using caller-installed Vineflower. - Preserve explicit dependency snapshots, class-prefix selection, Evidence and durable source/manifest output. - Prepare the macOS ownership helper under its independent compiler deadline before execution budgets start. - Retain helper and worker cleanup through the shared owner; keep workspace/output cleanup on one retryable lease. - Bind returned errors to live cleanup ownership; successful retries clear earlier pending-resource reports. - Preserve opaque caller and artifact cancellation reasons, diagnostics, immutable inputs and published output. - Retain complete Evidence for published sources through commit/cleanup failures; MCP returns the retained session record. - Report the failed child command's actual deadline and allowance-specific recovery; fixed diagnostics and heap-derived metadata have distinct guidance. - Preserve primary verifier failures alongside cleanup failures through the shared cleanup owner. ## Validation | Check | Result | | --- | --- | | New defect regressions before correction | 6 failed / 20 passed; later review regressions: 7 failed / 26 passed | | Focused provider, cleanup, catalog, CLI/MCP and lifecycle suite | 122 passed across 13 files | | `npm run check` | Passed, including typed lint | | `npm run docs:check` | Passed; 9 README consistency tests | | `npm run verify:test-discovery` | 2,691 files discovered exactly once | | `npm run verify:jvm` | Real Vineflower 1.12.0 / macOS arm64 / javac 26.0.2.1: CLI + stdio MCP | | Real workflows | class/JAR/prefix: 1/3/2 sources; hashes, input preservation, durable output, conflict refusal, Evidence export and cleanup verified | - Regression files cover cancellation identity, the 20,000 ms version-probe timeout, allowance recovery, retained publication Evidence and cleanup retry. - A descriptor-close regression also failed for combined commit/rollback failure before correction; both publication-failure modes now pass. - Preparation ordering and helper-cleanup faults use controlled production seams. - Independent bounded review found an additional combined commit/cleanup case; its regression reproduced the defect and passed after correction. ## Open integration prerequisite - Maintainer scope, naming, shared provider ownership and launcher configuration with #2717 / #1558 remain unresolved; see the [integration hold](https://github.com/morluto/rea/pull/3753#pullrequestreview-5528976483). - This branch retains `REA_VINEFLOWER_COMMAND`; #2717 uses `REA_VINEFLOWER_JAR`. No alias or precedence is introduced. - Preserve distinct selected-class inspection and durable archive export. - [UNVERIFIED] A physical 88-second cold-helper build, Linux/Windows, case-sensitive publication, Scala/Kotlin, obfuscation, recompilation and runtime equivalence. - Hosted CI is separate. No target bytecode execution or Java/Vineflower installation. ## Author readiness Human owner: @flitzrrr - [x] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [x] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
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#5876
No description provided.