Generate scalar writer helper execution from native ExifTool rules - #763
Conversation
Execute captured CheckValue and WriteValue operands in inactive shared Rust. Regeneration owns both artifacts; fresh native CI checks reject stale committed rules and ledger. Isolate native capture from ambient ExifTool config. Focused native Python, compiled Rust replay, six scalar unit tests and required Clippy pass; full regeneration and full Python suite pending.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bc487c6952
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # Table facts are a property of the selected native tree, never of the | ||
| # account running the dump. ExifTool loads $EXIFTOOL_HOME/.ExifTool_config | ||
| # during this require unless its configFile global is the empty string. | ||
| BEGIN { no warnings 'once'; $Image::ExifTool::configFile = ''; } |
There was a problem hiding this comment.
Clear Perl preload variables before starting capture
When PERL5OPT preloads Image::ExifTool (with PERL5LIB pointing at an installation), the module and its .ExifTool_config execute before this script's BEGIN, so assigning configFile here cannot undo the mutations and the subsequent require is a no-op. Using the new hostile fixture with PERL5OPT=-MImage::ExifTool made dump_tables.pl print HOSTILE_CONFIG_EXECUTED and emit exiftool_version: HOSTILE_CONFIG; the oracle scripts have the same bypass, so regeneration and verification can agree on contaminated facts. Invoke these instruments through an environment that clears PERL5OPT, PERL5LIB, and PERLLIB before Perl starts.
AGENTS.md reference: AGENTS.md:L102-L114
Useful? React with 👍 / 👎.
Teach the synthetic leaf harness the two declared helper outputs and check invocation order and failure propagation. Five shell-control tests and required Clippy pass. Preserve the initial 900-test full-suite failure and queue its retry; no production code or generated operands changed.
ExifTool helper changes must replace old validation and serialization rules when regenerated. Compile the captured CheckValue and WriteValue scalar branches into operands for a shared, inactive Rust executor, preserving undefined/byte/UTF8 state, character lengths, padding and truncation. Normal regeneration owns both new artifacts; the native CI suite compares committed rules and their ledger with a fresh pinned dump. Unsupported source emits no admitted rule and records its reason.
Disable ambient ExifTool configuration in the native capture and oracle entry points so a user's local settings cannot become generated release behavior. Update the progress record with PR #762's merged state and the remaining writer work.
Validation:
No public generated writer is activated and no manual tag rule is retired here. Native helper composition, CharsetEXIF encoding, tag routing, numeric packing, carrier write/read-back, and the selected historical releases' generated OxiDex conformance remain unfinished.