Skip to content

Generate scalar writer helper execution from native ExifTool rules - #763

Merged
swackhamer merged 3 commits into
refactor/tag-machineryfrom
codex/writevalue-compiler-20260913
Sep 14, 2026
Merged

Generate scalar writer helper execution from native ExifTool rules#763
swackhamer merged 3 commits into
refactor/tag-machineryfrom
codex/writevalue-compiler-20260913

Conversation

@swackhamer

@swackhamer swackhamer commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

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:

  • 49 focused Python tests pass without skips; this includes native-source authentication, committed artifact freshness, configuration isolation, and compiled Rust/native comparison.
  • Six Rust scalar unit tests, formatting, diff checks, and required all-features Clippy pass.
  • Compiled Rust matches 512 native helper cases on canonical source and each of two copied-source changes. Earlier UTF8 storage mismatches were corrected and reverified; the helper-local count is separately checked against the Python source reference.
  • Independent review confirmed an unsupported CheckValue source change fails the committed-artifact freshness test.
  • Official 34-artifact regeneration passed (339.975s). All committed artifacts are unchanged when the expression ledger uses the canonical relative library path. The first full Python run reached 900 tests and failed two synthetic regeneration controls that did not recognize the new producer; all five repaired controls now pass, including its failure propagation. The repaired head passed all 900 Python tests with zero skips (530.665s), the full workspace/all-features Rust suite (6,030 passed, 125 ignored, zero failures; 144.879s), formatting, native processor checks, Clippy and diff checks. Ignored Rust tests remain unexercised. Hosted merge checks remain required.

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.

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.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-14T02:35:43.688500Z b7b5fae New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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 = ''; }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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.
@swackhamer
swackhamer merged commit 5aca29b into refactor/tag-machinery Sep 14, 2026
6 checks passed
@swackhamer
swackhamer deleted the codex/writevalue-compiler-20260913 branch September 14, 2026 02:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant