Erich Eisenhart, signal architect

Live is not
the same as true.True is not
the same as shared.

Tap an underlined phrase to stretch the sentence.

When a customer buys or signs up, a company's website reports it to a dozen tools: ad platforms, analytics, email, the warehouse. Each one , some ,S1S2S3 and the ad platforms move real budget on .S4S5 I make those numbers , , and , as a shared source of truth every team reads from. This allows the company to move faster, spend smarter, and trust its own signal.

Contents

Each part opens in place. None of the toys run on a client's data, and every value is open to read.

Convergence

Every team was right; that was the problem

diagram · toy

It happens in almost every stack. A pixel sends dozens of different event names, every number it reports is firing, and a known bug still sits for months, because "is a purchase coming through?" has three correct answers at once.

Before: three names for one action, and no map between them

The engineer sayscheckout_complete
The client saysCompleted Purchase
The marketer sayspurchases

After: one shared row, read three ways

  • Marketing view: Definition
  • Engineering view: Pattern
  • Signal view: Receipt, Observed, Veracity
checkout_complete · Completed purchase · synthetic, at Fernhollow, a fictional brand · as of Oct 12, 2026
  1. DefinitionWhat it means

    Completed purchase: Someone completes a purchase and reaches the order-confirmed view. A KPI, reported to revenue.

  2. uncheckedsame spec
  3. PatternWhere it fires

    ^/order/confirmed → checkout_complete

    trigger
    page load
  4. livesignal
  5. Receipt LiveWhat it emitted
    fired
    once, Oct 12
    fields
    6 of 6 seen
    the payload
    {
      "event_name": "checkout_complete",
      "page_url": "/order/confirmed",
      "session_id": "fh-sess-0193",
      "order_id": "FH-10482",
      "value": 62,
      "currency": "USD"
    }

    synthetic · 142 bytes · fnv1a:41b64e8e · in the Data fold

  6. divergedsame lineage
  7. ObservedWhere it landed, and how much
    the shared record
    today
    its own copy
    35 days behind
    count
    1,240 of 1,270 expected
    the queries
    -- where checkout_complete landed
    select 'the shared record' as destination,
           max(event_date) as last_landed
    from processed.events
    where event_name = 'checkout_complete'
    union all
    select 'its own copy', max(event_date)
    from copies.checkout_complete;
    destinationlast_landedbehind
    the shared record2026-10-120 days
    its own copy2026-09-0735 days
    -- this window's count, against the 28 days before
    select count(*) as events
    from processed.events
    where event_name = 'checkout_complete'
      and event_date between '2026-09-14' and '2026-10-11';
    eventsexpectedagainst
    1,2401,270the 28 days before

    Not checked yet: volume waits until it lands everywhere.

  8. uncheckedindependent
  9. Veracity VerifiedWhat an outside record says
    the order record
    not compared yet
    catches
    dropped, doubled and inflated orders, matched by order ID
    the query
    -- ours against the order record, the same window
    select 'ours' as side, count(*) as orders,
           sum(value) as revenue
    from processed.events
    where event_name = 'checkout_complete'
      and event_date between '2026-09-14' and '2026-10-11'
    union all
    select 'the order record', count(*), sum(net)
    from orders.paid
    where paid_on between '2026-09-14' and '2026-10-11';

    Not run yet. Within 10%, this seam reads verified; outside it, diverged.

Drawn by Seamwork, from its model. Every seam is computed; nobody types one.

The fix isn't more monitoring. It's a shared source of truth: one row per real business event, so the same event means the same thing to everyone who touches it. It sits on the data you already have, replaces nothing, and becomes the spec every future check runs against. A tracking plan says what to collect and why.S6 The row adds the third view: whether each event is live and true, checked against a second source.

Try it

One purchase, five definitions

About 1,000 orders a week at $60, over twelve weeks. Each row is a tool and each box a choice made when it was set up; the order record is the second source.

how the toy works, and what it leaves out

Vocabulary

Four questions, asked in order

3 checks · 1 choice

1LiveS15

Is it arriving?

Catches
A tag that stopped firing, a server that's down, a certificate about to expire.
Misses
Everything that arrives looking healthy.
Needs
A monitor and a threshold.

2ObservedS16

What is it doing?

Catches
Changes in shape: event mix, match qualityS18, parameter coverage, volume by source.
Misses
Whether any of it is right. It has nothing to compare with.
Needs
Logs, event diagnostics, dashboards, and someone reading them.

3VerifiedS17

Should anyone believe it?

Catches
Doubles, silent drops, consent fired early, lost click IDs, inflated values: anything that arrives healthy and isn't true.
Misses
Little, as long as the second source is truly independent.
Needs
A second source that didn't come from the signalS19: order records, the consent log, the wire itself.

The first three are checks. The fourth is a choice.

4Intent

