# LinkedIn ad file handoff

## Decision: Ready for native checks

Technical state: `LOCAL_READY`  
Record: `maestro-linkedin-horizontal-2026-09-28`  
Owner: Paid media operator  
Next action: Upload this exact asset in Campaign Manager, inspect the chosen horizontal placement and save dated evidence.

## Asset checked

- Format / placement: `single_image` / `horizontal`
- File: `maestro-worked-example.png`
- SHA-256: `a60faf2d0f8160e4a1b56c806b39855a1f24509fb8d69cb78f87bf4edf6e445b`
- Detected MIME / bytes: `image/png` / 71122

## Rule source

- URL: https://business.linkedin.com/advertise/ads/sponsored-content/single-image-ads-specs
- Observed: 2026-09-28
- Captured text SHA-256: `73f2d9b336416559ff7a8bf8a80cfc4ec31bd8e28926ef41ef89daa2d809a3d7`

## Local checks

| Check | Result | Expected | Supplied |
| --- | --- | --- | --- |
| File type | Pass | `["image/jpeg","image/png","image/gif"]` | `"image/png"` |
| File size | Pass | `"<= 5000000 bytes"` | `71122` |
| Width | Pass | `[640,7680]` | `1200` |
| Height | Pass | `[360,4320]` | `628` |

## Recommendations

- **Recommended canvas:** Matches; expected `[1200,628]`, supplied `[1200,628]`.

## Open requests

### req-native-campaign_manager_upload_and_preview
Owner: Paid media operator  
Field: `native_checks.campaign_manager_upload_and_preview`  
Reason: The local file check cannot establish this native or source-application property.  
Expected: `"Dated observed_pass bound to current asset SHA-256 with saved evidence"`  
Supplied: `{"check_id":"campaign_manager_upload_and_preview","label":"Campaign Manager upload and placement preview","state":"not_checked","owner":"Paid media operator","asset_sha256":"a60faf2d0f8160e4a1b56c806b39855a1f24509fb8d69cb78f87bf4edf6e445b","observed_at":null,"evidence_location":null,"open_request":"Upload this exact asset in Campaign Manager, inspect the chosen horizontal placement and save dated evidence."}`  
Next: Upload this exact asset in Campaign Manager, inspect the chosen horizontal placement and save dated evidence.

### req-native-copyright_permission
Owner: Creative owner  
Field: `native_checks.copyright_permission`  
Reason: The local file check cannot establish this native or source-application property.  
Expected: `"Dated observed_pass bound to current asset SHA-256 with saved evidence"`  
Supplied: `{"check_id":"copyright_permission","label":"Copyright and usage permission","state":"not_checked","owner":"Creative owner","asset_sha256":"a60faf2d0f8160e4a1b56c806b39855a1f24509fb8d69cb78f87bf4edf6e445b","observed_at":null,"evidence_location":null,"open_request":"Confirm usage permission for this exact final asset and save the approval reference."}`  
Next: Confirm usage permission for this exact final asset and save the approval reference.


## Native checks

- `campaign_manager_upload_and_preview`: **not_checked**. Owner: Paid media operator. Evidence: Not attached. Request: Upload this exact asset in Campaign Manager, inspect the chosen horizontal placement and save dated evidence.
- `copyright_permission`: **not_checked**. Owner: Creative owner. Evidence: Not attached. Request: Confirm usage permission for this exact final asset and save the approval reference.

## Evidence boundary

`LOCAL_READY` means the decoded file fits every local requirement encoded for the selected supported format and source version. It does not mean LinkedIn approval, copyright clearance, delivery or performance.
