# I-645 media coverage codebook (FactHub Research Team, 2026-10-21)

Applies identically to every outlet. Window: 2026-06-01 to 2026-10-21. Topic: I-645 (repeal of ESSB 6346, WA 9.9% tax on household income over $1M; Nov 3, 2026 ballot).

Fetching: pages were fetched with the User-Agent `FactHubResearch/1.0 (https://facthub.org)`.

Reading tips: try WebFetch first; on 403/paywall try curl with the UA above; then syndicated copies (Spokesman-Review, Yahoo News, MSN, cpapracticeadvisor, newsbreak, AOL, govtech), then the Wayback Machine (`http://archive.org/wayback/available?url=<url>`). Never bypass a login. If you could not read the full text, set read_status=unread (or partial if you read only a snippet/half) and code only what you saw; leave other fields blank.

## Anchor facts (for judging context; don't re-research)
- No collections until April 2029 (tax year 2028). No current appropriation relies on it (WRC). OFM told agencies not to assume it for 2027-29.
- BUT the ERFC 2027-29 four-year outlook counts ~+$2.3B net; without it the balance goes negative (No side's best point).
- Sec. 202: deposited to the general fund; 5% to Fair Start (child care) from 7/2029. Nothing legally dedicated to K-12 (Judge Egeler: "It doesn't direct. It has hopes.").
- AG: the sales-tax/B&O/WFTC relief "would not be repealed and would remain in place" if I-645 passes.
- $1M threshold is ordinary statute; Legislature can lower it by simple majority; no public vote is required.
- Revenue estimate is static; revenue is volatile (cap-gains tax swung $786M -> $433M -> ~$1.5B).
- PDC 10/20: No on 645 $12.55M (~89% labor); Vote Yes $2.04M; Let's Go WA $3.99M across 3 measures. No outraised Yes roughly 2:1 (or more).
- Heywood (LGW funder) is wealthy; plausibly would owe the tax (personal financial interest).
- I-645's text (Title 82 "income" definition, "on or measured by") creates legal risk to the capital-gains tax.
- $13B = fiscal-note gross FY2029-32. OFM FIS = $11.4B FY27-31. Both fine as size; "cut" is wrong framing for current budgets.
- Ballot sentence (PIID): "This measure would decrease funding for public K-12 education, higher education ... and human services (primarily healthcare)." DHM poll (Sept, n=800): with sentence No 57-35; without 44-40.
- Ballot title: "a 9.9% tax on annual individual income over $1,000,000".
- Known error: Deseret 10/15 reversed fundraising (said Yes led $7.7M to $5.4M).

## Columns (one row per story; use these exact names)
story_id | outlet | outlet_group (mainstream / conservative / progressive) | date (YYYY-MM-DD) | author | headline | url | read_status (full / partial / unread) | type (news / explainer / fact_check / opinion / editorial / broadcast) | yes_sources | no_sources | neutral_sources | first_word (yes / no / neutral / none) | last_word (yes / no / neutral / none) | rebuttal (Y / N / NA) | headline_term | loaded_terms | no_claims_unchecked | yes_claims_unchecked | claims_checked | O1 | O2 | O3a | O3b | O4 | O5 | O6 | O7 | O8 | O9 | errors | ballot_sentence | dhm_poll | key_quote | notes

### Definitions
- **type**: news = straight news/campaign-event/money story; explainer = voter-guide style; fact_check = explicitly checks claims; opinion = op-ed, column, talk-host commentary, advocacy-org blog; editorial = the outlet's own editorial board; broadcast = a TV/radio segment page whose main content is video/audio (code from the text/transcript available).
- **Sources**: count distinct people/organizations quoted or paraphrased as advocates. yes = Yes on I-645 / repeal side (Heywood, LGW, Vote Yes campaign, Herrera Beutler, Gildon, WPC, Republicans arguing repeal, business groups for repeal). no = No side (No on 645, unions, Ferguson, Dem legislators defending the tax, EOI, NPI). neutral = OFM, ERFC, WRC, courts, AG office as process, academics without a side, pollsters.
- **first_word / last_word**: side of the first and last advocate quoted/paraphrased in the story (ignore reporter narration). none if no advocate quoted.
- **rebuttal**: Y if the story gives the other side a response to the main claim(s) the story leads with; N if one side's claims appear with no response; NA for opinion/editorial.
- **headline_term**: how the headline names the tax: "millionaires tax" / "income tax" / "income tax repeal" / "tax on income over $1M" / "high-earner tax" / "wealth tax" / other (quote it).
- **loaded_terms**: quote any of these appearing in reporter's/outlet's own voice (not inside a quote): cuts, tax break, billionaire(-backed), millionaire-funded, union-funded, scare tactics, lies, gut, slash, hole, giveaway, extreme, radical, tax-and-spend, attack. Prefix with Q: if only inside a quotation.
- **no_claims_unchecked / yes_claims_unchecked**: semicolon list of claim codes the story repeats (in a quote OR reporter voice) with NO context or rebuttal addressing that specific claim anywhere in the story. For opinion/editorial, list claims the author asserts as their own.
  - No-side codes: N13B ("$13B cuts"/"$13B hole" to schools/health/child care, without noting 2029 start or no current appropriation or not dedicated); N460K ("460,000 families"/"500,000" face a tax increase, or "diaper tax returns", stated as a legal effect); NVOTE ("voters always have the final say"/can't expand without a vote); N05 ("only 0.5%"/"20,000 households" as permanent scope, without noting threshold can be lowered by majority); NMEALS (free school meals end, as fact); N300B (Jayapal $300B); NHEDGE ("hedge-fund mogul"/"billionaire buying a tax cut" framing without noting No outraised Yes); NBREAK ("$13B tax break for millionaires" without noting nobody pays yet).
  - Yes-side codes: YCOME ("it will come for everyone"/"income tax on everyone" stated as certainty); YPENS (pensions/Social Security taxed, without noting only >$1M households); YUNCON ("unconstitutional" stated as fact, not as pending challenge); YUNEMP (WA unemployment "highest"/"tied for highest"); Y90 ("90% of family businesses"); YLEAVE ("millionaires are leaving" as established fact); YLEAK ("leaked emails"); YNOK12 (Heywood "doesn't do anything with K-12 funding"/"not a dime" without noting the 2027-29 outlook counts the revenue).
- **claims_checked**: codes of claims the story itself contextualized or fact-checked (reporter voice).
- **Omissions** (1 = fact included, 0 = omitted). Code for every row; analysis will split by type.
  - O1 relief survives repeal (AG statement or equivalent)
  - O2 revenue goes to general fund / not dedicated to K-12 (95/5)
  - O3a collections don't start until 2029
  - O3b no current appropriation relies on it
  - O4 2027-29 outlook/next budget counts on the revenue (gap/shortfall if repealed)
  - O5 $1M threshold can be lowered by simple majority, no vote required
  - O6 revenue estimate is static and/or revenue is volatile
  - O7 No side ~90% union-funded and/or No outraised Yes
  - O8 Heywood's (or Yes donors') personal financial interest in repeal
  - O9 capital-gains tax / "measured by income" legal risk from I-645's text
- **errors**: factual errors in reporter/outlet voice (not in quotes). Give the wrong statement, the correct fact, and whether a correction was found.
- **ballot_sentence**: none / mentioned / quoted / critiqued (story notes it's disputed, litigated or that it moves votes).
- **dhm_poll**: Y if the story reports the DHM with/without-sentence result; N otherwise.
- **key_quote**: ≤25 words, exact, showing the most bias-relevant passage (or best-practice passage).

## How the coding was done
Five researchers each coded one outlet group (newspapers; TV and wire; public and nonprofit media; conservative outlets; progressive advocacy media) using this codebook. Five KING 5 and KREM stories that blocked automated fetches were later read in a web browser and coded by the lead researcher. A blind second coder recoded a stratified random sample of 20 news stories (seed 645); agreement is reported in the dataset limitations. The script media_audit.js merges the coded rows into i645_media_coding.csv, and media_audit_derived.js computes the summary tables.