Is it the signal we meant to send?

Verified asks whether the signal matches what happened. Intent asks whether what happened is the thing worth sending.

Catches
A true signal pointed at the wrong goal: optimizing a proxy nobody chose, spend trained toward volume when the business wanted lasting valueS33S34, a number that is accurate and beside the point.
Misses
Anything the stated goal itself gets wrong. This rung is only as good as the value written down.
Needs
A goal written down and agreed, independent of the signal, that the signal can be measured against. The test: if this signal is optimized, does it move us toward the value we wrote down?

Only someone who holds the goal can answer this one. The question is old: a year after Shannon set meaning asideS32, Weaver named it the effectiveness problemS35.

both directions: consent and intent

Consent and intent are the same move, made in opposite directions. Consent is a person declaring, at first touch, the terms under which their data may be used. Intent is a sender, more and more often an agent, declaring what a signal is for. Both are a declared scope at a receptor, and neither can be derived from the data: they have to be read.

Why now: as we hand more agency to language models and their tools, more signals arrive declared by agents. Reading that declaration correctly is the consent banner's question, asked from the other side.

The same four statesConsent: a person declaresIntent: a sender declares
Declared and honoredA choice made, and tags fire only as chosenA purpose stated, and served as stated
Declared and constrainedYes to some uses, not others; what's left out is modeled, not collectedA purpose served within limits: a scoped set of tools, not the whole surface
Declined or blockedA refusal, and nothing firesA purpose refused, and nothing is served
MiscalibratedThe choice on record and the tags that fire disagreeThe purpose declared and what happens disagree

The fourth state is where both earn their existence: the gap between what was declared and what actually happened.

Signal

Every light is green

diagram · toy

One day of a store's purchases moves from browser to bidder, and every handoff could be checked against a second source. In most stacks, nobody does.

Browserorder 10432 placed
H1liveuncheckedat launch, then rarely
Tag managerpurchase fired
H2liveuncheckedrarely
Server containerevent_id, value, consent
H3liveuncheckedrarely
Ad platformconversion received
H4uncheckablenot visible
Bidderlearns who to buy
Try it

The faults I find in real stacks

Six faults, three readouts, one verdict.

Live

Is it arriving?

Observed

What is it doing?

Verified

Should anyone believe it?

CheckStreamAgainstState

how the toy works, and what it leaves out

Fidelity

The bidder learns from whatever arrives

toy · 6 faults

Ad platforms never see your business, only the signal, and they move budget toward whatever it says worked.S4S5 These six faults are the ones I check first.

Try it

Train the bidder on fiction

Three channels, one budget, six faults. Break one and watch where the money goes.consent stateevent integrityidentityclick parameterspayloadvalue

The bidder splits your budget by the returns it's shown. The dot is what each channel reports; the tick is what it actually returned.

Return on ad spend: reported against true

Where the budget goes

reported by the signaltrue returnwhere the bidder puts itwhat a true signal would fund
how the toy works, and what it leaves out

Field notes

What it looks like in real stacks

8 stories · toy

The same scene, over and over: every dashboard green and the number wrong, or five dashboards and five numbers. Every note is a composite, with client names and numbers removed. The patterns are what carry over to your stack, whatever it is.

Try it

The consent race

1,000 visitors, and 30% of them say no to tracking. Each square is ten of the people who said no; red ones were tracked anyway.

Move when the tags fire and when the consent default lands, then count the people who said no and were tracked anyway.

how the toy works, and what it leaves out

Recently

A multi-client measurement platform

Liveness said healthy. The signal wasn't.

fidelityverification

I own the pixel and server-side collection layer across many client sites. A fidelity audit found conversion events firing where they shouldn't and missing where they should, on pipelines a liveness check had passed as healthy. The gap became a precise fix list, then a repeatable QA method with a path to spec-driven synthetic tests.

A consumer brand

IT said there was no pixel. There was.

verificationconvergence

The team had been told no ad platform pixel existed. DevTools showed one firing on every page with a 200 response, owned by an account nobody on the current team controlled. It had fallen between teams. Two instruments at two levels of the stack disagreed, and the disagreement was the finding.

Earlier, through agencies

A consumer goods brand portfolio

Server-side capture for ecommerce storefronts

fidelityverification

A conversions API with redundant server-side capture. Discrepancies diagnosed in DevTools across payload delivery, cookie persistence and firing order.

server-side tagging, conversions API

An energy utility

Measurement for program sign-up funnels

fidelityconvergence

Tracking across every paid platform, one UTM taxonomy spanning display, search, social, audio and video, and conversion mapping from click to program outcome.

one taxonomy, every channel

A financial institution

One trusted conversion count

verificationconvergence

Analytics and tag management for multi-step applications, reconciled across every ad platform the team bought on.

every platform, one count

A multi-location healthcare group

Warehouse reporting across locations

