// Builds the FactHub dataset "seattle-homelessness-promises": official homelessness promises // (verbatim statements) and their measured outcomes (forecasts), 2005-2026. // Quotes come from research/promises-quotes.md, where each was copied from the primary document. // Outputs (../out/): promises.csv, promises_content.json const fs = require('fs'); const path = require('path'); const crypto = require('crypto'); const ROOT = path.join(__dirname, '..', '..'); const OUT = path.join(__dirname, '..', 'out'); const NOW = '2026-10-10T23:30:00Z'; const KEY = 'seattle-homelessness-promises'; const S = (id, name, url, archiveUrl, role, extra = {}) => ({ id, name, url, retrievedAt: '2026-10-10', role, licenseName: 'Public document', licenseUrl: null, redistribution: 'Linked, not rehosted.', artifactId: null, archiveUrl, ...extra }); const sources = [ S('ten-year-plan', 'Committee to End Homelessness in King County, A Roof Over Every Bed in King County: Our Community\'s Ten-Year Plan to End Homelessness (2005)', 'https://web.archive.org/web/2008/http://cehkc.org/DOC_plan/10-YearPlanFinal.pdf', 'https://web.archive.org/web/2008id_/http://cehkc.org/DOC_plan/10-YearPlanFinal.pdf', 'Primary source for the 2005 plan\'s goals. The original site (cehkc.org) is offline, so the URL is the Internet Archive copy and the archive link is its raw-file form.'), S('allhome-plan-2015', 'All Home, Strategic Plan 2015-2019', 'https://web.archive.org/web/2016/http://allhomekc.org/wp-content/uploads/2015/09/All-Home-Strategic-Plan.pdf', 'https://web.archive.org/web/2016id_/http://allhomekc.org/wp-content/uploads/2015/09/All-Home-Strategic-Plan.pdf', 'Primary source for the 2015 veteran goal and for the Ten-Year Plan\'s results (units secured). The original site is offline; the URL is the Internet Archive copy.'), S('kc-vets-2015', 'King County Executive, "Campaign to help every homeless veteran in King County find a home by the end of 2015" (Aug. 11, 2015)', 'https://www.kingcounty.gov/elected/executive/constantine/News/release/2015/August/11-welcome-one-home.aspx', 'https://web.archive.org/web/20151019220321/http://www.kingcounty.gov/elected/executive/constantine/News/release/2015/August/11-welcome-one-home.aspx', 'Primary source for Executive Constantine\'s veteran pledge.'), S('kuow-vets-2015', 'KUOW, "King County won\'t meet goal to end veteran homelessness" (Dec. 28, 2015)', 'https://www.kuow.org/stories/king-county-wont-meet-goal-end-veteran-homelessness', 'https://web.archive.org/web/20261010231655/https://www.kuow.org/2015-12-28/king-county-wont-meet-goal-end-veteran-homelessness', 'News report that the 2015 veteran goal was not met (secondary).', { archivedAt: '2026-10-10T23:16:55Z', contentDigest: 'sha256:d26f9872609f40379e7dd2336d6937cb095782dcb10c661e62cfcfe17dd6e38a' }), S('harrell-campaign-2021', 'Bruce Harrell for Seattle, "Bruce Harrell Unveils Homelessness Plans..." (campaign release, about Sept. 2, 2021)', 'https://www.bruceforseattle.com/bruce-harrell-unveils-homelessness-plans-decries-lack-of-action-to-help-people-out-of-encampments-as-school-year-begins/', 'https://web.archive.org/web/20210902211722/https://www.bruceforseattle.com/bruce-harrell-unveils-homelessness-plans-decries-lack-of-action-to-help-people-out-of-encampments-as-school-year-begins/', 'Primary source for the 2,000-unit campaign pledge.'), S('harrell-plan-2022', 'Office of the Mayor, "Mayor Harrell Releases One Seattle Homelessness Action Plan..." (May 31, 2022)', 'https://harrell.seattle.gov/2022/05/31/mayor-harrell-releases-one-seattle-homelessness-action-plan-and-transparency-dashboard-announces-acquisition-of-dockside-apartments/', 'https://web.archive.org/web/2023/https://harrell.seattle.gov/2022/05/31/mayor-harrell-releases-one-seattle-homelessness-action-plan-and-transparency-dashboard-announces-acquisition-of-dockside-apartments/', 'Primary source for Mayor Harrell\'s restated goal of "identifying" 2,000 units.'), S('harrell-q4-2023', 'Office of the Mayor, "One Seattle Homelessness Action Plan Posts Q4 Data Updates" (Jan. 27, 2023)', 'https://harrell.seattle.gov/2023/01/27/one-seattle-homelessness-action-plan-posts-q4-data-updates/', 'https://web.archive.org/web/2023/https://harrell.seattle.gov/2023/01/27/one-seattle-homelessness-action-plan-posts-q4-data-updates/', 'Official outcome: 2,065 units identified in 2022.'), S('publicola-harrell-2023', 'PubliCola, "Harrell Promised 2,000 Units of Housing or Shelter By the End of His First Year. He Didn\'t Deliver." (Jan. 4, 2023)', 'https://publicola.com/2023/01/04/harrell-promised-2000-units-of-housing-or-shelter-by-the-end-of-his-first-year-he-didnt-deliver/', 'https://web.archive.org/web/20261010231630/https://publicola.com/2023/01/04/harrell-promised-2000-units-of-housing-or-shelter-by-the-end-of-his-first-year-he-didnt-deliver/', 'Independent count of units newly announced in 2022 (secondary).', { archivedAt: '2026-10-10T23:16:30Z', contentDigest: 'sha256:8c740cca509de9ce5a0f1edc710eadd1b62511fedcf118ffc9d4ab7b8a7e296b' }), S('p4z-launch-2022', 'Partnership for Zero launch website (KCRHA), Feb. 17, 2022', 'https://partnershipforzero.org/', 'https://web.archive.org/web/20220217230652/https://partnershipforzero.org/', 'Primary source for the Partnership for Zero timeline.'), S('kcrha-p4z-results', 'KCRHA, Partnership for Zero resource page', 'https://kcrha.org/resources/partnership-for-zero/', 'https://web.archive.org/web/2025/https://kcrha.org/resources/partnership-for-zero/', 'Official outcome: 231 people housed; pilot wound down in September 2023.'), S('kc-sotc-2021', 'King County Executive, 2021 State of the County address (May 11, 2021)', 'https://kingcounty.gov/elected/executive/constantine/news/release/2021/May/11-state-of-the-county.aspx', 'https://web.archive.org/web/20210618115943/https://kingcounty.gov/elected/executive/constantine/news/release/2021/May/11-state-of-the-county.aspx', 'Primary source for Executive Constantine\'s Health Through Housing pledge.'), S('kc-hth-2021-07', 'King County Executive news release on Health Through Housing purchases (July 29, 2021)', 'https://kingcounty.gov/elected/executive/constantine/news/release/2021/July/29-health-through-housing.aspx', 'https://web.archive.org/web/20210729191334/https://kingcounty.gov/elected/executive/constantine/news/release/2021/July/29-health-through-housing.aspx', 'Primary source for the "up to 1600 by the end of next year" pledge.'), S('kc-hth-2022-12', 'King County Executive news release on Salmonberry Lofts (Dec. 14, 2022)', 'https://kingcounty.gov/elected/executive/constantine/news/release/2022/December/14-HTH-Salmonberry-Lofts.aspx', 'https://web.archive.org/web/20221231202755/https://kingcounty.gov/elected/executive/constantine/news/release/2022/December/14-HTH-Salmonberry-Lofts.aspx', 'Official outcome at the end of 2022: 565 people housed, 1,011 units purchased.'), S('wilson-sotc-2026', 'Office of the Mayor, "Mayor Wilson\'s 2026 State of the City Address" (Feb. 17, 2026)', 'https://wilson.seattle.gov/2026/02/17/mayor-wilsons-2026-state-of-the-city-address/', 'https://web.archive.org/web/20260303070853/https://wilson.seattle.gov/2026/02/17/mayor-wilsons-2026-state-of-the-city-address/', 'Primary source for Mayor Wilson\'s 1,000-unit goal for 2026.'), S('wilson-plan-2026', 'Office of the Mayor, "Mayor Wilson delivers action plan to bring people indoors..." (Sept. 14, 2026)', 'https://wilson.seattle.gov/2026/09/14/mayor-wilson-delivers-action-plan-to-bring-people-indoors-and-keep-residents-house/', 'https://web.archive.org/web/20260918075257/https://wilson.seattle.gov/2026/09/14/mayor-wilson-delivers-action-plan-to-bring-people-indoors-and-keep-residents-house/', 'Primary source for the revised goal of about 960 shelter beds by the end of 2027.'), S('pathways-factsheet', 'City of Seattle, Pathways Home fact sheet (Sept. 2016)', 'https://www.seattle.gov/documents/departments/pathwayshome/factsheetpathways.pdf', 'https://web.archive.org/web/20261010231555/https://www.seattle.gov/documents/departments/pathwayshome/factsheetpathways.pdf', 'Primary source for the Pathways Home 2017 goals.', { archivedAt: '2026-10-10T23:15:55Z' }), S('lester-crosscut-2016', 'Catherine Lester, "With changes, Seattle could shelter all of its homeless," Crosscut (opinion), Sept. 13, 2016', 'https://crosscut.com/2016/09/mayor-ed-murray-human-services-pathways-home-reform', 'https://web.archive.org/web/20160914164211/http://crosscut.com/2016/09/mayor-ed-murray-human-services-pathways-home-reform/', 'Primary source for the first-person 500-families pledge.'), S('hsd-pathways-1yr', 'Seattle Human Services Department, "One Year Update on Pathways Home" (Sept. 22, 2017)', 'https://www.seattle.gov/Documents/Departments/HumanServices/Reports/Final_PH_1_Year.pdf', 'https://web.archive.org/web/20190308010758/http://www.seattle.gov/Documents/Departments/HumanServices/Reports/Final_PH_1_Year.pdf', 'Official outcome: 738 families sheltered by Aug. 31, 2017 (p.3).'), S('hud-pit-by-coc', 'HUD, 2007-2025 Point-in-Time Counts by CoC', 'https://www.huduser.gov/portal/sites/default/files/xls/2007-2025-PIT-Counts-by-CoC.xlsb', 'https://web.archive.org/web/20260530191417/https://www.huduser.gov/portal/sites/default/files/xls/2007-2025-PIT-Counts-by-CoC.xlsb', 'King County\'s 2015 count (10,122), used as the outcome of the end-homelessness goal.', { licenseName: 'U.S. government work (public domain)', archivedAt: '2026-05-30T19:14:17Z', contentDigest: 'sha256:8deeb058001d6ecc0dfba0587baafc5e82eb46354e724c7e83a2a75eaa86e2f3' }), ]; const srcById = Object.fromEntries(sources.map(s => [s.id, s])); const st = (id, speaker, speakerRole, date, venue, quote, context, claimType, sourceId) => ({ id, speaker, speakerRole, date, venue, quote, context, claimType, sourceId, archiveUrl: srcById[sourceId].archiveUrl }); const statements = [ st('ten-year-end', 'Committee to End Homelessness in King County', 'Authoring body of King County\'s ten-year plan (a coalition of King County, Seattle, other cities, United Way, faith and business groups)', '2005-03-07', 'Plan document ("Plan Structure and Content" page)', 'Our Community\'s Ten-Year Plan to End Homelessness documents our commitment to ending homelessness in King County by 2014 and outlines strategies that will support this goal.', 'This is the first paragraph of the plan\'s "Plan Structure and Content" page; the plan was approved by the committee in March 2005 and launched in July 2005. Its executive summary says "As a community, we can--and we will--end homelessness," and gives a baseline of "More than 8,000 people" homeless on a given night. Later documents (the 2011 Mid-Plan Review) restated the deadline as 2015, and the 2015 All Home plan called it "an aspirational goal for the community."', 'promise', 'ten-year-plan'), st('ten-year-units', 'Committee to End Homelessness in King County', 'Authoring body of King County\'s ten-year plan', '2005-03-07', 'Plan document (Chapter 2, Principal Action D, p.10)', 'By 2014, our communities will have: [...] Developed 4,500 new units of housing and secured 5,000 existing units located throughout the county, and assured that they remain affordable long-term to people who have been homeless', 'The passage sits under the section heading "D. Secure 9,500 Units of Housing for Homeless Persons" (p.9). The same section sets an interim target to secure 1,000 existing units within the first five years.', 'promise', 'ten-year-plan'), st('vets-constantine', 'Dow Constantine', 'King County Executive', '2015-08-11', 'Press release (campaign launch event)', 'Many homeless military veterans have a housing voucher in their hands -- they just need a property manager to give them a chance. [...] Helping every veteran in King County find a safe, affordable place to live by the end of the year requires a community-wide effort, one that I am proud to be a part of.', 'The two sentences are separated in the release by the attribution "said King County Executive Dow Constantine." The release opened: "King County has launched a community-wide campaign to help every local homeless military veteran find housing by Dec. 31, 2015." It said 426 veterans had been housed in 2015, "leaving an estimated 662 others homeless," and tied the campaign to the White House Mayors Challenge, which Constantine and Seattle Mayor Ed Murray had signed.', 'promise', 'kc-vets-2015'), st('vets-allhome', 'All Home', 'King County Continuum of Care planning body (formerly the Committee to End Homelessness)', '2015-08-31', 'Strategic Plan 2015-2019 (p.3)', 'End Veteran Homelessness by 2015: Our goal is for all Veterans to be housed or in shelter and on a pathway to housing (what USICH is calling "functionally zero" homeless). We believe we can achieve this goal, as we have permanent housing resources for about 900 of the 1096 Veterans who are homeless in King County.', 'The plan lists this goal first among federally aligned objectives, followed by "End Chronic Homelessness by 2017," "End Youth/Young Adult Homelessness by 2020" and "End Family Homelessness by 2020." The plan is dated 2015; the date given is approximately when the King County Council endorsed it (around Aug. 31, 2015).', 'promise', 'allhome-plan-2015'), st('harrell-campaign', 'Bruce Harrell for Seattle (campaign)', 'Campaign of Bruce Harrell, then a candidate for Mayor of Seattle', '2021-09-02', 'Campaign press release', 'With the resources identified, Harrell pledges to identify and begin the process of moving people into 1,000 units of housing within the first 6 months of taking office, and securing an additional 1,000 units by the end of year one.', 'The release is undated; it was first archived on Sept. 2, 2021 and covered by the press on Sept. 3. This is narrative text in the campaign release, not words Harrell spoke; his own quoted words in the release contain no unit number. It follows his commitment to spend at least 12% of city funds plus federal and state money on the plan. As mayor, Harrell restated the goal as "identifying" 2,000 units (see statement harrell-identify).', 'promise', 'harrell-campaign-2021'), st('harrell-identify', 'Bruce Harrell', 'Mayor of Seattle', '2022-05-31', 'Press release (Office of the Mayor)', 'Dockside is a great example of how we can strategically deploy our resources to make an immediate impact, as we continue toward our goal of identifying 2000 new units for people experiencing homelessness this year.', 'Harrell said this while releasing his One Seattle Homelessness Action Plan and announcing the purchase of the Dockside Apartments. The release body lists the priority as "Identifying 2000 units of shelter and permanent housing by year\'s end; 1300 units have been identified so far this year." This is the first official statement of the goal as identifying units rather than moving people into them, and it drops the six-month, 1,000-unit milestone.', 'promise', 'harrell-plan-2022'), st('p4z-timeline', 'Partnership for Zero (led by the King County Regional Homelessness Authority)', 'Regional homelessness authority leading a public-private downtown pilot', '2022-02-17', 'Program launch website', 'In the Downtown core, we expect to reach phase five in what could be as fast as 12 months, though we expect some variance in timeline due to command center development and project staffing, client needs, and the availability of appropriate resources.', 'Phase five is the stage after placements are complete, when the authority would "maintain the infrastructure necessary to immediately respond to new individuals experiencing unsheltered homelessness in target areas." The text is unsigned organizational wording; the phrase "functional zero," often attributed to the pilot, does not appear on the launch page.', 'prediction', 'p4z-launch-2022'), st('hth-sotc', 'Dow Constantine', 'King County Executive', '2021-05-11', 'State of the County address', 'Meeting this moment in the homelessness crisis starts here -- in Seattle\'s Uptown neighborhood -- where I am pleased to announce that King County is purchasing our first Health Through Housing hotel. We will have several more properties in several more cities to announce in the coming weeks, ultimately bringing safe, supportive housing to 1600 of our unhoused neighbors this year and next.', 'The paragraph before begins "COVID 19 exacerbated the crisis of homelessness." The next sentence is "In this one action we will permanently house more than one third of today\'s chronically homeless residents."', 'promise', 'kc-sotc-2021'), st('hth-1600', 'Dow Constantine', 'King County Executive', '2021-07-29', 'Press release (press conference)', 'Two months ago I announced the first purchase for Health through Housing, and with today\'s announcement we\'ll soon have 850 new supportive housing units ready to serve our community before this winter, and up to 1600 by the end of next year.', 'Constantine said this while announcing $96 million in purchases of the sixth through eighth Health Through Housing properties. The release said the county was "positioned to welcome almost 850 chronically homeless people off the streets and into their new homes before this winter." Later county reports describe 1,600 units as the program\'s goal through 2028.', 'promise', 'kc-hth-2021-07'), st('wilson-1000', 'Katie B. Wilson', 'Mayor of Seattle', '2026-02-17', 'State of the City address', 'With well over four thousand people sleeping unsheltered in Seattle as of last year\'s Point in Time Count, I know we have a big hill to climb, and dramatic changes won\'t happen overnight. But I am determined to add 1,000 new units this year, with services matched to people\'s needs, and we are on our way to reach this goal.', 'The surrounding paragraphs describe her January executive order to speed up shelter and a search for city land for tiny houses or micro-modular shelters. On March 4, 2026 she repeated the goal as "opening 1,000 new units of shelter with supportive services across the city this year." News reports of an interim target of 500 units by June are not included here because no primary source for that wording was found.', 'promise', 'wilson-sotc-2026'), st('wilson-960', 'Office of the Mayor (Katie B. Wilson administration)', 'Office of the Mayor of Seattle', '2026-09-14', 'Press release (action plan)', 'Building on steps taken earlier this year to speed up shelter expansion, the plan will increase capacity by nearly 1,000 shelter beds by the end of 2027, compared to the start of 2026.', 'The release says "the planned 960 beds are expected to serve about 1,750 people annually," lists shelters opened in 2026 and eight more planned for 2027, and dedicates $37 million to new shelter capacity. It does not mention the earlier goal of 1,000 new units in 2026; this is release text, not a direct quote from the mayor.', 'promise', 'wilson-plan-2026'), st('pathways-500', 'City of Seattle', 'City government (Mayor Ed Murray\'s administration, Human Services Department)', '2016-09-06', 'Pathways Home fact sheet', 'While these system-level changes will take time and will require collaboration with existing service providers to accomplish, the City is committed to taking immediate action to accomplish the following goals by 2017: [...] Move 500 unsheltered families from homelessness indoors by the end of 2017.', 'The fact sheet is undated; it was released with the Pathways Home announcement in early September 2016, which the HSD director described on Sept. 13 as "last week\'s announcement." The other 2017 goals listed were opening the Navigation Center, instituting performance-based contracts, housing people on the waiting list and creating a centralized list of available units. The fact sheet says the mayor\'s 2017-2018 budget included $12 million in new funding for the plan.', 'promise', 'pathways-factsheet'), st('pathways-lester', 'Catherine Lester', 'Director, Seattle Human Services Department', '2016-09-13', 'Opinion article, Crosscut', 'As an immediate step, Mayor Murray and I believe that we can respond to the 500 families with children currently known to be living outdoors, and move them indoors by the end of next year.', 'The paragraph before says national experts found "our region has the shelter capacity to shelter all people currently living outside," which "will take time and refocused investment." The next sentence is "Seattle will continue doing all we can and will work with our partners at the county, state and federal level to address this crisis."', 'promise', 'lester-crosscut-2016'), ]; // Outcomes measured or reported for each forecast (one saved analysis; forecasts point to it). const outcomes = [ { forecastId: 'f-ten-year-units', metric: 'Housing units for homeless people secured', observedValue: 5700, unit: 'units', observedPeriod: 'Reported in 2015', source: 'allhome-plan-2015', note: '"More than 5,700 units of housing were secured" (p.7); the plan also reports 6,314 units of permanent supportive housing funded since 2004 (p.12).' }, { forecastId: 'f-ten-year-end', metric: 'People counted homeless in King County', observedValue: 10122, unit: 'people', observedPeriod: 'January 2015 Point-in-Time count', source: 'hud-pit-by-coc', note: 'First count after the 2014 deadline; the 2005 baseline was "more than 8,000."' }, { forecastId: 'f-harrell-original', metric: 'Units newly announced in 2022', observedValue: 288, unit: 'units', observedPeriod: '2022', source: 'publicola-harrell-2023', note: 'Independent count; 163 of the 288 were existing buildings bought with federal funds.' }, { forecastId: 'f-harrell-identified', metric: 'Units identified (planned, funded or under construction)', observedValue: 2065, unit: 'units', observedPeriod: '2022', source: 'harrell-q4-2023', note: 'Official figure: "Total identified new housing and shelter units: 2,065."' }, { forecastId: 'f-hth-1600', metric: 'People housed in Health Through Housing', observedValue: 565, unit: 'units', observedPeriod: 'Dec. 14, 2022', source: 'kc-hth-2022-12', note: 'King County reported 565 people housed and 1,011 units purchased; units open were not reported, so people housed is used as the measure of units in use.' }, { forecastId: 'f-pathways-500', metric: 'Unsheltered families moved into shelter or housing', observedValue: 738, unit: 'families', observedPeriod: 'Oct. 1, 2016 to Aug. 31, 2017', source: 'hsd-pathways-1yr', note: 'Self-reported by the department that made the promise; 20% of the families had exited to permanent housing.' }, ]; const fc = (id, statementId, forecaster, madeOn, metric, unit, forecastValue, horizon, sourceId, outcome, note) => ({ id, statementId, forecaster, madeOn, metric, unit, forecastValue, horizon, sourceId, ...(outcome ? { outcome } : {}), note }); const oc = (fid) => { const o = outcomes.find(x => x.forecastId === fid); return { analysisId: 'promise-outcomes', observedValue: o.observedValue, observedPeriod: o.observedPeriod }; }; const forecasts = [ fc('f-ten-year-units', 'ten-year-units', 'Committee to End Homelessness in King County', '2005-03-07', 'Housing units secured for homeless people', 'units', 9500, '2014', 'ten-year-plan', oc('f-ten-year-units'), 'The outcome is "units secured" as reported in 2015, a year after the deadline.'), fc('f-ten-year-end', 'ten-year-end', 'Committee to End Homelessness in King County', '2005-03-07', 'People counted homeless in King County (homelessness ended)', 'people', 0, '2014', 'ten-year-plan', oc('f-ten-year-end'), 'The plan did not define "ended" numerically; zero is used as the literal target. The 2015 count covered a larger area than earlier counts.'), fc('f-vets-2015', 'vets-allhome', 'All Home and King County Executive Dow Constantine', '2015-08-31', 'Homeless veterans not housed or in shelter on a pathway to housing (functional zero)', 'people', 0, '2015-12-31', 'allhome-plan-2015', null, 'No numeric outcome was published; KUOW reported on Dec. 28, 2015 that the region "fell short" of the goal, and King County has not declared functional zero for veterans.'), fc('f-harrell-original', 'harrell-campaign', 'Bruce Harrell for Seattle (campaign)', '2021-09-02', 'Housing units secured or moved into (as originally pledged)', 'units', 2000, 'End of 2022', 'harrell-campaign-2021', oc('f-harrell-original'), 'Scored against units newly announced in 2022, the closest available measure of the original pledge to move people into or secure units.'), fc('f-harrell-identified', 'harrell-identify', 'Bruce Harrell', '2022-05-31', 'Housing and shelter units identified (as restated)', 'units', 2000, 'End of 2022', 'harrell-plan-2022', oc('f-harrell-identified'), '"Identified" counts units planned, funded or under construction, including projects begun before Harrell took office; it is not the same as units opened.'), fc('f-hth-1600', 'hth-1600', 'Dow Constantine', '2021-07-29', 'Health Through Housing units ready to serve', 'units', 1600, 'End of 2022', 'kc-hth-2021-07', oc('f-hth-1600'), 'Purchased units (1,011) were not all open; 565 people housed is used as the measure of units in use. At the end of 2025, 1,054 of 1,423 secured units were open.'), fc('f-wilson-1000', 'wilson-1000', 'Katie B. Wilson', '2026-02-17', 'New shelter or emergency housing units added in 2026', 'units', 1000, '2026', 'wilson-sotc-2026', null, 'The year is not over. On Sept. 14, 2026 the mayor\'s office restated the plan as nearly 1,000 beds by the end of 2027 (statement wilson-960). News reports put beds added by mid-September at 187.'), fc('f-pathways-500', 'pathways-500', 'City of Seattle', '2016-09-06', 'Unsheltered families moved indoors', 'families', 500, 'End of 2017', 'pathways-factsheet', oc('f-pathways-500'), 'The outcome period ends four months before the deadline. "Indoors" includes emergency shelter.'), ]; // Derived table: one row per promise. const rows = [ ['ten-year-units', '2005', 'Committee to End Homelessness in King County', 'Secure 9,500 housing units', '2014', '5,700 secured (reported 2015)', 'Missed'], ['ten-year-end', '2005', 'Committee to End Homelessness in King County', 'End homelessness in King County', '2014', '10,122 counted homeless (Jan. 2015)', 'Missed'], ['vets-2015', '2015', 'Dow Constantine; All Home', 'End veteran homelessness (functional zero)', '2015-12-31', 'Not reached (KUOW)', 'Missed'], ['harrell-original', '2021', 'Bruce Harrell campaign', 'Move people into or secure 2,000 units', 'End of 2022', '288 units newly announced in 2022 (PubliCola)', 'Missed'], ['harrell-identified', '2022', 'Bruce Harrell', 'Identify 2,000 units', 'End of 2022', '2,065 identified (official)', 'Met as restated'], ['p4z', '2022', 'KCRHA / Partnership for Zero', 'Reach phase five downtown in as little as 12 months', 'About Feb. 2023', 'Wound down Sept. 2023 after housing 231 people', 'Not reached'], ['hth-1600', '2021', 'Dow Constantine', 'Up to 1,600 Health Through Housing units', 'End of 2022', '565 housed; 1,011 purchased (Dec. 2022)', 'Missed'], ['wilson-1000', '2026', 'Katie B. Wilson', 'Add 1,000 new shelter units in 2026', 'End of 2026', 'Revised to ~960 beds by end of 2027', 'Pending; revised'], ['pathways-500', '2016', 'City of Seattle (Catherine Lester)', 'Move 500 unsheltered families indoors', 'End of 2017', '738 sheltered by Aug. 2017', 'Met'], ]; const csvEsc = v => /[",]/.test(v) ? `"${v.replace(/"/g, '""')}"` : v; fs.writeFileSync(path.join(OUT, 'promises.csv'), 'promise_id,year_made,promiser,promise,deadline,outcome,verdict\n' + rows.map(r => r.map(csvEsc).join(',')).join('\n') + '\n'); function art(id, rel, role, mediaType, description) { const buf = fs.readFileSync(path.join(ROOT, rel)); return { id, role, fileName: path.basename(rel), mediaType, byteLength: buf.length, contentDigest: 'sha256:' + crypto.createHash('sha256').update(buf).digest('hex'), description, access: 'public' }; } const artifacts = [ art('promises-table', 'facthub/out/promises.csv', 'derivedTable', 'text/csv', 'One row per official homelessness promise, with deadline, measured outcome and verdict.'), art('promises-script', 'facthub/scripts/build_promises.js', 'transformationManifest', 'text/javascript', 'Node.js script that builds this dataset\'s table, statements, forecasts and saved analysis.'), art('quote-notes', 'research/promises-quotes.md', 'documentation', 'text/markdown', 'Research notes with each quote, its page or location in the primary source, context, and verification status.'), ]; const f = (name, description) => ({ name, type: 'string', description, units: null, nullable: false, valueType: 'derived', derivation: null, sourceIds: [] }); const tables = [{ id: 'promises', title: 'Seattle and King County homelessness promises and outcomes, 2005-2026', description: 'Each official promise, who made it, its deadline, the measured outcome and a verdict.', artifactId: 'promises-table', unitOfObservation: 'Promise', fields: [ f('promise_id', 'Identifier'), f('year_made', 'Year the promise was made'), f('promiser', 'Person or body that made the promise'), f('promise', 'What was promised, summarized'), f('deadline', 'Deadline stated in the promise'), f('outcome', 'Measured or reported outcome at or after the deadline'), f('verdict', 'Met, missed, not reached, pending, or met only as restated'), ] }]; const content = { key: KEY, status: 'Draft', rulesVersion: '2.14', title: 'Seattle and King County homelessness promises and outcomes, 2005-2026', description: 'Official promises to end or reduce homelessness in Seattle and King County, quoted from primary sources, with the measured outcomes.', selectionRationale: 'Every major dated, measurable homelessness pledge by Seattle or King County officials since 2005 for which the exact wording could be found in a primary source. Promises found only in news coverage are excluded.', topics: ['homelessness', 'Seattle', 'King County', 'Washington', 'government promises'], geography: ['Seattle, WA', 'King County, WA'], temporalCoverage: '2005-2026', unitOfObservation: 'Official promise', updateCadence: 'As promises come due', curator: 'FactHub', reproducibilityStatus: 'Documented', reproducibilityExplanation: 'Each quote links to its primary source and an archived copy; quote-notes gives the page or location of each.', limitations: ['Outcome measures do not always match the promise\'s wording (for example, units purchased vs. units open); each forecast\'s note explains the mismatch.', 'Some outcomes are self-reported by the government that made the promise.', 'Promises made only in news interviews or reported only by the press are excluded, so the list is not exhaustive.', 'Homeless counts changed method in 2015, 2017 and 2022.'], sources, artifacts, tables, statements, forecasts, analyses: [{ id: 'promise-outcomes', title: 'Measured outcomes for Seattle and King County homelessness promises', question: 'What happened by each promise\'s deadline?', operation: 'Outcome figures transcribed from official reports and independent counts', parameters: { forecasts: outcomes.map(o => o.forecastId) }, scope: 'Promises with a numeric target and a published outcome', resultShape: 'table', structuredResult: { rows: outcomes.map(o => ({ forecastId: o.forecastId, metric: o.metric, observedValue: o.observedValue, unit: o.unit, observedPeriod: o.observedPeriod, sourceId: o.source, note: o.note })) }, displayResult: outcomes.map(o => `${o.metric}: ${o.observedValue.toLocaleString('en-US')} ${o.unit} (${o.observedPeriod})`).join('; '), limitations: ['Several outcomes use the closest available measure rather than the promise\'s exact wording; see each note.', 'Two outcomes (Harrell original pledge; veterans) rely on news reporting.'], executedAt: NOW }], changelog: [{ date: '2026-10-10', summary: 'Initial version.' }], }; fs.writeFileSync(path.join(OUT, 'promises_content.json'), JSON.stringify(content)); console.log('bytes', JSON.stringify(content).length);