# KRB empty image prop repair existing-assets v4

This supersedes v3 after the Admissions run showed only the hero applied.

## What failed in v3

The v3 report shows the hero had `runtimeElementId: ""`. Because Code Lab returned blank runtime IDs, v3's “already used node” tracking accidentally treated every later blank-ID component as already used after the hero. That made all CTA / Two Column / Gateway CTA rows report `availableCandidates: 0`.

There may also be a runtime prop-label mismatch for non-hero component image props. v4 handles that as well.

## v4 changes

- Uses an internal traversal UID instead of runtime element ID for used-node tracking, so blank runtime IDs are safe.
- Keeps exact ID matching when runtime IDs are available.
- Falls back to text context and ordered matching when IDs are blank.
- If the expected prop ID/path does not match at runtime, falls back to the component's single image-shaped prop.
- Reports both `matchMode` and `propMatchMode` for each proposed/applied row.
- Still uses the same 50 reviewed existing-asset targets only.
- Still defaults to `dryRun: true` and `runMode: 'current-page'`.
- Still validates that image props are empty before write.

## File

- `/Users/iggy/.hermes/profiles/ignite_team/outbound/krb-empty-image-prop-repair-existing-assets-v4.js`