convergence

Analytics events into a warehouse, with SQL for unified reporting and location-specific form triggers on top of CRM journeys.

one report, every location

A B2B services company

A database that had stopped listening

fidelity

Most of the contact list had gone quiet. Suppression, a behavioral scoring model, automated workflows, and offline conversions sent back to the ad platforms by webhook.

suppress, score, send back

Verification

Find the second source

toy · 6 claims

A check only counts if the thing doing the checking didn't come from the thing being checked.S19 That one rule catches more bad dashboards than any tool I know. Six claims, six checks. Which ones verify anything?

Try it

Counts, or the same source in a costume?

Answer a card and its tile turns.

Pick one per card. The answer and my reasoning land in the card.

Models

Every model stands on the same floor

toy · 5 models

Attribution, mix models and incrementality tests answer different questions, and every one of them is scored against a count of conversionsS23S24S25. When that count is wrong, every answer inherits the error, and none of them checks it.

Try it

Which answers move?

Five models, one floor. Pick a defect in the floor and see which answers move.single-touchmulti-touchShapley valuemix modelingincrementality

Five rungs from my teaching map, graded for how hard each kind of signal defect hits them.

The floor: the conversion signal, the only input every rung reads

where the grades come from

The grades are copied from the map's own spec, extracted 2026-09-22. They are judgments, marked as such there, not measurements. Incrementality is graded for randomized holdouts; geo experiments read the signal differentlyS25S26, and the map grades them separately.

About

Hi, I'm Erich

portrait · at a glance · toolbox
Erich Eisenhart, smiling in sunglasses, with pines and mountains behind him

I'm a signal architect in Tucson, Arizona. I own the tracking, data flows and integrations that growth depends on: conversion tracking across web and mobile, server-side conversion APIs, event taxonomy, consent, and the observability and alerting that surface dropped events before they distort spend, not after. And the part no job description covers: getting the teams who build the data and the teams who spend against it to mean the same thing by it.

I came to this sideways. My degree is in earth, society and environmental sustainability, and before analytics I studied landscape architecture, a field built on getting ecologists, engineers and clients to agree on one plan, and ran greenhouse and irrigation build-outs.S27 The discipline travels: reading a noisy system and making it trustworthy for everyone who has to act on it. The material is marketing data today. The work is the same anywhere a signal has to stay true, and mean the same thing, wherever it lands.

I build alongside AI models every day, and I check them the way I check pixels. Plausible is not the same as true.

At a glance

works in
GTM, server-side, CAPI, consent, GA4, BigQuery
works between
engineering, data and growth
doing this since
2019
now
Marketing Technology & Operations Manager at Mixbook
recently
DTC brands and a multi-client measurement platform

Tagging and signal

GTM, client and serverStapeElevarMeta CAPIEnhanced ConversionsTikTok Events APIReddit CAPIConsent Mode v2KetchDevTools and HAR

Shared definitions

BigQuerySQLSegmentHightouch

Data and platforms

GA4JavaScriptAWSGCPNorthbeamShopify PlusHubSpotKlaviyoSalesforce

Certifications

  • Server-side tagging with Stape, Stape AcademyS282026
  • Sales Hub Software Certification, HubSpot AcademyS292026
  • Data Integrations Certification, HubSpot AcademyS302026
  • Marketing Hub Software Certification, HubSpot AcademyS292025
  • Postgraduate Certificate, Digital Marketing, Digital Marketing Institute2021
  • BS, Earth, Society and Environmental Sustainability, University of Illinois Urbana-ChampaignS312015

Beyond the desk

a Triumph Scramblerclimbing and canyoneeringsalsacooking over fire

Source

How this page is built

key · data · spec · 35 sources

The way I build client maps: every handoff marked with how it's checked, every toy on labelled data from a stamped payload the page re-hashes as it loads. Turn on Sources, at the top, and every claim shows where it comes from. One surface for every kind of reader, with no switch between them.

Key

What each mark means

Reading devices

a part, a toy or a story: opens in place
worda phrase that stretches: more of the sentence, in place
+a footnote: how it works, and what it leaves out
Try it: a toy on labelled data

A pass: a reading, by what it earns

livelive: it fired where the spec says; it proves arrival, not truth, so one handoff can read live and unchecked at once
observedobserved: compared against its own lineage, within tolerance; consistent, not proven true
verifiedverified: compared against an independent record, within tolerance
convergedconverged: every tool reads one number, within tolerance; agreement, not proof it's true

A problem: a state, drawn as a line

divergeddiverged: compared, outside tolerance, against a record or across tools
uncheckedunchecked: could be compared; nobody does
uncheckableuncheckable: nothing to compare with

Second sources

inindependent: a real second source
notsame source, wearing a costume

How hard a defect hits a model

Hhigh: changes the answer
Mmedium: bends the answer
Llow: little effect
-not read by this model

