Shaduf.Research preview
Open-Source Marketing Agents & Harnesses/Planned campaign-link offline fixture

Campaign link QA · 23 Oct 2026 · executed fictional offline fixture

Check the planned campaign link before sending

For one approved direct HTTPS destination, a local URL-string check caught the deliberate copy and contract errors in this fictional fixture: 17 of 17 expected outcomes matched. Three approved variants passed; 14 mistakes were flagged. This says nothing about a live link, sent message, analytics event or signup. You do not need a shortener or analytics installation merely to compare a planned URL with an approval record.

The approval contract

The fictional approved URL is https://example.invalid/guide?utm_source=newsletter&utm_medium=email&utm_campaign=autumn-guide. The checker requires the parsed HTTPS origin https://example.invalid, parsed path /guide, and exactly one each of utm_source=newsletter, utm_medium=email and utm_campaign=autumn-guide. It allows no other query key, fragment or embedded URL username/password. .invalid is fictional; the script made no network request.

Four-stage evidence ladder: planned string checked locally; destination, sent link and outcomes remain unobserved.
The local result stops at the planned link string. Each later receipt is a different check.

Expected versus observed

Every row is fictional. Unless noted, the destination and all three approved UTM pairs are present. [] means no diagnostic. The table abbreviates inputs; the full fixture cases retain every exact URL and expected list.

CaseInput differenceExpectedObserved
approvedExact approved spelling[][]
percent_encoded_pass%75tm_source=%6Eewsletter; campaign autumn%2Dguide[][]
normalized_origin_passHost EXAMPLE.invalid:443[][]
mixed_case_nameUTM_medium instead of utm_mediummissing:utm_medium; unapproved_parameter:UTM_mediumSame
missing_campaignNo utm_campaignmissing:utm_campaignSame
empty_sourceutm_source=empty:utm_source; wrong_value:utm_sourceSame
duplicate_sameTwo identical utm_source pairsduplicate:utm_sourceSame
duplicate_conflictutm_source=newsletter and utm_source=printduplicate:utm_source; conflicting:utm_source; wrong_value:utm_sourceSame
wrong_originHost elsewhere.invalidorigin_mismatchSame
wrong_pathPath /otherpath_mismatchSame
not_httpsScheme http:not_https; origin_mismatchSame
embedded_credentialsFictional reader:secret@ userinfoembedded_credentialsSame
fragment#sectionfragment_not_approvedSame
empty_fragmentBare trailing #fragment_not_approvedSame
email_like_extraExtra email=ada%40example.invalidunapproved_parameter:email; email_like_value:emailSame
encoded_path_not_equalPath /%67uidepath_mismatchSame
relative_urlNo scheme or hostinvalid_absolute_urlSame

No unexpected oracle mismatches occurred. The encoded query key/value passed after form-style decoding. The uppercase query name did not become lowercase. An uppercase host with default :443 passed the parsed-origin check; the encoded path did not pass the parsed-path check. This is a parsed-component contract, not a raw-byte identity test. The fixture has no independent oracle for business approval: a wrong contract or an untested malformed URL class could still pass.

Reproduce the local check

Download the self-contained Node script and the fictional cases into one directory. With Node v24.20.0, the command used for this fixture is:

node campaign-link-offline-fixture.mjs campaign-link-fixture-cases.json

Compare with the recorded stdout. The checker reads local JSON with built-in node:fs, compares observed lists with node:assert/strict, and uses the global URL/URLSearchParams APIs. It exits nonzero if an oracle differs; this execution exited 0. There is no fetch, socket, package install or credential use in the script. Cross-runtime equivalence was not tested.

It compares parsed URL.origin and URL.pathname and decoded URLSearchParams.getAll(name) values. Query order is immaterial. Names and values are case-sensitive; the checker does not trim, lowercase or Unicode-normalize them. Duplicate required keys fail even when their values agree. The email-like diagnostic uses only a whole-value local@dotted-domain-like pattern; it is not a privacy scanner. Node URL API documentation and the WHATWG URL Standard explain the parser model; the observed results above come from the executed fixture, not documentation inference.

What this check cannot establish

StageEvidence hereStill unobserved
Planned string17 fictional URLs compared locally with one fictional approval contract.No authorized production URL. The email-like pattern can miss encoded or obfuscated identifiers, tokens, path data and other sensitive values.
Live destinationNone.DNS, TLS, HTTP status, redirects, landing content and UTM survival.
Sent messageNone.Exact sent/preview link bytes, sender rewriting, tracking, delivery and human clicks.
Analytics and signupNone.Pageviews, consent or ad-block effects, attribution, on-site events, authoritative account creation and causal effect.

If a permissioned test message and destination become available, compare the exact sent link with the approved record, then inspect the destination response and redirects separately. Analytics and confirmed signup each need their own evidence. A passing pre-send string check cannot collapse those stages.

Search published pools, pages, reports, and evidence.