[GH-ISSUE #5151] [Feature] Make CIL anchors joinable to call_edges and field_accesses without relying on emission order #3168

Closed
opened 2026-10-31 00:37:25 +00:00 by bsakaguchi · 3 comments
Owner

Originally created by @elricfd on GitHub (Oct 19, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/5151

Before submitting

  • I searched the open and closed issues and pull requests for a related proposal.
  • I understand the contribution scope must be reviewed before integration; open questions are welcome here.
  • This request does not include credentials, private samples, or sensitive target data.

Area

Native analysis or decompilation

Current limitation

A CIL anchor carries a bare token: {il_offset, opcode, operand_kind, operand: "0x06002c95"}. The names are in separate arrays that have no il_offset:

  • call_edges[] = {caller_token, caller, opcode, target_token, target_kind, target_name, target_declaring_type}
  • field_accesses[] = {method_token, method, opcode, field_token, field_name, field_declaring_type}

For MixedInKey.Audio.AudioAnalyser::GetBeatGridAndCuePoints there are 40 method anchors and 40 call edges, 35 field anchors and 35 field accesses. Matched in emission order, opcode and token agree for all of them (I checked), so a site can only be joined to its name by position. Anchors for type operands (castclass 0x020004a6, newarr 0x010002f4) have no named counterpart unless that type was selected or appears in member_refs. Method-spec 0x2b0002e7 (Enumerable.ToList) occurs at four IL offsets as four identical edges with no instantiation arguments.

Observed on rea 6.7.0, SHA-256 b014a00e6f6b80ed9313f68ad3da8f42c2de38f9111582e62145cec63c7da843 (rea inspect-managed-members <exe> --type MixedInKey.Audio.AudioAnalyser --json, ran twice).

Use cases

Reading a method's body as a named call sequence needs a script that zips anchors with edges by position. Order-based joining is undocumented; I did not test prefixed instructions, unreachable code or truncated bodies.

Desired outcome and success criteria

Either il_offset on call_edges and field_accesses, or a name (declaring type plus member) on the anchor, so each site maps to one name without relying on order. Success: the anchor at IL offset 39 resolves to IMagellanAnalysisFilter::GetTempo using one lookup.

Expected interaction with targets

Read existing files or captured data

Target and scope details (optional)

Read-only; no change in authority.

Verification available so far

I have a prototype or observed results

Verification details (optional)

The position check described above, on one method.

Alternatives considered

Positional join by script; works on the one method tested.

Possible direction

An il_offset on the edge and access rows is the smaller addition and keeps anchors compact; names on anchors would repeat strings. Measure tokens either way (AGENTS.md "Performance").

References

Closed #2160 / #2163 added declaring types to call and field targets. Related to the signature-name request for class:<index> operands.

Originally created by @elricfd on GitHub (Oct 19, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/5151 ### Before submitting - [x] I searched the open and closed issues and pull requests for a related proposal. - [x] I understand the [contribution scope](https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#contribution-scope) must be reviewed before integration; open questions are welcome here. - [x] This request does not include credentials, private samples, or sensitive target data. ### Area Native analysis or decompilation ### Current limitation A CIL anchor carries a bare token: `{il_offset, opcode, operand_kind, operand: "0x06002c95"}`. The names are in separate arrays that have no `il_offset`: - `call_edges[] = {caller_token, caller, opcode, target_token, target_kind, target_name, target_declaring_type}` - `field_accesses[] = {method_token, method, opcode, field_token, field_name, field_declaring_type}` For `MixedInKey.Audio.AudioAnalyser::GetBeatGridAndCuePoints` there are 40 method anchors and 40 call edges, 35 field anchors and 35 field accesses. Matched in emission order, opcode and token agree for all of them (I checked), so a site can only be joined to its name by position. Anchors for `type` operands (`castclass 0x020004a6`, `newarr 0x010002f4`) have no named counterpart unless that type was selected or appears in `member_refs`. Method-spec `0x2b0002e7` (`Enumerable.ToList`) occurs at four IL offsets as four identical edges with no instantiation arguments. Observed on rea 6.7.0, SHA-256 `b014a00e6f6b80ed9313f68ad3da8f42c2de38f9111582e62145cec63c7da843` (`rea inspect-managed-members <exe> --type MixedInKey.Audio.AudioAnalyser --json`, ran twice). ### Use cases Reading a method's body as a named call sequence needs a script that zips anchors with edges by position. Order-based joining is undocumented; I did not test prefixed instructions, unreachable code or truncated bodies. ### Desired outcome and success criteria Either `il_offset` on `call_edges` and `field_accesses`, or a name (declaring type plus member) on the anchor, so each site maps to one name without relying on order. Success: the anchor at IL offset 39 resolves to `IMagellanAnalysisFilter::GetTempo` using one lookup. ### Expected interaction with targets Read existing files or captured data ### Target and scope details (optional) Read-only; no change in authority. ### Verification available so far I have a prototype or observed results ### Verification details (optional) The position check described above, on one method. ### Alternatives considered Positional join by script; works on the one method tested. ### Possible direction An `il_offset` on the edge and access rows is the smaller addition and keeps anchors compact; names on anchors would repeat strings. Measure tokens either way (AGENTS.md "Performance"). ### References Closed #2160 / #2163 added declaring types to call and field targets. Related to the signature-name request for `class:<index>` operands.
Author
Owner

@XinwangTao commented on GitHub (Oct 19, 2026):

Agreed that emission-order joins are fragile: any future dedup or reordering in the emitter silently breaks downstream tooling. The good news is the join key already exists — the anchor operand is the same member token as call_edges.target_token / field_accesses.field_token — so the cleanest contract is to document and guarantee that token equality is the canonical join (and treat the current arrays as denormalized views of it). If you want a stronger guarantee, adding the owning method token plus il_offset to each edge row (caller_token + il_offset for call_edges, method_token + il_offset for field_accesses) would make every row self-describing and let consumers sort/reassemble exactly like the anchor stream without guessing. Either way, an explicit stable ordering rule (e.g. emit anchors and edges in a deterministic sorted order) would make the emission-order path safe for the cases where the token alone is ambiguous, like multiple synthetic edges sharing one target token.

<!-- gh-comment-id:6257738076 --> @XinwangTao commented on GitHub (Oct 19, 2026): Agreed that emission-order joins are fragile: any future dedup or reordering in the emitter silently breaks downstream tooling. The good news is the join key already exists — the anchor operand is the same member token as call_edges.target_token / field_accesses.field_token — so the cleanest contract is to document and guarantee that token equality is the canonical join (and treat the current arrays as denormalized views of it). If you want a stronger guarantee, adding the owning method token plus il_offset to each edge row (caller_token + il_offset for call_edges, method_token + il_offset for field_accesses) would make every row self-describing and let consumers sort/reassemble exactly like the anchor stream without guessing. Either way, an explicit stable ordering rule (e.g. emit anchors and edges in a deterministic sorted order) would make the emission-order path safe for the cases where the token alone is ambiguous, like multiple synthetic edges sharing one target token.
Author
Owner

@xu91102 commented on GitHub (Oct 20, 2026):

I confirmed the joinability gap through the compiled public CLI on main 074768901f3cdc8205b61773fb1faf6f6c7b3ca8, using an inert self-authored managed PE fixture with two identical calls and two accesses to the same field. inspect-managed-members <fixture.dll> --json --full-output returns two indistinguishable call-edge rows and two indistinguishable field-access rows, while the owning method's anchors already retain the distinct IL offsets (calls 6/11, field accesses 1/16). A ret-only control returns empty arrays. Both input SHA-256 hashes remained unchanged; neither file was executed.

I plan the small additive option described here: carry the existing anchor's il_offset onto each derived call-edge/field-access row, retaining the method token as the other part of site identity. Preserve old Evidence without this field; do not infer offsets from ordering, reparse IL, or change names, token resolution, selection, paging, limits, or execution authority. I will check the actual CLI/MCP and retained-view projections, including repeated sites and legacy records, before preparing a PR.

This verifies the missing coordinates on synthetic static inputs only. It does not reproduce the original Mixed In Key sample or claim real .NET execution, decompilation, cross-platform or performance verification.

Follow-up after implementation: the shared edge/access producer now copies the owning anchor's il_offset; the canonical schema reuses the anchor-offset invariant and accepts historical missing fields without inventing zero. There is no extra IL parse or array-order lookup. Normal hooks, commit and fork push produced 668c0574902a4f50f9b315de2ef89653288a3472 on xu91102/rea:codex/managed-cil-site-offsets, based on 074768901. Frozen source bytes match before/after commit/push; separate independent Standards/Spec reviews pass.

Six focused files/152 PASS plus five fresh README tests give seven distinct source files/157 PASS, zero skip. Check/docs/discovery pass (1,720 test files exactly once); normal local installed-package verification and explicit pack dry-run pass, official MCP discovery is 209 tools/six prompts. A fresh feature tarball has 1,905 matching installed files. Two compiled and two installed CLI controls preserve the entire baseline normalized result after removing only the new offset fields. One actual installed stdio MCP session (five calls) verifies repeated sites, retained second-call/field pages at IL11/16, empty-site control and session health. Inputs are unchanged; synthetic PE files are never executed.

For the repeated fixture, normalized JSON is 5,672→5,730 bytes; the empty fixture remains 4,518 bytes. Local single-control wall/child CPU timings are recorded, but are not a cold/warm benchmark. Agent/model token usage and peak process-family memory are unmeasured. There is no performance improvement claim. CLR execution, real application samples, native engines, agent/model and Windows/Linux remain not run.

No upstream PR or upstream CI exists for this change yet. No repeat create request was made while the prior creation refusal has no confirmed recovery. No issue-close action or reply to another author was made.

Publication follow-up after renewed author instruction: the first prepared item in this batch, #5386 (xu91102:codex/grpc-web-trailer-values → morluto/rea:main, Draft), was actually attempted through ordinary gh pr create on 2026-10-20. GitHub returned xu91102 does not have the correct permissions to execute CreatePullRequest. The exact-head follow-up query found no PR. Cause/policy are unknown; no account/API/UI bypass or self-closing another PR was used. The remaining two branch requests were not repeated after the same refusal. This batch still has zero upstream PRs, so these new items have no upstream CI or Codex PR review yet. Existing fork commits and validation remain as documented above.

Upstream PR publication

Published as Draft PR #5478: https://github.com/morluto/rea/pull/5478, from xu91102:codex/managed-cil-site-offsets at 668c0574902a4f50f9b315de2ef89653288a3472. This is the ordinary fork-to-upstream request; the three human readiness declarations and eight before-merge items remain unchecked. Latest captured main 21e0c580 leaves the explicitly checked relevant inputs unchanged and merges statically; this is not a claim that local tests ran on that later main. Upstream CI and automated review are followed separately on the actual PR head.

Current-head upstream CI

CI39415299710 attempt1 completed SUCCESS for PR #5478 head 668c0574902a4f50f9b315de2ef89653288a3472:32 jobs,14 success/18 conditional skips. The complete2,946,855-byte log was read; every executed job first checked out synthetic merge d073dcf1, parents main 21e0c580 plus this PR head. All three changed contribution test files executed. Linux Portable22,518 passed/183 skipped is the source-plus-five-shards aggregate, not extra execution. The Linux native package lane and Windows addon cross-build executed; conditional Windows runtime/Apple/provider lanes were not run. Title and initial Draft readiness guard also passed; Draft/human declarations remain unchanged, with no overall Codex or human-review approval inferred.

2026-10-22 maintenance: actual main integration

The previous CI section records the historical 668c0574 head. PR #5478 now contains a normal merge of main 421d527bfefa7c268ccb1e6aca68d59e45ebe643, delivered through the same fork branch as f248b0d214b83e2018a95677051d678875255500. The sole textual conflict was between the repeated-site CLI regression and main's malformed-prefix regression; both are retained. The contribution remains the same six-file,88-line delta against that incorporated main. Normal hooks/commit/fork push and exact upstream/fork head/tree readback passed; Draft and all human declarations remain unchanged.

On these exact integrated source bytes, eight focused files passed182 tests plus five fresh README tests: nine distinct files,187 PASS/zero skip. Check, docs, discovery(1,957 files), the portable managed verifier, actual installed-package verification(213 tools/six prompts) and explicit pack dry-run passed. A fresh tarball installed2,052 identical files; two compiled plus two installed CLI controls preserve repeated offsets and the empty control, and the final installed stdio MCP session passed five calls using the shared artifact helper, with successful awaited cleanup before the receipt was written. Independent Standards and Spec v2 both passed. The earlier v1 verifier-cleanup finding and original outputs are retained as a harness limitation; its calls are not added to the final five.

New-head CI39704834362 attempt1 is still running in the latest snapshot, with no actual failure observed; the old head's SUCCESS is not transferred. A later captured main 73be86c3 is only statically compatible and was not integrated or fully runtime-validated here. Synthetic PE inputs remain unchanged and are never executed. Real CLR/application samples, native engines, agent/model, Windows/Linux local runtime and performance validation remain not run; automated checks do not establish human approval. No GitHub merge/close/ready or manual review/workflow trigger was performed.

Current-head CI completion: 39704834362 attempt1 subsequently finished SUCCESS for f248b0d214b83e2018a95677051d678875255500:36 jobs,17 success/19 conditional skips. The complete3,132,344-byte log was read(SHA256 ae207b3082a76fcc9f2f478c1cd735c661bc2fa04c8d9327810ce8cee4a2010b); all17 executed jobs' first own checkout was df904516, parents captured CI main 73be86c3 and this PR head. Source plus eight shards aggregate24,774 PASS/200 skip, and all three changed contribution test files executed. Linux x64 native-package validation and the Windows-controls cross-build executed; conditional Windows runtime/Apple/provider jobs did not. The Vite fixture map lookup and expected unsafe-cache-prefix rejection occurred in successful tests/shards and are retained as diagnostics. The CI merge base73be is not incorporated into the feature's source history; local gates remain bound to actual incorporated421main. Draft and human declarations remain unchanged; no overall Codex/security/human approval is inferred.

2026-10-24 update: PR #5478 is normally updated to 8e79e8eb14e1fbcc567ebe61d68566c8ab1c2c1c after actual review 5634115008. Main 357e354ac7f5aed8e90c209dff30327d6bf212dc independently supplies the producer/nullable schema; the PR now retains three regression-test files (69 additions) against integrated main d81d6b67077b5acdcdb13330eb4e140905bc4e2a, with production/schema/docs exactly matching main. Missing historical offsets use main's null contract.

Current integrated local evidence: 338 distinct tests pass, check/docs/discovery/package and frozen independent Standards/Spec review pass; 2,300 exact installed package files, two compiled plus two installed CLI controls, and one installed MCP session/five calls pass. The published corrective history restores all reviewed bytes and the worktree is clean. New-head upstream CI/review are tracked separately; CLR, real application samples, other local hosts, agent/model and performance remain NOT RUN. No claim of my source being adopted or author credit is made. The issue's existing state is maintained; I have not closed or reopened it.

Follow-up at 84aa8a7bef8ca7e6879627d586e10d7008b331ed: the subsequent real CI 40049984405 exposed a stale list_names snapshot fixture. Later main 06822aed63a20ebda18bf8cc5b1589bf14761838 accepts canonical value; the mock's legacy name caused unreadable_output before snapshot publication, followed by the misleading missing-file error. Exact CI-tree and main-parent Linux controls reproduce that chain; changing only the fixture fixes it. The final small test correction uses value and asserts the first operation before snapshot read, retaining all cases and production validation.

Final source validation is 357 distinct macOS tests passing with two Windows skips; the ten-file Linux arm64 container run passes 348 with the same two skips, counted separately. Check/docs/discovery and independent frozen Standards/Spec review pass. Original installed package/CLI/MCP probes are reused only after proving all 2,300 product bytes and production inputs unchanged; no extra executions are claimed. The owned diagnostic container is removed, source is clean, normal history and the human owner's declarations are preserved. New-head CI/review remain separate from the preceding failed run.

Final integrated follow-up at 1130fc801c5b6b785eb2a5b312117881bf8d10d3: main2968 supplied the canonical native inventory fixture with its schema type constraint and the first-operation assertion. The real new conflict is resolved by keeping that complete main snapshot file byte-for-byte. Incorporated main is 9df94a62cd56b6ab29d55d56cb7db87ad8e5e439; only the three distinct managed regression test files / 69 additions remain relative to it. No production/schema/docs/dependency/workflow delta or source-adoption credit is claimed.

Fresh integrated verification is 358 distinct macOS tests passing / two existing Windows skips, check/docs/discovery, portable managed fixtures, actual installed package 221tools/six prompts with exact update and completed cleanup, a fresh 2296-file identical tarball with four compiled/installed CLI controls, and one installed MCP session/five calls including retained pages and empty control. Final frozen Standards/Spec both pass; normal history/hooks and complete source/package byte checks pass. Old 357mac/348Linux results remain on their earlier baselines and are not transferred. No pending conflict or diagnostic container remains. All human declarations are retained; new-head CI/review is separate from the preceding code failure and installation API rate limit.

2026-10-24 final follow-up: normal fork delivery updated PR #5478 to 6329bc85413f1395df063a0035440316e301f65c, actually incorporating main 9df94a62cd56b6ab29d55d56cb7db87ad8e5e439. Main owns the producer/nullable schema and canonical snapshot fixture; the three distinct managed owner/CLI/MCP regressions remain. The actual newer native-plist CI failure is corrected by four positive writes using a canonical XML fixture; no production validation or assertions were relaxed. Linux main-parent controls reproduce3FAIL52PASS then55PASS, counted separately, with the owned container removed.

Final local source: 413distinctPASS/2existingWindows skips, check/docs/discovery and independent frozen Standards/Spec PASS. 2296exact product files,4compiled/installedCLI and oneinstalledMCPsession5calls remain valid on exactly unchanged shipped bytes after the test-only fixture follow-up; not rerun or transferred to latermain. The normal published source/history is clean and matches the freeze. New-head upstreamCI/Codex are tracked separately; preceding failed/cancelled attempts remain historical. Human owner explicitly confirmed all3author declarations, preserved across this push; Before merge values remain unchanged. No newPR/GitHubmerge/close/ready/reviewtrigger/resolve or source-adoption credit is claimed. Full client/CLR/native engines/real apps/agent/model/other-host qualification/performance remain NOT_RUN beyond recorded bounded controls.

2026-10-24 current delivery: PR#5478 now normally incorporates main f3269feaad5432a59363715cc3dc43c22c430573 at e276bcfe7d8abf3e46d2d594aee63d3b3dd43260. Main7f707 independently supplies the complete plist fixture/provenance/malformed-byte tests; that full file is retained and our redundant XML fixture removed. No source-adoption credit or newroot/PR is claimed. Only three distinct managed regression files/69additions remain; producer/nullable schema/docs/workflows and snapshot fixture exactly follow main.

Fresh actual integrated validation: 419distinctPASS/2existingWindows skips, check/docs/discovery2316once, installedpackage221tools6prompts/exactupdate/awaitcleanup, new2296-file identical tarball, 4actualcompiled/installedCLI and oneinstalledstdioMCPsession5calls/retainedpages/inputhashes/awaitcleanup, frozen independentStandards/SpecPASS. These are new executions on this main, not transferred oldcounts. Published source/history is clean and matches the current freeze. NewheadCI/Codex are independent; previous failed/cancelled attempts remain historical. All3explicitly human-confirmed author declarations and existing Before merge values are preserved. No GitHubmerge/close/ready/create/manualtrigger/resolve was performed. Fullclient/CLR/nativeengines/realapps/agent/model/externalpeer/fullotherhost/performance remainNOT_RUN beyond recorded bounded controls.

2026-10-24 test-only CI follow-up at c9f05f825c97a29f9fc05b4b012b766be990c9fb: adopted morluto's two maintained-main plist validation/conversion fixtures from dd198d037f, after reproducing the actual seven provenance failures. Final affected group 86PASS replaces overlapping56; distinct union 449PASS/2existingWindowsSkip/15files, not a fresh all-files run. Fresh check:fast2tasks0cache and frozen independent Standards/Spec PASS. All 2296 product bytes remain identical, so existing package/CLI/MCP/reader evidence is reused with zero new runtime calls. Actually included main remains f3269feaad, no later-main production integration or newroot/PR. Normal fork history and explicit human3checked are preserved; new-head codeCI/Codex remain independently tracked. Original failures and NOT_RUN boundaries stay recorded. No issueclose/reopen, GitHubmerge/close/ready/create/manualtrigger/resolve.

2026-10-24 CI follow-up at 39cfee921ddb4e2dbd33ee74aec097659489b1bd: retain the prior exact plist fixture correction and adopt morluto's canonical bound-target Apple dispatch owner/consumer controls from 41e10b240c. The actual Source failures reproduce 2FAIL/3PASS before correction. One fresh focused group plus fresh README gives 460PASS/2existingWindowsSkip/18files; no older overlap is added. Full check/docs/discovery/pack pass. Fresh current-source 2296-file package verifies 221tools/6prompts, exact update and awaited cleanup. Fresh feature runtime: four actual compiled/installed CLI controls and one installed stdio MCP session / five calls covering retained pages, repeated offsets, empty results, input hashes and awaited cleanup. Two bounded real Mac MCP fault/recovery tests pass; this is not full native/client/other-host qualification. Independent Standards/Spec PASS, normal fork history, complete frozen source/package byte gates and human3checked are preserved. Actually integrated main remains f3269feaad; the Apple delta is a limited canonical port with morluto credit, not whole later-main integration or a newroot/PR. New-head CI/Codex remain independently tracked, historical failures/NOT_RUN boundaries retained. Initial5478 package cleanup failure and original retained workspace remain recorded; a later independent PASS does not resolve its unknown cause. No issueclose/reopen, GitHubmerge/close/ready/create/manualtrigger/resolve.

2026-10-24 CI follow-up at 1c969da727fbc6d0e4718ecf0a124a79b03d5932: complete runs 40062065788 / 40062071496 expose two actual failure families. The Apple jobs each have one typed XML CLI provenance failure (307 passed / 5 skipped); shard 3 has three package-listing fixture failures. Aggregate failures and cancelled shards are reported separately.

The XML expectation now requires exactly file followed by successful plutil -lint, including its exact argv; binary still requires only file. All eighteen cases and typed values remain checked. The package fixture adds only the required synthetic CLI environment-owner member, preserving LF/CRLF success and literal-CR/bytecode refusal. Twelve isolated baseline/canonical mocked verifier controls establish that boundary; they are not physical package validation or additional test PASS. The own physical package based on f326 does not contain that later-main owner, and this correction does not claim whole-main integration.

The final two-file group freshly passes 21 tests, replacing overlapping intermediate runs; fresh check:fast passes two tasks with zero cache hits. Combined with unchanged prior focused/README evidence, the distinct total is 481 PASS / 2 existing Windows skips across 20 files, not one fresh all-files run. All 2296 archive/current/installed product bytes still match. Earlier current-owner verifier, feature CLI/MCP and reader evidence is reused; the eighteen compiled CLI and four mocked verifier calls are already inside the 21 tests.

Independent frozen Standards / Spec reviews pass. Normal hooks, pre-push and post-push byte gates match; the human declaration tail is unchanged. Actually incorporated main remains f3269feaad5432a59363715cc3dc43c22c430573, with the previously documented limited canonical Apple port. New-head CI and Codex remain separate pending checks. Historical failures, the initial 5478 unresolved cleanup boundary, and full client/native/other-host/performance NOT RUN remain recorded. No issue state, ready, merge, close, release or manual review/workflow trigger was changed.

2026-10-24 follow-up at a4fc5a09a74a29de6b6a22a42cc9f806de0cf77a: ordinary main integration b5c42dfc2a8eddeffb8d37c669178fa04169f050 resolves the two actual native-test conflicts and preserves Kaoru0822's #6945 canonical fixture fixes and authorship. The remaining Webpack input incorrectly redeclared its loader parameter; the mock is now supplied at Node-oracle factory entry. Every Node/static key/value and negative assertion remains; main's parameter-role guard is unchanged. Fresh shared-original public control on integrated5478 (1FAIL/36PASS) is retained;5152 has matching bytes and its own fresh corrected full group.

Fresh 23-file group 546PASS/2existing Windows skips plus README9 yields 555PASS/24distinct files. Full check/docs/discovery and real installed verifier 222tools/6prompts pass. All 2296 current/archive/installed product bytes match the new tarball; feature CLI/MCP/reader acceptance was freshly rerun on this source, not transferred from f326. Normal hooks/frozen independent Standards+Spec and complete byte gates pass; fork/upstream head/tree/parents and the explicitly confirmed human tail are exact. New-head CI/Codex remain separate gates. No new root/PR, issue state, ready, merge/close/release/manual trigger or duplicate reply/resolve. Historical failures, the initial5478 unresolved cleanup boundary and unverified full-client/provider/other-host/performance limits remain recorded.

2026-10-24 follow-up at 5ae4ed2671020d6c867a5738662fbc8e24c6be34: ordinary main merge d87e73f2db50be72d33a4b3c7199af35518b441c resolves the new actual Webpack-file conflict. Main's gensokyo-dev #6951 fixes the same invalid fixture by executing the exact registered bundle and passing the factory loader at its call boundary. Retain the complete canonical file and all original assertions; normally remove our redundant oracle implementation. #6945's canonical fixture history and Kaoru0822 credit remain. No own-source adoption credit, production-guard change or foreign runtime is inferred.

The changed file freshly passes37 on each worktree. It replaces the old37 within unchanged prior focused/README inputs: final 555PASS/24distinct files/2existing Windows skips, not a fresh whole-group rerun or37 extra. Fresh fullcheck passes. Docs/discovery/package/feature runtime reuse byte-identical tested inputs; all 2296 current/archive/installed product files and tarball are rechecked exact. The prior b5c installed verifier222tools6prompts and feature runtime were fresh, not old f326 transfer; no new dedicated runtime after this test-only merge. Independent frozen Standards+Spec, normal hooks and full byte gates pass before push. Fork/upstream head/tree/parents/body and explicitly confirmed human tail are exact. New-head CI/Codex remain separate. Historical failures, initial5478 cleanup UNKNOWN/retained workspace and full-client/other-host/performance limits remain. No issue state/ready/merge/close/release/create/manual trigger/replyPOST/resolve action.

Current-head code CI 40068742606 attempt1 completed SUCCESS for 5ae4ed2671020d6c867a5738662fbc8e24c6be34: 37 jobs, 15 success and 22 conditional skips. The complete final log and every executing job's first own checkout/parents were read. All current contribution test files actually executed; canonical Webpack, deferred launcher, package listing and Apple unit regressions were also observed in execution.

Source 17306PASS/13skip plus the recorded shards aggregate to Portable 31323PASS/232skip; Portable is a summary, not another execution. Platform skips, prior failed/cancelled attempts, local same-product verification, Codex/security/human review and merge remain separate. No old failure is erased, no test is skipped to pass, and the explicitly confirmed author declarations remain intact.

<!-- gh-comment-id:6286780907 --> @xu91102 commented on GitHub (Oct 20, 2026): I confirmed the joinability gap through the compiled public CLI on main `074768901f3cdc8205b61773fb1faf6f6c7b3ca8`, using an inert self-authored managed PE fixture with two identical calls and two accesses to the same field. `inspect-managed-members <fixture.dll> --json --full-output` returns two indistinguishable call-edge rows and two indistinguishable field-access rows, while the owning method's anchors already retain the distinct IL offsets (calls 6/11, field accesses 1/16). A `ret`-only control returns empty arrays. Both input SHA-256 hashes remained unchanged; neither file was executed. I plan the small additive option described here: carry the existing anchor's `il_offset` onto each derived call-edge/field-access row, retaining the method token as the other part of site identity. Preserve old Evidence without this field; do not infer offsets from ordering, reparse IL, or change names, token resolution, selection, paging, limits, or execution authority. I will check the actual CLI/MCP and retained-view projections, including repeated sites and legacy records, before preparing a PR. This verifies the missing coordinates on synthetic static inputs only. It does not reproduce the original Mixed In Key sample or claim real .NET execution, decompilation, cross-platform or performance verification. Follow-up after implementation: the shared edge/access producer now copies the owning anchor's `il_offset`; the canonical schema reuses the anchor-offset invariant and accepts historical missing fields without inventing zero. There is no extra IL parse or array-order lookup. Normal hooks, commit and fork push produced `668c0574902a4f50f9b315de2ef89653288a3472` on `xu91102/rea:codex/managed-cil-site-offsets`, based on `074768901`. Frozen source bytes match before/after commit/push; separate independent Standards/Spec reviews pass. Six focused files/152 PASS plus five fresh README tests give seven distinct source files/157 PASS, zero skip. Check/docs/discovery pass (1,720 test files exactly once); normal local installed-package verification and explicit pack dry-run pass, official MCP discovery is 209 tools/six prompts. A fresh feature tarball has 1,905 matching installed files. Two compiled and two installed CLI controls preserve the entire baseline normalized result after removing only the new offset fields. One actual installed stdio MCP session (five calls) verifies repeated sites, retained second-call/field pages at IL11/16, empty-site control and session health. Inputs are unchanged; synthetic PE files are never executed. For the repeated fixture, normalized JSON is 5,672→5,730 bytes; the empty fixture remains 4,518 bytes. Local single-control wall/child CPU timings are recorded, but are not a cold/warm benchmark. Agent/model token usage and peak process-family memory are unmeasured. There is no performance improvement claim. CLR execution, real application samples, native engines, agent/model and Windows/Linux remain not run. No upstream PR or upstream CI exists for this change yet. No repeat create request was made while the prior creation refusal has no confirmed recovery. No issue-close action or reply to another author was made. Publication follow-up after renewed author instruction: the first prepared item in this batch, #5386 (`xu91102:codex/grpc-web-trailer-values` → `morluto/rea:main`, Draft), was actually attempted through ordinary `gh pr create` on 2026-10-20. GitHub returned `xu91102 does not have the correct permissions to execute CreatePullRequest`. The exact-head follow-up query found no PR. Cause/policy are unknown; no account/API/UI bypass or self-closing another PR was used. The remaining two branch requests were not repeated after the same refusal. This batch still has zero upstream PRs, so these new items have no upstream CI or Codex PR review yet. Existing fork commits and validation remain as documented above. ### Upstream PR publication Published as Draft PR #5478: https://github.com/morluto/rea/pull/5478, from `xu91102:codex/managed-cil-site-offsets` at `668c0574902a4f50f9b315de2ef89653288a3472`. This is the ordinary fork-to-upstream request; the three human readiness declarations and eight before-merge items remain unchecked. Latest captured main `21e0c580` leaves the explicitly checked relevant inputs unchanged and merges statically; this is not a claim that local tests ran on that later main. Upstream CI and automated review are followed separately on the actual PR head. ### Current-head upstream CI [CI39415299710 attempt1](https://github.com/morluto/rea/actions/runs/39415299710/attempts/1) completed SUCCESS for PR #5478 head `668c0574902a4f50f9b315de2ef89653288a3472`:32 jobs,14 success/18 conditional skips. The complete2,946,855-byte log was read; every executed job first checked out synthetic merge `d073dcf1`, parents main `21e0c580` plus this PR head. All three changed contribution test files executed. Linux Portable22,518 passed/183 skipped is the source-plus-five-shards aggregate, not extra execution. The Linux native package lane and Windows addon cross-build executed; conditional Windows runtime/Apple/provider lanes were not run. Title and initial Draft readiness guard also passed; Draft/human declarations remain unchanged, with no overall Codex or human-review approval inferred. ### 2026-10-22 maintenance: actual main integration The previous CI section records the historical `668c0574` head. PR #5478 now contains a normal merge of main `421d527bfefa7c268ccb1e6aca68d59e45ebe643`, delivered through the same fork branch as `f248b0d214b83e2018a95677051d678875255500`. The sole textual conflict was between the repeated-site CLI regression and main's malformed-prefix regression; both are retained. The contribution remains the same six-file,88-line delta against that incorporated main. Normal hooks/commit/fork push and exact upstream/fork head/tree readback passed; Draft and all human declarations remain unchanged. On these exact integrated source bytes, eight focused files passed182 tests plus five fresh README tests: nine distinct files,187 PASS/zero skip. Check, docs, discovery(1,957 files), the portable managed verifier, actual installed-package verification(213 tools/six prompts) and explicit pack dry-run passed. A fresh tarball installed2,052 identical files; two compiled plus two installed CLI controls preserve repeated offsets and the empty control, and the final installed stdio MCP session passed five calls using the shared artifact helper, with successful awaited cleanup before the receipt was written. Independent Standards and Spec v2 both passed. The earlier v1 verifier-cleanup finding and original outputs are retained as a harness limitation; its calls are not added to the final five. New-head [CI39704834362 attempt1](https://github.com/morluto/rea/actions/runs/39704834362/attempts/1) is still running in the latest snapshot, with no actual failure observed; the old head's SUCCESS is not transferred. A later captured main `73be86c3` is only statically compatible and was not integrated or fully runtime-validated here. Synthetic PE inputs remain unchanged and are never executed. Real CLR/application samples, native engines, agent/model, Windows/Linux local runtime and performance validation remain not run; automated checks do not establish human approval. No GitHub merge/close/ready or manual review/workflow trigger was performed. Current-head CI completion: [39704834362 attempt1](https://github.com/morluto/rea/actions/runs/39704834362/attempts/1) subsequently finished SUCCESS for `f248b0d214b83e2018a95677051d678875255500`:36 jobs,17 success/19 conditional skips. The complete3,132,344-byte log was read(SHA256 `ae207b3082a76fcc9f2f478c1cd735c661bc2fa04c8d9327810ce8cee4a2010b`); all17 executed jobs' first own checkout was `df904516`, parents captured CI main `73be86c3` and this PR head. Source plus eight shards aggregate24,774 PASS/200 skip, and all three changed contribution test files executed. Linux x64 native-package validation and the Windows-controls cross-build executed; conditional Windows runtime/Apple/provider jobs did not. The Vite fixture map lookup and expected unsafe-cache-prefix rejection occurred in successful tests/shards and are retained as diagnostics. The CI merge base73be is not incorporated into the feature's source history; local gates remain bound to actual incorporated421main. Draft and human declarations remain unchanged; no overall Codex/security/human approval is inferred. <!-- rea-5478-main-overlap-delivered-20261024-v1 --> 2026-10-24 update: PR #5478 is normally updated to `8e79e8eb14e1fbcc567ebe61d68566c8ab1c2c1c` after actual review 5634115008. Main `357e354ac7f5aed8e90c209dff30327d6bf212dc` independently supplies the producer/nullable schema; the PR now retains three regression-test files (69 additions) against integrated main `d81d6b67077b5acdcdb13330eb4e140905bc4e2a`, with production/schema/docs exactly matching main. Missing historical offsets use main's `null` contract. Current integrated local evidence: 338 distinct tests pass, check/docs/discovery/package and frozen independent Standards/Spec review pass; 2,300 exact installed package files, two compiled plus two installed CLI controls, and one installed MCP session/five calls pass. The published corrective history restores all reviewed bytes and the worktree is clean. New-head upstream CI/review are tracked separately; CLR, real application samples, other local hosts, agent/model and performance remain NOT RUN. No claim of my source being adopted or author credit is made. The issue's existing state is maintained; I have not closed or reopened it. <!-- rea-5478-ci40049984405-fixture-fix-v1 --> Follow-up at `84aa8a7bef8ca7e6879627d586e10d7008b331ed`: the subsequent real CI 40049984405 exposed a stale `list_names` snapshot fixture. Later main `06822aed63a20ebda18bf8cc5b1589bf14761838` accepts canonical `value`; the mock's legacy `name` caused `unreadable_output` before snapshot publication, followed by the misleading missing-file error. Exact CI-tree and main-parent Linux controls reproduce that chain; changing only the fixture fixes it. The final small test correction uses `value` and asserts the first operation before snapshot read, retaining all cases and production validation. Final source validation is 357 distinct macOS tests passing with two Windows skips; the ten-file Linux arm64 container run passes 348 with the same two skips, counted separately. Check/docs/discovery and independent frozen Standards/Spec review pass. Original installed package/CLI/MCP probes are reused only after proving all 2,300 product bytes and production inputs unchanged; no extra executions are claimed. The owned diagnostic container is removed, source is clean, normal history and the human owner's declarations are preserved. New-head CI/review remain separate from the preceding failed run. <!-- rea-5478-main2968-conflict-integrated-v3 --> Final integrated follow-up at `1130fc801c5b6b785eb2a5b312117881bf8d10d3`: main2968 supplied the canonical native inventory fixture with its schema type constraint and the first-operation assertion. The real new conflict is resolved by keeping that complete main snapshot file byte-for-byte. Incorporated main is `9df94a62cd56b6ab29d55d56cb7db87ad8e5e439`; only the three distinct managed regression test files / 69 additions remain relative to it. No production/schema/docs/dependency/workflow delta or source-adoption credit is claimed. Fresh integrated verification is 358 distinct macOS tests passing / two existing Windows skips, check/docs/discovery, portable managed fixtures, actual installed package 221tools/six prompts with exact update and completed cleanup, a fresh 2296-file identical tarball with four compiled/installed CLI controls, and one installed MCP session/five calls including retained pages and empty control. Final frozen Standards/Spec both pass; normal history/hooks and complete source/package byte checks pass. Old 357mac/348Linux results remain on their earlier baselines and are not transferred. No pending conflict or diagnostic container remains. All human declarations are retained; new-head CI/review is separate from the preceding code failure and installation API rate limit. <!-- rea-20261024-5478-final-followup-delivered --> 2026-10-24 final follow-up: normal fork delivery updated PR #5478 to `6329bc85413f1395df063a0035440316e301f65c`, actually incorporating main `9df94a62cd56b6ab29d55d56cb7db87ad8e5e439`. Main owns the producer/nullable schema and canonical snapshot fixture; the three distinct managed owner/CLI/MCP regressions remain. The actual newer native-plist CI failure is corrected by four positive writes using a canonical XML fixture; no production validation or assertions were relaxed. Linux main-parent controls reproduce3FAIL52PASS then55PASS, counted separately, with the owned container removed. Final local source: 413distinctPASS/2existingWindows skips, check/docs/discovery and independent frozen Standards/Spec PASS. 2296exact product files,4compiled/installedCLI and oneinstalledMCPsession5calls remain valid on exactly unchanged shipped bytes after the test-only fixture follow-up; not rerun or transferred to latermain. The normal published source/history is clean and matches the freeze. New-head upstreamCI/Codex are tracked separately; preceding failed/cancelled attempts remain historical. Human owner explicitly confirmed all3author declarations, preserved across this push; Before merge values remain unchanged. No newPR/GitHubmerge/close/ready/reviewtrigger/resolve or source-adoption credit is claimed. Full client/CLR/native engines/real apps/agent/model/other-host qualification/performance remain NOT_RUN beyond recorded bounded controls. <!-- rea-20261024-5478-main-f326-delivered --> 2026-10-24 current delivery: PR#5478 now normally incorporates main `f3269feaad5432a59363715cc3dc43c22c430573` at `e276bcfe7d8abf3e46d2d594aee63d3b3dd43260`. Main7f707 independently supplies the complete plist fixture/provenance/malformed-byte tests; that full file is retained and our redundant XML fixture removed. No source-adoption credit or newroot/PR is claimed. Only three distinct managed regression files/69additions remain; producer/nullable schema/docs/workflows and snapshot fixture exactly follow main. Fresh actual integrated validation: 419distinctPASS/2existingWindows skips, check/docs/discovery2316once, installedpackage221tools6prompts/exactupdate/awaitcleanup, new2296-file identical tarball, 4actualcompiled/installedCLI and oneinstalledstdioMCPsession5calls/retainedpages/inputhashes/awaitcleanup, frozen independentStandards/SpecPASS. These are new executions on this main, not transferred oldcounts. Published source/history is clean and matches the current freeze. NewheadCI/Codex are independent; previous failed/cancelled attempts remain historical. All3explicitly human-confirmed author declarations and existing Before merge values are preserved. No GitHubmerge/close/ready/create/manualtrigger/resolve was performed. Fullclient/CLR/nativeengines/realapps/agent/model/externalpeer/fullotherhost/performance remainNOT_RUN beyond recorded bounded controls. <!-- rea-20261024-5478-plist-validation-delivered --> 2026-10-24 test-only CI follow-up at `c9f05f825c97a29f9fc05b4b012b766be990c9fb`: adopted morluto's two maintained-main plist validation/conversion fixtures from dd198d037fcd8e2d313dff2147d7a80c436f3e5c, after reproducing the actual seven provenance failures. Final affected group 86PASS replaces overlapping56; distinct union 449PASS/2existingWindowsSkip/15files, not a fresh all-files run. Fresh check:fast2tasks0cache and frozen independent Standards/Spec PASS. All 2296 product bytes remain identical, so existing package/CLI/MCP/reader evidence is reused with zero new runtime calls. Actually included main remains f3269feaad5432a59363715cc3dc43c22c430573, no later-main production integration or newroot/PR. Normal fork history and explicit human3checked are preserved; new-head codeCI/Codex remain independently tracked. Original failures and NOT_RUN boundaries stay recorded. No issueclose/reopen, GitHubmerge/close/ready/create/manualtrigger/resolve. <!-- rea-20261024-5478-apple-bound-delivered --> 2026-10-24 CI follow-up at `39cfee921ddb4e2dbd33ee74aec097659489b1bd`: retain the prior exact plist fixture correction and adopt morluto's canonical bound-target Apple dispatch owner/consumer controls from 41e10b240cec68308456056a2b4102b72199b227. The actual Source failures reproduce 2FAIL/3PASS before correction. One fresh focused group plus fresh README gives 460PASS/2existingWindowsSkip/18files; no older overlap is added. Full check/docs/discovery/pack pass. Fresh current-source 2296-file package verifies 221tools/6prompts, exact update and awaited cleanup. Fresh feature runtime: four actual compiled/installed CLI controls and one installed stdio MCP session / five calls covering retained pages, repeated offsets, empty results, input hashes and awaited cleanup. Two bounded real Mac MCP fault/recovery tests pass; this is not full native/client/other-host qualification. Independent Standards/Spec PASS, normal fork history, complete frozen source/package byte gates and human3checked are preserved. Actually integrated main remains f3269feaad5432a59363715cc3dc43c22c430573; the Apple delta is a limited canonical port with morluto credit, not whole later-main integration or a newroot/PR. New-head CI/Codex remain independently tracked, historical failures/NOT_RUN boundaries retained. Initial5478 package cleanup failure and original retained workspace remain recorded; a later independent PASS does not resolve its unknown cause. No issueclose/reopen, GitHubmerge/close/ready/create/manualtrigger/resolve. <!-- rea-20261024-5478-ci-fixtures-delivered --> 2026-10-24 CI follow-up at `1c969da727fbc6d0e4718ecf0a124a79b03d5932`: complete runs 40062065788 / 40062071496 expose two actual failure families. The Apple jobs each have one typed XML CLI provenance failure (307 passed / 5 skipped); shard 3 has three package-listing fixture failures. Aggregate failures and cancelled shards are reported separately. The XML expectation now requires exactly `file` followed by successful `plutil -lint`, including its exact argv; binary still requires only `file`. All eighteen cases and typed values remain checked. The package fixture adds only the required synthetic CLI environment-owner member, preserving LF/CRLF success and literal-CR/bytecode refusal. Twelve isolated baseline/canonical mocked verifier controls establish that boundary; they are not physical package validation or additional test PASS. The own physical package based on f326 does not contain that later-main owner, and this correction does not claim whole-main integration. The final two-file group freshly passes 21 tests, replacing overlapping intermediate runs; fresh check:fast passes two tasks with zero cache hits. Combined with unchanged prior focused/README evidence, the distinct total is 481 PASS / 2 existing Windows skips across 20 files, not one fresh all-files run. All 2296 archive/current/installed product bytes still match. Earlier current-owner verifier, feature CLI/MCP and reader evidence is reused; the eighteen compiled CLI and four mocked verifier calls are already inside the 21 tests. Independent frozen Standards / Spec reviews pass. Normal hooks, pre-push and post-push byte gates match; the human declaration tail is unchanged. Actually incorporated main remains `f3269feaad5432a59363715cc3dc43c22c430573`, with the previously documented limited canonical Apple port. New-head CI and Codex remain separate pending checks. Historical failures, the initial 5478 unresolved cleanup boundary, and full client/native/other-host/performance NOT RUN remain recorded. No issue state, ready, merge, close, release or manual review/workflow trigger was changed. <!-- rea-20261024-5478-b5c-integrated-delivered --> 2026-10-24 follow-up at `a4fc5a09a74a29de6b6a22a42cc9f806de0cf77a`: ordinary main integration `b5c42dfc2a8eddeffb8d37c669178fa04169f050` resolves the two actual native-test conflicts and preserves Kaoru0822's #6945 canonical fixture fixes and authorship. The remaining Webpack input incorrectly redeclared its loader parameter; the mock is now supplied at Node-oracle factory entry. Every Node/static key/value and negative assertion remains; main's parameter-role guard is unchanged. Fresh shared-original public control on integrated5478 (1FAIL/36PASS) is retained;5152 has matching bytes and its own fresh corrected full group. Fresh 23-file group 546PASS/2existing Windows skips plus README9 yields 555PASS/24distinct files. Full check/docs/discovery and real installed verifier 222tools/6prompts pass. All 2296 current/archive/installed product bytes match the new tarball; feature CLI/MCP/reader acceptance was freshly rerun on this source, not transferred from f326. Normal hooks/frozen independent Standards+Spec and complete byte gates pass; fork/upstream head/tree/parents and the explicitly confirmed human tail are exact. New-head CI/Codex remain separate gates. No new root/PR, issue state, ready, merge/close/release/manual trigger or duplicate reply/resolve. Historical failures, the initial5478 unresolved cleanup boundary and unverified full-client/provider/other-host/performance limits remain recorded. <!-- rea-20261024-5478-d87-canonical-delivered --> 2026-10-24 follow-up at `5ae4ed2671020d6c867a5738662fbc8e24c6be34`: ordinary main merge `d87e73f2db50be72d33a4b3c7199af35518b441c` resolves the new actual Webpack-file conflict. Main's gensokyo-dev #6951 fixes the same invalid fixture by executing the exact registered bundle and passing the factory loader at its call boundary. Retain the complete canonical file and all original assertions; normally remove our redundant oracle implementation. #6945's canonical fixture history and Kaoru0822 credit remain. No own-source adoption credit, production-guard change or foreign runtime is inferred. The changed file freshly passes37 on each worktree. It replaces the old37 within unchanged prior focused/README inputs: final 555PASS/24distinct files/2existing Windows skips, not a fresh whole-group rerun or37 extra. Fresh fullcheck passes. Docs/discovery/package/feature runtime reuse byte-identical tested inputs; all 2296 current/archive/installed product files and tarball are rechecked exact. The prior b5c installed verifier222tools6prompts and feature runtime were fresh, not old f326 transfer; no new dedicated runtime after this test-only merge. Independent frozen Standards+Spec, normal hooks and full byte gates pass before push. Fork/upstream head/tree/parents/body and explicitly confirmed human tail are exact. New-head CI/Codex remain separate. Historical failures, initial5478 cleanup UNKNOWN/retained workspace and full-client/other-host/performance limits remain. No issue state/ready/merge/close/release/create/manual trigger/replyPOST/resolve action. <!-- rea-20261024-5478-d87-current-code-ci-success --> Current-head code CI [40068742606 attempt1](https://github.com/morluto/rea/actions/runs/40068742606) completed SUCCESS for `5ae4ed2671020d6c867a5738662fbc8e24c6be34`: 37 jobs, 15 success and 22 conditional skips. The complete final log and every executing job's first own checkout/parents were read. All current contribution test files actually executed; canonical Webpack, deferred launcher, package listing and Apple unit regressions were also observed in execution. Source 17306PASS/13skip plus the recorded shards aggregate to Portable 31323PASS/232skip; Portable is a summary, not another execution. Platform skips, prior failed/cancelled attempts, local same-product verification, Codex/security/human review and merge remain separate. No old failure is erased, no test is skipped to pass, and the explicitly confirmed author declarations remain intact.
Author
Owner

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

Both produced call_edges and field_accesses retain instruction.offset as il_offset. Comparison joins by the retained offset; the repeated-call reordering control passes. Implemented in github.com/morluto/rea@357e354ac7. Validated on 488c21ab2 using the named production-parser/comparison regression (joins repeated calls by IL offset even when edge arrays are reordered; five selected tests passed). Fixtures are synthetic metadata; no CLR execution or real-provider claim.

<!-- gh-comment-id:6376096471 --> @morluto commented on GitHub (Oct 23, 2026): Both produced call_edges and field_accesses retain instruction.offset as il_offset. Comparison joins by the retained offset; the repeated-call reordering control passes. Implemented in https://github.com/morluto/rea/commit/357e354ac7f5aed8e90c209dff30327d6bf212dc. Validated on 488c21ab2 using the named production-parser/comparison regression (`joins repeated calls by IL offset even when edge arrays are reordered`; five selected tests passed). Fixtures are synthetic metadata; no CLR execution or real-provider claim.
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#3168
No description provided.