Where a claim comes from

Aasserted: my judgment or my own record
Dderived: from an independent source, numbered in the sources
Ccomputed from a stamped payload

In the charts

what the signal reports
the planted true value
what a true signal would fund
within tolerance of the true value
Data

Every value behind the toys

Spec

The spec this page renders from

# SPEC: Signal Quality homepage
spec-version: 9
lens: Is the conversion signal your spend is trained on telling the truth, who checks, and does every team read it the same way?
level: L2
data-mode: synthetic
skin: signal-quality design system, 2026-09-22 zip, third pass; nesting layer 2026-09-24, rounds two to five the same day

## Structure
Most marketing stacks check that the conversion signal arrives, almost none check that it is true or write down what it means, so bidders spend against whatever arrives and every team rebuilds its own version of the number.
test: Without it, a brand reads a green dashboard as a true number and five matching dashboards as a settled one, and a colleague files Erich under tag management instead of the person who owns the signal and the seam between the teams who build it and the teams who spend against it.

## Audiences
- growth-lead | reads-to: R2 | decides: whether their conversion signal is true, and what to check first
- agency-lead | reads-to: R2 | decides: which faults to check first in a client's measurement
- colleague | reads-to: R3 | decides: whether Erich can own the signal end to end and the seam between engineering and marketing
- engineer | reads-to: R3 | decides: whether Erich knows their stack well enough to hand him the pipes
- outsider | reads-to: R1 | decides: whether they understand what Erich does well enough to explain it
- next-context | reads-to: L1 | decides: what the next revision of this page keeps

## Elements
- hero | Display couplet and plain-language lede; six of its phrases stretch in place, each one click from the part that proves it | fate: surface | rank: R0 | move: register-stack | prov: asserted | src: feedback round 2026-09-23
- contents | The folded page: eight parts and the source, each opening in place, with the six toys as a row of gems to collect | fate: surface | rank: R0 | move: nest | prov: asserted | src: nesting round 2026-09-24
- foot | Email with a copy button, LinkedIn, Erich's role at Mixbook, the page in one line | fate: surface | rank: R0 | prov: asserted | src: nesting round 2026-09-24; chat 2026-10-09
- truth | The shared source of truth: three names for one purchase, then its shared row, read three ways across Seamwork's five columns and derived from Seamwork's model between markers (seamwork/scripts/render-public-section.mjs); each signal column answers as a short list of results, with its payload or queries one click down; then the toy | fate: fold | rank: R1 | move: register-stack | prov: asserted | src: field work 2021-2026; chat 2026-10-13; chat 2026-10-14
- chain | Every light is green: the chain and its stream open with the part, the controls one level down | fate: fold | rank: R1 | move: stage-chain | prov: computed | src: payload-green
- ladder | The vocabulary, a part of its own between Convergence and the chain: live, observed, verified, intent | fate: fold | rank: R1 | move: encoded-key | prov: asserted | src: lexicon session 2026-09-22; chat 2026-10-09; chat 2026-10-14
- intent | The fourth rung, above verified: is this the signal we meant to send, checked against a written-down goal, not the data; who can answer it and its lineage in one line; holds the consent/intent duality as its deepest layer | fate: fold | rank: R1 | move: encoded-key | prov: asserted | src: chat 2026-10-09; prune pass 2026-10-14
- consent-intent | Nested inside intent: consent and intent as one primitive declared in opposite directions at a receptor; four states; generalized, no scanner or client internals | fate: fold | rank: R1 | move: nest | prov: asserted | src: chat 2026-10-09
- toy-bidder | Fidelity: the six faults I check first, and where the budget goes | fate: fold | rank: R2 | move: repeated-base | prov: computed | src: payload-bidder
- notes | Field notes as first-hand composites, client names and numbers removed; the consent story open with the part, the rest one row each | fate: fold | rank: R2 | move: repeated-base | prov: asserted | src: first-hand
- toy-race | The consent race | fate: fold | rank: R2 | move: callout-seq | prov: computed | src: payload-race
- toy-source | Find the second source; six of six unlocks a seventh card, and the score can be shared | fate: fold | rank: R2 | move: repeated-base | prov: asserted | src: payload-source
- toy-models | Five models on one floor | fate: fold | rank: R2 | move: encoded-key | prov: asserted | src: payload-models
- toy-converge | Convergence: one purchase, five definitions, one release | fate: fold | rank: R2 | move: repeated-base | prov: computed | src: payload-converge
- about | About: the portrait, at a glance, toolbox, certifications, beyond the desk | fate: fold | rank: R3 | move: register-stack | prov: asserted | src: first-hand
- sources | Sources S1 to S35, each independent of Erich; vendor sources marked | fate: fold | rank: R4 | move: repeated-base | prov: derived | src: second-source review 2026-09-23; lineage sources S32 to S35, chat 2026-10-09; prune pass 2026-10-14
- data | Every payload as a tree, with how it is made, its stamp, and what its toy computes from it; generators re-run from their seeds | fate: fold | rank: R4 | move: register-stack | prov: computed | src: this file
- spec | The structure sentence, this spec and the key | fate: fold | rank: R4 | move: register-stack | prov: computed | src: this file
- phone | Phone number | fate: cut | src: resume 2026-09
- veridity | Veridity, the deeper term | fate: cut | src: lexicon session 2026-09-22
- the-why | The land, the orchard and the wildfire work behind the practice | fate: cut | src: chat 2026-09-22
- axes-7-14 | The agentic axes | fate: cut | src: agentic measurement loop, 2026-05
- links | Links to the blog, the models map and articles; each slot is an HTML comment | fate: cut | src: chat 2026-09-23
- registers | One finding written for three readers, replaced by the row's three views | fate: cut | src: feedback round 2026-09-23
- pillars | The three-pillar strip in the hero | fate: cut | src: feedback round 2026-09-23
- wayfinding | The docked contents, the minimap rail and the floating key | fate: cut | src: nesting round 2026-09-24
- repeats | The hero buttons, the ladder quote, the chain motif, the hiring line under the steps, the second reach line | fate: cut | src: nesting round 2026-09-24
- work | How a project runs | fate: cut | src: chat 2026-10-09
- contact | Get in touch, two paths by email; the email and LinkedIn stay in the foot | fate: cut | src: chat 2026-10-09
- prune | The Convergence stat line and closing quote, the chain caption, the ladder lede, the intent rung's who-answers, held-to and lineage rows (now one line), the three congruence checks, the field note's summary list, the rendered structure sentence (it stays in this spec and the meta description), and the lineage sources no line cites any more | fate: cut | src: prune pass 2026-10-14

