# LinkedIn Text Ads test handoff

Complete this file before opening Campaign Manager. Keep Unknown when evidence does not exist.

## How to complete the calculated fields

Use the [browser workspace](https://maestrogtm.com/linkedin-text-ads/#text-ad-workspace) for the decision, count receipts, readiness reason, revision, fingerprint and importable JSON. The workspace preserves the text you supply and never truncates it.

If you need to validate a record outside the page, use the [exact record schema](https://maestrogtm.com/resources/linkedin-text-ads/text-ad-record.schema.json) and [decision contract](https://maestrogtm.com/resources/linkedin-text-ads/text-ad-contract.json). The format reason codes are `FIT-OBJECTIVE`, `FIT-DESKTOP`, `FIT-COMPACT`, `FIT-MISSING-OFFER`, `FIT-MISSING-BUYER`, `FIT-MISSING-OBJECTIVE`, `FIT-DESKTOP-UNKNOWN`, `FIT-COMPACT-UNKNOWN` and `FIT-USE`. Check them in that order. Compact-message false returns Another format with `FIT-COMPACT`; compact-message unknown returns Hold with `FIT-COMPACT-UNKNOWN` after the earlier checks pass. The readiness sequence is claims, image, destination, audience, permission, learning goal, bid plan, spend ceiling, conversion, stop rule and owner. A complete local record returns `READY-LOCAL-PASS`; a 501–2,000-character URL returns `READY-DESTINATION-NATIVE`; matching native evidence returns `READY-NATIVE`.

Hold and Another format have zero copy variants. An incomplete Draft may leave claims, stop conditions, sources and variants empty. Leave open questions empty when there are none. Open requests must match the evaluator exactly and may also be empty; do not add a native-validation request to Hold or Another format.

The fingerprint is SHA-256 over UTF-8 JSON for `{"contract_version": record.contract_version, "inputs": record.inputs}` after sorting every object key, removing insignificant whitespace and preserving array order. The local review binding records which revision and fingerprint the five review predicates describe. Native approval is separate and belongs under **Native validation**.

For a complete Use record with three supported routes, semantic evaluation can be true. If all five local predicates pass, bind this revision and fingerprint even when handoff readiness is Draft or Launch Hold. Incomplete Use, Hold and Another format use semantic evaluation false, final verdict false and null local binding fields. Keep the other four predicate values truthful.

Portable Markdown uses the canonical renderer in the build prompt. Its blocks start with exact level-one headings. Reason is `code: reason` plus the next action. Readiness is `status — code: reason`. Variants starts with `N route(s) in this record.` and uses the exact route lines; zero variants is `0 routes in this record.` Test handoff and the final fenced record use two-space-indented JSON. Empty questions, requests and sources are `None`. Review includes `Fingerprint: ` and `Final verdict: ` with the lowercase JSON boolean. Alternative bullets, tables and heading levels do not import.

If you do not have the browser workspace or cannot calculate one of these values, write `Unknown` and keep the handoff in Draft. Do not invent a reason code, fingerprint or approval.

## Decision

- Offer:
- Buyer:
- Objective: `brand_awareness | website_visits | engagement | website_conversions | other | unknown`
- Desktop audience fit: `true | false | unknown`
- Compact message fit: `true | false | unknown`
- Format decision: `Use | Hold | Another format`
- Reason code:
- Reason:
- Next action:

## Approved claims

| Claim ID | Verbatim approved text | Source reference | Permission |
| --- | --- | --- | --- |
| CLM-1 |  |  | `approved | denied | unknown` |

## Sources

| Source ID | Reference | Captured at | SHA-256 or locator | Permitted use |
| --- | --- | --- | --- | --- |
| SRC-1 |  |  |  |  |

## Image receipt

- Asset ID:
- Declared MIME:
- Sniffed MIME:
- Full decode valid: `true | false | unknown`
- Decoded width:
- Decoded height:
- Raw bytes:
- SHA-256:
- Image check: `Pass | Fail | Unknown`

## Copy variants

### Variant 1

- Variant ID:
- Route label:
- Headline:
- Headline code points / UTF-16 / enforced:
- Description:
- Description code points / UTF-16 / enforced:
- Claim IDs:
- Semantic support: `supported | unsupported | needs_review`

### Variant 2

- Variant ID:
- Route label:
- Headline:
- Headline code points / UTF-16 / enforced:
- Description:
- Description code points / UTF-16 / enforced:
- Claim IDs:
- Semantic support: `supported | unsupported | needs_review`

### Variant 3

- Variant ID:
- Route label:
- Headline:
- Headline code points / UTF-16 / enforced:
- Description:
- Description code points / UTF-16 / enforced:
- Claim IDs:
- Semantic support: `supported | unsupported | needs_review`

## Bounded test

- Audience:
- Audience permission: `confirmed | denied | unknown`
- Destination URL:
- Destination local check: `Pass | Native validation required | Fail | Unknown`
- Learning goal:
- Bid basis: `CPC | CPM | unknown`
- Bid-basis reason:
- Spend ceiling amount:
- Currency:
- Period:
- Conversion definition:
- Owner:

## Stop conditions

| Condition ID | Metric | Operator | Threshold | Window | Action |
| --- | --- | --- | --- | --- | --- |
| STOP-1 |  |  |  |  |  |

## Outcome evidence

| Layer | State | Value | Evidence reference |
| --- | --- | --- | --- |
| Delivery | `unknown` |  |  |
| Click | `unknown` |  |  |
| Site action | `unknown` |  |  |
| CRM acceptance | `unknown` |  |  |
| Commercial outcome | `unknown` |  |  |

## Native validation

- State: `unknown | pending | verified | denied`
- Target account reference:
- Campaign/creative reference:
- Evidence reference:
- Approved revision:
- Approved fingerprint:

## Readiness

- Handoff readiness: `Draft | Launch Hold | Launch Ready`
- Reason code:
- Reason:
- Open questions:
- Open request IDs:

## Review

- Revision:
- Fingerprint:
- Locally approved revision:
- Locally reviewed fingerprint:
- Shape: `true | false`
- Semantic evaluation: `true | false`
- Readable output: `true | false`
- Source traceability: `true | false`
- Limit checks: `true | false`
- Final verdict: `true | false`
- Reviewer:
- Reviewed at:

Final verdict is true only when all five review checks are true and the local approved revision and reviewed fingerprint match this record. Launch Ready also requires the separate native receipt above to match this record.
