[GH-ISSUE #31] Complete truthful analyze_function dossiers #19

Open
opened 2026-10-15 18:20:01 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @morluto on GitHub (Jul 12, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/31

Problem

analyze_function advertises comments, incoming references, referenced strings, referenced names, calls, and control-flow successors, but some fields are empty placeholders or incomplete projections. Empty output is ambiguous between “no evidence” and “not implemented.”

Scope

Use Hopper's public Python API to return:

  • Procedure identity, signature, and parsed locals.
  • Bounded pseudocode and optional assembly.
  • Typed callers, callees, and call references.
  • Incoming and outgoing references across segments.
  • Referenced strings and names.
  • Address and inline comments throughout the procedure.
  • Basic blocks with real successor addresses.
  • Explicit capability metadata for anything unavailable.

Acceptance criteria

  • No field fabricates an empty result for an unsupported capability.
  • Every bounded collection reports total, returned, truncated, and continuation metadata.
  • Real-Hopper fixtures prove non-empty reference, string, call-edge, comment, and CFG-successor cases.
  • Unit fixtures exercise malformed and unavailable boundary values.

Roadmap expansion

Child work

Completion requires independent pseudocode, assembly, and collection continuations; typed caller/callee identities; procedure-wide comments; incoming/outgoing references; referenced strings/names; real CFG successors; strict parsing; and exact live-fixture evidence under #25.

Originally created by @morluto on GitHub (Jul 12, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/31 ## Problem `analyze_function` advertises comments, incoming references, referenced strings, referenced names, calls, and control-flow successors, but some fields are empty placeholders or incomplete projections. Empty output is ambiguous between “no evidence” and “not implemented.” ## Scope Use Hopper's public Python API to return: - Procedure identity, signature, and parsed locals. - Bounded pseudocode and optional assembly. - Typed callers, callees, and call references. - Incoming and outgoing references across segments. - Referenced strings and names. - Address and inline comments throughout the procedure. - Basic blocks with real successor addresses. - Explicit capability metadata for anything unavailable. ## Acceptance criteria - No field fabricates an empty result for an unsupported capability. - Every bounded collection reports total, returned, truncated, and continuation metadata. - Real-Hopper fixtures prove non-empty reference, string, call-edge, comment, and CFG-successor cases. - Unit fixtures exercise malformed and unavailable boundary values. ## Roadmap expansion ### Child work - [ ] #54 Completion requires independent pseudocode, assembly, and collection continuations; typed caller/callee identities; procedure-wide comments; incoming/outgoing references; referenced strings/names; real CFG successors; strict parsing; and exact live-fixture evidence under #25.
Author
Owner

@morluto commented on GitHub (Jul 17, 2026):

The implementation is no longer placeholder-based: analyze_function has independently bounded pseudocode, assembly and collections; typed identities; procedure-wide comments; references; strings/names; real CFG successors; and explicit limitations. Keep this open only for exact live-Hopper conformance proof coordinated with #54, then close it.

<!-- gh-comment-id:5001697594 --> @morluto commented on GitHub (Jul 17, 2026): The implementation is no longer placeholder-based: analyze_function has independently bounded pseudocode, assembly and collections; typed identities; procedure-wide comments; references; strings/names; real CFG successors; and explicit limitations. Keep this open only for exact live-Hopper conformance proof coordinated with #54, then close it.
Author
Owner

@morluto commented on GitHub (Jul 20, 2026):

Split into focused child issues:

These replace the broad remaining scope in this issue. Closing this parent can happen once all children are closed.

<!-- gh-comment-id:5023382169 --> @morluto commented on GitHub (Jul 20, 2026): Split into focused child issues: - [ ] #341 These replace the broad remaining scope in this issue. Closing this parent can happen once all children are closed.
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#19
No description provided.