## Hops
- H1 | Browser -> Tag manager | seam: unchecked | reads: live | second-source: the network log, from DevTools or a HAR | method: requests fired against events expected, page by page | checked: at launch, then rarely | prov: asserted | src: field work 2021-2026
- H2 | Tag manager -> Server container | seam: unchecked | reads: live | second-source: the server container request log | method: requests received against requests sent | checked: rarely | prov: asserted | src: field work 2021-2026
- H3 | Server container -> Ad platform | seam: unchecked | reads: live | second-source: order records, the consent log and the landing log; the comparison spans H1 to H3 | method: reconcile by order ID, consent choice and click ID | checked: rarely | prov: asserted | src: field work 2021-2026
- H4 | Ad platform -> Bidder | seam: uncheckable | second-source: none exists; the bidder training set is not visible from outside the platform | method: none; keep what enters H4 true | checked: never | prov: asserted | src: field work 2021-2026

## Decisions
- Erich in front, the practice behind | prov: asserted | src: chat 2026-09-22
- No client names or client numbers; every example is synthetic | prov: asserted | src: chat 2026-09-23
- No call to action: Erich is building at Mixbook, and the email and LinkedIn in the foot are how to reach him | prov: asserted | src: chat 2026-10-09
- The practice is the shared source of truth | prov: asserted | src: feedback round 2026-09-23
- Plain words first; toys open from a teaser | prov: asserted | src: feedback round 2026-09-23
- Six axes are a fidelity checklist | prov: asserted | src: chat 2026-09-23
- Outbound links: the source list and LinkedIn only | prov: asserted | src: chat 2026-09-23
- Derived needs an independent source; first-hand is asserted | prov: asserted | src: chat 2026-09-23
- The page arrives folded: the contents are the page, and every part opens in place | prov: asserted | src: chat 2026-09-24
- Never more than two clicks between a reader and a toy; method notes are footnotes | prov: asserted | src: nesting round 2026-09-24
- One grid at every level: a label column and a reading column; figures and toys take the full width | prov: asserted | src: nesting round 2026-09-24
- A caret marks what opens in place; a plus marks a footnote; a dotted underline marks a phrase that stretches | prov: asserted | src: nesting round 2026-09-24
- Where a claim comes from (A, D, C and every pointer) shows only when the reader turns on Sources, a global switch in the site bar | prov: asserted | src: chat 2026-09-24
- Type sits on one hand-picked scale: 11, 12.5, 13.5, 16, 18, 20, 26, 41, 65, display; spacing on 4, 8, 12, 16, 20, 24, 32, 40, 48, 56, 64, 80, 96, 112 | prov: derived | src: Refactoring UI; the design system's 1.6 scale, with 12.5, 18 and 20 added
- Gold is the one accent and it stays scarce: brand, what is open, what you can press | prov: derived | src: the 60-30-10 rule
- Tables and readouts set tabular figures so columns of numbers line up; paragraphs wrap without orphans | prov: asserted | src: round four 2026-09-24
- Play: the path remembers the parts you opened, the six toys are gems to collect, and every win gets a moment | prov: derived | src: Koster, A Theory of Fun; Jonasson and Purho, Juice it or lose it; the goal-gradient effect
- The site bar sticks with the brand and the Sources switch; it steps aside while the reader reads down and returns on the first scroll up, so it never stacks on an open part's header | prov: asserted | src: chat 2026-09-24
- Every closed row says what is inside it | prov: asserted | src: round two 2026-09-24
- The screen is always dark; the paper palette serves print only | prov: asserted | src: chat 2026-10-13
- Every value a toy reads is open to read, next to how it is made and what the toy computes from it; each toy links to its data | prov: asserted | src: chat 2026-09-24
- Every control is at least 24px; no text under 12px on phones; charts scroll sideways on phones rather than shrink | prov: derived | src: WCAG 2.2, 2.5.8 target size
- The rungs name the status of the signal, not a borrowed practice: live, observed, verified; the row's third view is the signal view | prov: asserted | src: chat 2026-10-09
- Erich names himself a signal architect; the discipline transcends marketing. The Mixbook title stays stated as the current role | prov: asserted | src: chat 2026-10-09
- The ladder stands on a lineage, cited as sources S32 to S35: Shannon, Weaver and the applied industry view | prov: asserted | src: chat 2026-10-09; prune pass 2026-10-14
- The lineage cites two primary sources: Shannon's 1948 paper, which brackets meaning out of the engineering problem (S32), and Weaver's 1949 companion essay, which names the technical/semantic/effectiveness levels (S35); intent is Weaver's effectiveness level | prov: asserted | src: chat 2026-10-09
- Weaver source is a confirmed primary text hosted on a university course server; durable enough to cite, not a publisher of record | prov: asserted | src: chat 2026-10-09
- A vendor source is marked vendor and glossed as an industry view, not a neutral one | prov: asserted | src: chat 2026-10-09
- The ladder has a fourth rung, intent, a choice not a check: measured against a stated goal, not an independent data source | prov: asserted | src: chat 2026-10-09
- Intent is one rung, pragmatic and goal-oriented, not split into semantic and pragmatic: verified already owns the semantic question | prov: asserted | src: chat 2026-10-09
- Intent names who can answer it: whoever holds the goal. The telos (horme) is off the page | prov: asserted | src: chat 2026-10-09; prune pass 2026-10-14
- Intent is positioning, vocabulary and lineage, never a computed toy metric: no toy fakes a fourth lamp | prov: asserted | src: chat 2026-10-09
- The fourth rung reads as a turn, not a taller step: a rule and a line set it apart, and it spans the ladder's width | prov: asserted | src: chat 2026-10-09
- The consent/intent duality is canonical and lives nested inside the intent rung, not as a fourth pillar | prov: asserted | src: chat 2026-10-09
- Only the generalized primitive is published: the receptor and the four states. The scanner, brands and client work stay off the site | prov: asserted | src: chat 2026-10-09
- A status is typography, never an object: a problem is a glyph and a word with a bar on its left, whose line carries the state (unchecked dashed, uncheckable dotted, diverged a heavy double; independent solid, the same source dashed), and a pass is a glyph and a word with no bar, so no status reads as a button | prov: asserted | src: chat 2026-10-13, from the birth-and-drift draft; chat 2026-10-14
- A pass is a reading, named by the rung it earns: live (it arrived), observed (it matches its own lineage), verified (an independent record agrees), and across tools, converged; a problem is a state, named by what happened: diverged, unchecked, uncheckable. Agreed is retired: at the top rung it meant verified, and below it it overclaimed. One handoff can carry both, live and unchecked | prov: asserted | src: chat 2026-10-14
- Seamwork's row is Convergence's After, not a part of its own: one purchase in five columns, each in one line of its own language, under the three views it is read by (marketing one, engineering one, the signal three); the separate Seamwork part and its key are retired from the page; the payload and the queries open one click down in their own columns | prov: asserted | src: chat 2026-10-13; chat 2026-10-14
- Seamwork's five columns take five stops of one warm-to-cool desert ramp (terracotta, gold, sand, sage, teal), so the sweep carries the reading order: a rail across the row's top and each heading in its own stop, no fill. Seams stay neutral, and a seam's state sets its line | prov: asserted | src: chat 2026-10-13

