[GH-ISSUE #6672] [Bug] Desktop inspection guide omits supported IL2CPP versions 24 and 27 #4053

Closed
opened 2026-10-31 00:46:23 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @coygeek on GitHub (Oct 23, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/6672

Before submitting

  • I searched the open and closed issues for a related report.
  • I removed credentials, tokens, private paths, and sensitive target data.

Area

Documentation

Observed behavior

The desktop installation guide describes IL2CPP follow-up admission for “supported raw version 29, 31 or 39,” omitting versions 24 and 27. The production desktop application service offers inspect_il2cpp_metadata for both omitted versions, and the dedicated IL2CPP guide lists them as supported. The stale version list can make users triaging older Unity installations overlook an available next step.

Reproduction

Read the desktop guide's IL2CPP follow-up paragraph, then compare the supported version list in the dedicated IL2CPP guide.

The following complete source-service probe was also executed once for each of five cases. From the identified checkout with locked dependencies installed, save it as /tmp/desktop-version-probe.mts, then run:

node --import ./node_modules/tsx/dist/loader.mjs /tmp/desktop-version-probe.mts
import {mkdtemp, mkdir, writeFile, rm} from 'node:fs/promises';
import {tmpdir} from 'node:os';
import {join} from 'node:path';
import {pathToFileURL} from 'node:url';
const load = (name:string)=>import(pathToFileURL(join(process.cwd(), name)).href);
const {DesktopApplicationReader}=await load('src/artifacts/DesktopApplicationReader.ts');
const {DesktopApplicationService}=await load('src/application/artifacts/DesktopApplicationService.ts');
const root=await mkdtemp(join(tmpdir(),'rea-desktop-versions-'));
const service=new DesktopApplicationService(new DesktopApplicationReader());
try {
  for(const version of [24,27,29,12,null]) {
    const dir=join(root,version===null?'truncated':String(version));
    await mkdir(dir);
    const b=Buffer.alloc(version===null?4:8);
    b.writeUInt32LE(0xfab11baf,0);
    if(version!==null)b.writeUInt32LE(version,4);
    await writeFile(join(dir,'global-metadata.dat'),b);
    const r=await service.inspect({path:dir});
    if(!r.ok)throw r.error;
    const x=r.value.normalized_result;
    console.log(JSON.stringify({version,coverage:x.coverage.status,facts:x.files.flatMap(f=>f.facts).map(f=>({kind:f.kind,value:f.value})),probes:x.next_probes.map(p=>p.operation)}));
  }
} finally {await service.close();await rm(root,{recursive:true,force:true});}

Expected behavior

Describe the supported desktop follow-up versions consistently with the dedicated guide and the shared implementation: 24, 27, 29, 31 and 39. Preserve the current warning that a recognized magic/version prefix does not establish complete metadata validity or native-binary correspondence; version 24 layout restrictions still apply when actual metadata inspection runs.

Impact and scope

Documentation-only mismatch. Users reading this triage guide receive an incomplete version list; the observed service itself offers the expected follow-ups. No inspection failure or data loss was observed, and user prevalence was not measured. The dedicated guide and returned next_probes provide the correct information today.

REA version

Package 6.7.0; source revision 99a5ffae3bf3d73f11bca3d9b8893347964b10b9. The source service and repository documentation were checked; the published npm artifact was not executed.

Runtime and platform

Node.js v24.22.1; Linux x64; repository-locked tsx 4.23.15. No Unity, native analysis provider, or external metadata decoder was used.

Target and artifact context

Disposable directories containing only a global-metadata.dat magic/version prefix: versions 24, 27, 29 and 12 used eight bytes; the truncated-version control used four. These are candidate headers, not complete metadata files. The probe exercises directory triage only and does not claim full decoding of synthetic or real Unity metadata.

Interface

Other

Repository documentation and the shared source application service.

Earliest failure stage

Unknown

This is a documentation discrepancy, with no failing runtime stage.

Relevant output or evidence

  • Expected source: The dedicated IL2CPP guide linked above and the shared supported-version admission.
  • Failure source: The desktop guide's omitted version names in the linked paragraph; source-service output below independently confirms the offered follow-ups.
  • Evidence provenance: observed documentation and source-service output.
  • Local verification: reproduced the documentation discrepancy; the complete probe exited 0.
  • Reproduction completeness: complete for this documentation mismatch. Full metadata parsing and CLI/MCP transports were not exercised.
{"version":24,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":24}}],"probes":["inspect_il2cpp_metadata"]}
{"version":27,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":27}}],"probes":["inspect_il2cpp_metadata"]}
{"version":29,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":29}}],"probes":["inspect_il2cpp_metadata"]}
{"version":12,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":12}}],"probes":[]}
{"version":null,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":null}}],"probes":[]}

Typed outcome or recovery expected

The guide's listed versions should agree with the observed follow-up admission. A proposed restoration check is textual: the paragraph must include both omitted versions while retaining its distinction between a candidate header and fully validated metadata.

Analysis or suspected cause

The desktop paragraph appears to retain the earlier version list. This is a source-derived explanation of the text discrepancy, not evidence of a runtime parser defect.

Additional context

Open/closed searches covered desktop IL2CPP, version 24/27, documentation, and the supplied open-issue corpus. No matching report was found in those searches. First affected revision is NOT_ENOUGH_INFO. Prepared with AI assistance; no tracked source was changed.

Triage assessment

  • Impact level: P3
  • Assessment status: supported
  • Impact basis: An outdated documentation list omits two implemented versions; the observed runtime still offers both follow-ups, so no behavior failure is claimed.
  • Workaround status: available
  • Workaround basis: The dedicated IL2CPP guide lists both versions, and the executed service returns their inspection follow-ups.
Originally created by @coygeek on GitHub (Oct 23, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/6672 ## Before submitting - [x] I searched the open and closed issues for a related report. - [x] I removed credentials, tokens, private paths, and sensitive target data. ## Area Documentation ## Observed behavior The desktop installation guide describes IL2CPP follow-up admission for “supported raw version 29, 31 or 39,” omitting versions 24 and 27. The production desktop application service offers `inspect_il2cpp_metadata` for both omitted versions, and the dedicated IL2CPP guide lists them as supported. The stale version list can make users triaging older Unity installations overlook an available next step. ## Reproduction Read the [desktop guide's IL2CPP follow-up paragraph](https://github.com/morluto/rea/blob/99a5ffae3bf3d73f11bca3d9b8893347964b10b9/docs/desktop-applications.md#L104-L110), then compare the supported version list in the [dedicated IL2CPP guide](https://github.com/morluto/rea/blob/99a5ffae3bf3d73f11bca3d9b8893347964b10b9/docs/il2cpp-metadata.md#L11-L17). The following complete source-service probe was also executed once for each of five cases. From the identified checkout with locked dependencies installed, save it as `/tmp/desktop-version-probe.mts`, then run: ```sh node --import ./node_modules/tsx/dist/loader.mjs /tmp/desktop-version-probe.mts ``` ```ts import {mkdtemp, mkdir, writeFile, rm} from 'node:fs/promises'; import {tmpdir} from 'node:os'; import {join} from 'node:path'; import {pathToFileURL} from 'node:url'; const load = (name:string)=>import(pathToFileURL(join(process.cwd(), name)).href); const {DesktopApplicationReader}=await load('src/artifacts/DesktopApplicationReader.ts'); const {DesktopApplicationService}=await load('src/application/artifacts/DesktopApplicationService.ts'); const root=await mkdtemp(join(tmpdir(),'rea-desktop-versions-')); const service=new DesktopApplicationService(new DesktopApplicationReader()); try { for(const version of [24,27,29,12,null]) { const dir=join(root,version===null?'truncated':String(version)); await mkdir(dir); const b=Buffer.alloc(version===null?4:8); b.writeUInt32LE(0xfab11baf,0); if(version!==null)b.writeUInt32LE(version,4); await writeFile(join(dir,'global-metadata.dat'),b); const r=await service.inspect({path:dir}); if(!r.ok)throw r.error; const x=r.value.normalized_result; console.log(JSON.stringify({version,coverage:x.coverage.status,facts:x.files.flatMap(f=>f.facts).map(f=>({kind:f.kind,value:f.value})),probes:x.next_probes.map(p=>p.operation)})); } } finally {await service.close();await rm(root,{recursive:true,force:true});} ``` ## Expected behavior Describe the supported desktop follow-up versions consistently with the dedicated guide and the shared implementation: 24, 27, 29, 31 and 39. Preserve the current warning that a recognized magic/version prefix does not establish complete metadata validity or native-binary correspondence; version 24 layout restrictions still apply when actual metadata inspection runs. ## Impact and scope Documentation-only mismatch. Users reading this triage guide receive an incomplete version list; the observed service itself offers the expected follow-ups. No inspection failure or data loss was observed, and user prevalence was not measured. The dedicated guide and returned `next_probes` provide the correct information today. ## REA version Package 6.7.0; source revision `99a5ffae3bf3d73f11bca3d9b8893347964b10b9`. The source service and repository documentation were checked; the published npm artifact was not executed. ## Runtime and platform Node.js v24.22.1; Linux x64; repository-locked tsx 4.23.15. No Unity, native analysis provider, or external metadata decoder was used. ## Target and artifact context Disposable directories containing only a `global-metadata.dat` magic/version prefix: versions 24, 27, 29 and 12 used eight bytes; the truncated-version control used four. These are candidate headers, not complete metadata files. The probe exercises directory triage only and does not claim full decoding of synthetic or real Unity metadata. ## Interface Other Repository documentation and the shared source application service. ## Earliest failure stage Unknown This is a documentation discrepancy, with no failing runtime stage. ## Relevant output or evidence - Expected source: The dedicated IL2CPP guide linked above and the [shared supported-version admission](https://github.com/morluto/rea/blob/99a5ffae3bf3d73f11bca3d9b8893347964b10b9/src/domain/desktopApplicationProjection.ts#L64-L83). - Failure source: The desktop guide's omitted version names in the linked paragraph; source-service output below independently confirms the offered follow-ups. - Evidence provenance: observed documentation and source-service output. - Local verification: reproduced the documentation discrepancy; the complete probe exited 0. - Reproduction completeness: complete for this documentation mismatch. Full metadata parsing and CLI/MCP transports were not exercised. ```jsonl {"version":24,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":24}}],"probes":["inspect_il2cpp_metadata"]} {"version":27,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":27}}],"probes":["inspect_il2cpp_metadata"]} {"version":29,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":29}}],"probes":["inspect_il2cpp_metadata"]} {"version":12,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":12}}],"probes":[]} {"version":null,"coverage":"complete-within-scan","facts":[{"kind":"il2cpp-metadata-header","value":{"magic":"0xfab11baf","raw_version":null}}],"probes":[]} ``` ## Typed outcome or recovery expected The guide's listed versions should agree with the observed follow-up admission. A proposed restoration check is textual: the paragraph must include both omitted versions while retaining its distinction between a candidate header and fully validated metadata. ## Analysis or suspected cause The desktop paragraph appears to retain the earlier version list. This is a source-derived explanation of the text discrepancy, not evidence of a runtime parser defect. ## Additional context Open/closed searches covered desktop IL2CPP, version 24/27, documentation, and the supplied open-issue corpus. No matching report was found in those searches. First affected revision is NOT_ENOUGH_INFO. Prepared with AI assistance; no tracked source was changed. ## Triage assessment - Impact level: P3 - Assessment status: supported - Impact basis: An outdated documentation list omits two implemented versions; the observed runtime still offers both follow-ups, so no behavior failure is claimed. - Workaround status: available - Workaround basis: The dedicated IL2CPP guide lists both versions, and the executed service returns their inspection follow-ups.
Author
Owner

@ezrabrilliant commented on GitHub (Oct 23, 2026):

I'd like to fix this: list IL2CPP versions 24 and 27 in the desktop guide's IL2CPP follow-up paragraph so it matches the supported versions. I'll open a PR shortly.

<!-- gh-comment-id:6366159447 --> @ezrabrilliant commented on GitHub (Oct 23, 2026): I'd like to fix this: list IL2CPP versions 24 and 27 in the desktop guide's IL2CPP follow-up paragraph so it matches the supported versions. I'll open a PR shortly.
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#4053
No description provided.