[PR #688] [CLOSED] fix(dotnet): report observed method metadata changes #2168

Closed
opened 2026-10-16 21:15:09 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/688
Author: @rudycelekli
Created: 10/6/2026
Status: ❌ Closed

Base: main ← Head: fix/rea-managed-method-metadata-20261006


📝 Commits (3)

  • 353f4cb fix(dotnet): report observed method metadata changes
  • 41d232f docs(dotnet): synchronize generated conformance skill digest
  • a41ad58 chore: integrate current upstream for metadata comparison

📊 Changes

8 files changed (+53 additions, -6 deletions)

View changed files

📝 docs/managed-code-analysis.md (+8 -0)
📝 docs/product-catalog.json (+2 -2)
📝 docs/verification/managed-conformance-manifest.json (+2 -2)
📝 skills/reverse-engineer-anything/SKILL.md (+1 -1)
📝 src/domain/managedMemberComparison.ts (+1 -0)
📝 src/domain/managedMemberComparisonItems.ts (+2 -0)
📝 src/generatedMcpToolCatalog.ts (+1 -1)
📝 tests/boundary/providers/managed/managedMemberComparison.test.ts (+36 -0)

📄 Description

Problem

compare-managed-members compares CIL and signatures but omits the already-observed MethodDef flags and implementation flags. Changing a method from public to private, or adding Synchronized, can therefore produce unchanged even though the method's metadata changed. Field comparisons already consider their flags.

Change

Add a narrow metadata method dimension when either observed flags value differs, before body coverage decisions. Preserve existing method pairing, normalized IL hashes and partial-body handling. Synchronize generated tool schemas/catalog digests and document that this is static metadata evidence.

Verification

Owned PE files were inspected and compared through the public filesystem compareManagedMemberPaths workflow. Before this patch both public→private and ordinary→synchronized cases were incorrectly unchanged. After it they are changed with metadata; their IL hashes remain identical. A different-MVID control with the same method flags remains unchanged.

  • 12 focused domain/path workflow tests pass, including the two filesystem regressions and existing partial-body controls.
  • All five npm run check tasks and npm run docs:check pass using Node 24.18.0 and locked dependencies.
  • Generated catalog semantic comparison contains only four instances of the additive method dimension enum; synchronized digests contain no unrelated catalog changes.
  • npm run verify:managed: 11 source-owned static-format scenarios pass. Optional operator manifest/ILSpy verification is unconfigured and not claimed.

This detects observed method metadata changes. It does not execute the PE, prove CLR behavior, or expand the normalized CIL hash contract.

AI assistance was used for investigation, implementation, tests, description and independent patch review. Actual filesystem proof and limitations are stated above.

CI follow-up

Hosted Docs Generation exposed a missing generated managed-conformance manifest skill digest after the synchronized catalog digest changed the skill metadata. The manifest generator's change is exactly the skill SHA and enclosing manifest ID; it changes no claims or verification statuses. The required file has been regenerated and exact npm run docs:check and all five npm run check tasks pass locally. Signed repair head 41d232f519df72e64f4e12c4edfb80b5aecaa517 includes the required generated manifest. Hosted reruns are pending, not claimed green here.

The subsequent upstream update introduced a generated manifest conflict. Signed integration head a41ad585605292170f965a32eaf2eaa30b74a810 includes current upstream b6c21b1, preserving its Command Code, skill and incur 0.6.1 updates. The conflict was resolved by regeneration from exact merged source. Fresh locked dependency installation, 12 focused tests, managed static verification, documentation checks, all five source checks and the actual owned-file comparison proof pass on that merged source. Hosted reruns are pending.

Final integration head a41ad585605292170f965a32eaf2eaa30b74a810 completed all 18 hosted checks successfully, including Docs Generation and both package integration lanes.


🔄 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/688 **Author:** [@rudycelekli](https://github.com/rudycelekli) **Created:** 10/6/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/rea-managed-method-metadata-20261006` --- ### 📝 Commits (3) - [`353f4cb`](https://github.com/morluto/rea/commit/353f4cb71e6034e7d8a3e448d987125fe74b2af4) fix(dotnet): report observed method metadata changes - [`41d232f`](https://github.com/morluto/rea/commit/41d232f519df72e64f4e12c4edfb80b5aecaa517) docs(dotnet): synchronize generated conformance skill digest - [`a41ad58`](https://github.com/morluto/rea/commit/a41ad585605292170f965a32eaf2eaa30b74a810) chore: integrate current upstream for metadata comparison ### 📊 Changes **8 files changed** (+53 additions, -6 deletions) <details> <summary>View changed files</summary> 📝 `docs/managed-code-analysis.md` (+8 -0) 📝 `docs/product-catalog.json` (+2 -2) 📝 `docs/verification/managed-conformance-manifest.json` (+2 -2) 📝 `skills/reverse-engineer-anything/SKILL.md` (+1 -1) 📝 `src/domain/managedMemberComparison.ts` (+1 -0) 📝 `src/domain/managedMemberComparisonItems.ts` (+2 -0) 📝 `src/generatedMcpToolCatalog.ts` (+1 -1) 📝 `tests/boundary/providers/managed/managedMemberComparison.test.ts` (+36 -0) </details> ### 📄 Description ## Problem `compare-managed-members` compares CIL and signatures but omits the already-observed MethodDef flags and implementation flags. Changing a method from public to private, or adding `Synchronized`, can therefore produce `unchanged` even though the method's metadata changed. Field comparisons already consider their flags. ## Change Add a narrow `metadata` method dimension when either observed flags value differs, before body coverage decisions. Preserve existing method pairing, normalized IL hashes and partial-body handling. Synchronize generated tool schemas/catalog digests and document that this is static metadata evidence. ## Verification Owned PE files were inspected and compared through the public filesystem `compareManagedMemberPaths` workflow. Before this patch both public→private and ordinary→synchronized cases were incorrectly `unchanged`. After it they are `changed` with `metadata`; their IL hashes remain identical. A different-MVID control with the same method flags remains unchanged. - 12 focused domain/path workflow tests pass, including the two filesystem regressions and existing partial-body controls. - All five `npm run check` tasks and `npm run docs:check` pass using Node 24.18.0 and locked dependencies. - Generated catalog semantic comparison contains only four instances of the additive method dimension enum; synchronized digests contain no unrelated catalog changes. - `npm run verify:managed`: 11 source-owned static-format scenarios pass. Optional operator manifest/ILSpy verification is unconfigured and not claimed. This detects observed method metadata changes. It does not execute the PE, prove CLR behavior, or expand the normalized CIL hash contract. AI assistance was used for investigation, implementation, tests, description and independent patch review. Actual filesystem proof and limitations are stated above. ### CI follow-up Hosted Docs Generation exposed a missing generated managed-conformance manifest skill digest after the synchronized catalog digest changed the skill metadata. The manifest generator's change is exactly the skill SHA and enclosing manifest ID; it changes no claims or verification statuses. The required file has been regenerated and exact `npm run docs:check` and all five `npm run check` tasks pass locally. Signed repair head `41d232f519df72e64f4e12c4edfb80b5aecaa517` includes the required generated manifest. Hosted reruns are pending, not claimed green here. The subsequent upstream update introduced a generated manifest conflict. Signed integration head `a41ad585605292170f965a32eaf2eaa30b74a810` includes current upstream `b6c21b1`, preserving its Command Code, skill and incur 0.6.1 updates. The conflict was resolved by regeneration from exact merged source. Fresh locked dependency installation, 12 focused tests, managed static verification, documentation checks, all five source checks and the actual owned-file comparison proof pass on that merged source. Hosted reruns are pending. Final integration head `a41ad585605292170f965a32eaf2eaa30b74a810` completed all 18 hosted checks successfully, including Docs Generation and both package integration lanes. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:15:09 +00:00
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#2168
No description provided.