## Constraints
- No em-dashes in site copy | prov: derived | src: signalquality-blogpost-create brand rule
- One file, fonts embedded, nothing external on arrival: the portrait loads when About opens, the home-screen icon only when saved | prov: asserted | src: chat 2026-09-24, amending diagram-reasoning C1
- Every toy reads a stamped, labelled payload | prov: derived | src: diagram-reasoning C8
- Veridity stays off the page for now | prov: asserted | src: lexicon session 2026-09-22
- Other companies' internal details stay off the page | prov: asserted | src: chat 2026-09-23
- Scanner internals, their codes and any brand-level findings stay off the page; only the generalized consent/intent primitive is public | prov: asserted | src: chat 2026-10-09

## Open
- Which articles fill the link slots, and when | prov: asserted | src: chat 2026-09-23
- Whether the title, the meta description and the JSON-LD carry signal architect; the eyebrow, About and the share card already do | prov: asserted | src: chat 2026-10-09
- Whether the structure sentence should carry the fourth rung, intent | prov: asserted | src: chat 2026-10-09

## Rejected
- Any switch between reader views | because: one surface serves every reader (C4) | src: diagram-reasoning C4
- Nested text measures | because: they stranded prose | src: chat 2026-09-22
- Agreement as the pillar name | because: agreed named a checked hop, a word since retired for observed and verified | src: chat 2026-09-23; chat 2026-10-14
- One part open at a time | because: readers compare parts, and more should appear as they click | src: chat 2026-09-24
- A mode tag on every toy and example | because: the contents head says it once for all of them, and the data in Source says it per payload | src: chat 2026-09-24
- Docked contents, rail and key | because: the folded page is its own contents; the chrome repeated it | src: nesting round 2026-09-24
- A next-part line at the end of every open part | because: it distracted from the part itself | src: chat 2026-09-24
- The asserted mark always on | because: one mark without the other two confused more than it told | src: chat 2026-09-24
- Presets renamed as levels | because: the presets are cases, not a difficulty curve; renaming them would bend the copy | src: round four 2026-09-24
- A fourth computed readout in the green toy | because: intent is checked against a goal, not the payload; a fourth lamp would be fiction | src: chat 2026-10-09
- "Good" as the fourth rung's name | because: intent is truer to what the rung checks and matches the cross-domain lineage | src: chat 2026-10-09
- Splitting intent into semantic and pragmatic rungs | because: verified already carries the semantic check | src: chat 2026-10-09
- A light theme on screen, and following the reader's setting | because: the column ramp holds its contrast and stays clear of the seam marks only on the dark canvas | src: chat 2026-10-13

## Data
- payload-green | mode: synthetic | source: hand-written in this file | extracted: 2026-09-22 | seed: 11 | stale-after-days: none
- payload-bidder | mode: synthetic | source: hand-written in this file | extracted: 2026-09-22 | seed: 0 | stale-after-days: none
- payload-race | mode: synthetic | source: generator in this file | extracted: 2026-09-22 | seed: 7 | stale-after-days: none
- payload-source | mode: synthetic | source: hand-written in this file; a seventh, bonus card added 2026-09-24 | extracted: 2026-09-24 | seed: 0 | stale-after-days: none
- payload-models | mode: snapshot | source: What the models stand on, embedded spec | extracted: 2026-09-22 | stale-after-days: none
- payload-converge | mode: synthetic | source: generator in this file | extracted: 2026-09-23 | seed: 5 | stale-after-days: none
- payload-receipt | mode: synthetic | source: Seamwork's snapshot workspace, via seamwork/scripts/render-public-section.mjs | extracted: 2026-10-12 | stale-after-days: none
Sources

S1 to S35, each independent of me; vendor sources marked

Every claim marked D points here by number. Each source is independent of me, and a platform's own documentation counts as primary for how that platform behaves. A vendor making the case for its own approach is marked vendor: read it as an industry view, not a neutral one. Turn on Sources, at the top of the page, to see every pointer. S1 to S31 accessed Sept 23, 2026; S32 to S35 accessed Oct 9, 2026.

  1. S1
    Minimize duplicate key events with transaction IDsGoogle Analytics Helpprimary

    GA4 deduplicates purchases that share a transaction ID, such as an order number.

  2. S2
    Handling duplicate Pixel and Conversions API eventsMeta for Developersprimary

    Meta deduplicates browser and server events by event ID and name, but not two identical browser events.

  3. S3
    Apply a discount to an ecommerce eventGoogle for Developersprimary

    A purchase's value is the total after discounts, and GA4 won't subtract them for you.

  4. S4
    About Smart BiddingGoogle Ads Helpprimary

    Automated bidding trains on conversion data and uses signals that manual bidding can't see.

  5. S5
    Advantage campaign budgetMeta for Developersprimary

    Meta moves campaign budget between ad sets in real time, toward the best opportunities for results.

  6. S6
    Protocols: tracking plan best practicesSegment Docsprimary

    A tracking plan records what to track, where it lives in the code, and why.

  7. S7
    subscriptionBillingAttemptCreateShopify.devprimary

    Subscription renewals are charged and created as orders through the Admin API, with no checkout.

  8. S8
    Customize PayPal checkout pages: auto returnPayPal Developerprimary

    Auto return is off by default, and some buyers are never sent back to the merchant's site.

  9. S9
    Network features referenceChrome for Developersprimary

    DevTools records every request a page makes and exports them as a HAR file.

  10. S10
    Set up server-side tagging with Cloud RunGoogle for Developersprimary

    The tagging server logs every request by default, and Google suggests switching that off at high volume.

  11. S11
    Set up consent mode on websitesGoogle for Developersprimary

    The consent default has to run before any measurement command, and none exists until it's set.

  12. S12
    Intelligent Tracking Prevention 2.1WebKitprimary

    Safari caps cookies set by script at seven days.

  13. S13
    Intelligent Tracking Prevention 2.3WebKitprimary

    After a decorated link from a tracker, cookies set by script on the landing page last 24 hours.

  14. S14
    Apple announces powerful new privacy and security featuresApple Newsroomprimary

    Link Tracking Protection removes tracking information from links in Mail, Messages and Safari Private Browsing.

  15. S15
    Liveness, readiness, and startup probesKubernetes Documentationprimary

    Where liveness comes from: a check that a process is alive and making progress.

  16. S16
    Observability primerOpenTelemetryprimary

    Where observability comes from: understanding a system from the signals it emits. The page uses it more narrowly.

  17. S17
    The four Vs of big data (IBM whitepaper)IBM, hosted by TDWIprimary

    Where veracity comes from: the accuracy and trustworthiness of data.

  18. S18
    Setup Quality API: Event Match QualityMeta for Developersprimary

    Event Match Quality scores how well the customer details sent can match events to people.

  19. S19
    AS 1105: Audit Evidence, paragraph .08PCAOBprimary

    Evidence from an independent, knowledgeable source is more reliable than internal evidence alone.

  20. S20
    Conversions API best practicesMeta for Developersprimary

    Only matched events feed attribution and ad delivery optimization.

  21. S21
    Consent mode overviewGoogle for Developersprimary

    In advanced consent mode, tags send cookieless pings while consent is denied.

  22. S22
    Google Consent ModeCloudflare Docssecondary

    Requests to Google carry the visitor's consent state in a gcd parameter. Google doesn't publish what its values mean.

  23. S23
    Meridian: collect and organize your dataGoogle for Developersprimary

    A mix model is fitted to an aggregated count, such as revenue or conversions, by week and region.

  24. S24
    Data-driven attribution methodologyGoogle Analytics Helpprimary

    Data-driven attribution splits credit with the Shapley value from cooperative game theory.

  25. S25
    Characterizing and minimizing divergent delivery in Meta advertising experimentsarXiv, 2025primary

    A lift test randomly assigns people to a test group and a control group that sees no ads.

  26. S26
    GeoLiftMeta Open Sourceprimary

    Geo experiments measure lift on regional totals, using synthetic control.

  27. S27
    About ASLAAmerican Society of Landscape Architectsprimary

    Landscape architects bring ecology, design and technology together, working with engineers, architects and communities.

  28. S28
    Stape AcademyStapeprimary

    The certificate course is titled Server-side tagging with Stape.

  29. S29
    Software certificationsHubSpot Academyprimary

    Lists the Marketing Hub Software and Sales Hub Software certifications.

  30. S30
    Data Integrations CertificationHubSpot Academyprimary

    The Data Integrations certification course.

  31. S31
    Online bachelor's degree: Earth, Society and Environmental SustainabilityUniversity of Illinoisprimary

    The BS program in Earth, Society and Environmental Sustainability.

  32. S32
    A mathematical theory of communicationClaude Shannon, Bell System Technical Journal, 1948, hosted by Harvardprimary

    The founding paper of information theory. It treats what a message means as outside the engineering problem: the job is to reproduce, at one point, a message chosen at another. Live and observed work at that level; verified and intent take up what it set aside.

  33. S33
    The new era of signal engineering: what it means for marketingVoyantissecondary vendor

    A vendor's case for signal engineering: turning a predicted value into a signal a platform can learn from, by timing, calibrating and formatting it. The practical side of intent, in industry terms.

  34. S34
    In the age of ad automation, signal quality is your biggest advantageVoyantissecondary vendor

    A vendor's argument that once platforms automate bidding and targeting, the signal is what the marketer still controls. Optimizing for a proxy such as a trial sign-up teaches the platform to find people who sign up, whether they stay for years or leave in two weeks.

  35. S35
    Recent contributions to the mathematical theory of communicationWarren Weaver, 1949, from The Mathematical Theory of Communication, hosted by UC Berkeleyprimary

    Weaver's companion essay to Shannon's paper names three levels of communication: the technical (can the symbols be sent accurately), the semantic (do they carry the intended meaning) and the effectiveness (does the meaning received move conduct the way it was meant to). Live and observed sit at the technical level, verified reaches the semantic, and intent is Weaver's effectiveness problem.