LibreWaterNet
The whole ledger

Every claim, with its source

The front page says every claim on it is one you can check. This is where you check them. One row per assertion, so each stands or falls on its own.

How to read this

EC means the EngCalcs repository, which holds the software this site points to. A row citing a file in it is citing the code itself. Where a claim rests on an outside source, the source is linked and you can go and disagree with us.

Each section says which page of this site its rows support. Sections 6, 7 and 8 are the uncomfortable ones: what we could not verify, what we gave up, and what we refuse to claim.

The EngCalcs repository is public at github.com/hawstom/engcalcs, so a row citing a path inside it is citing a file you can open. Every claim number is a link to its own row, so any one of them can be quoted elsewhere and followed back here.

Ledger checked 2026-09-06.

1. The disclaimer in every footer

Supports the Not the EPA’s paragraph at the foot of every page on this site.

#ClaimSource
1.1EPANET is a program of the US Environmental Protection Agencyepa.gov/water-research/epanet; Wikipedia: EPANET
1.2This site is not EPA's, and the software is not EPANET, not a version of it, and not an official successorTrue by construction. Nothing here is EPA's, and the software is a separate GPL v3 program that embeds EPANET's engine
1.3EPA has not reviewed, endorsed, approved, sponsored, or been askedEC/dev/positioning.md §6 records a courtesy note to Open Water Analytics as not yet sent; no EPA contact is recorded anywhere in the repository. Confirmed by Tom Haws on 2026-09-06, the day the site went live.
1.4EPANET is obtained from EPA at epa.gov/water-research/epanetThe agency's own page

2. Disclosure 1, the dependency claims

Supports the first item on the Disclosures page, We are deeply dependent on EPANET, bullet by bullet.

#ClaimSource
2.1A 679 KB browser build of OWA-EPANET 2.3.5 is vendored and loaded on demandEC/js/vendor/epanet-js.js is 678,695 bytes on disk. EC/js/vendor/README.md: the engine inside the wrapper is OWA-EPANET 2.3.5. EC/CLAUDE.md records the engine as lazily imported
2.2OWA-EPANET 2.3.5 was released 2025-02-20OpenWaterAnalytics/EPANET releases, v2.3.5 dated February 20, 2025. Agrees with EC/js/vendor/README.md
2.3Extended period simulation, water age, source trace, chemical decay, pump energy, rule-based controls, and PRV/PSV/FCV all run through the EPANET engine onlyEC/CLAUDE.md lpn_ section: EPS shipped "through the EPANET engine only"; "the built-in solver has no time dimension and is not getting one"; "PRV/PSV/FCV switch their own state inside the iteration and solve through EPANET only". Water quality and pump energy are run-based, so they inherit the same constraint (EC/dev/roadmap-closed-ids.md, tasks 566 and 566.01). Rules: task 248.03, EC/js/lpn-rules.js
2.4Our own solver does one instant, pressures and flows onlyEC/CLAUDE.md: "with EPANET unreachable the page solves one instant and says so"
2.5We read and write EPANET's own .inp, [TITLE] to [END]EC/js/lpn-inp.js names 26 section headings including [TITLE] and [END]. Export shipped 2026-08-18 (EC/CLAUDE.md)
2.5aWe also have a native JSON format, holding things an .inp cannot: scenarios, saved profile paths, a background image, map tiles and the stored view, a Text label anchored to a link or carrying more than one line, and longitude/latitude for a geographic projectEC/js/looped-network.js serializeProject() writes scenarios, profiles, backdrop, view, labelSettings, project.basemap, origin; a shipped example lists exactly those keys. Corrected 2026-09-06 after Tom pointed out that "we never invented one" was false.
2.5bFive .inp round trips are genuinely impossible and are reported rather than fakedEC/dev/roadmap-closed-ids.md Task 281: a pump with no curve, a multi-line Text label, curve-point text, an emitter coefficient, a backdrop image's file name
2.62,425 head comparisons across 25 reporting steps, agreeing to 0.005 ft, against EPA's own Net3 reportEC/CLAUDE.md: "checked against all 25 steps of EPA's own Net3.rpt to 0.005 ft over 2,425 head comparisons (EC/dev/lpn-spike/eps-net3-harness.js)"
2.7Water quality anchored on the same report, worst 0.105%EC/dev/roadmap-closed-ids.md, task 566: "anchored on EPA's own Net3.rpt, 2,425 comparisons, worst 0.105%"
2.8Pump energy anchored on that report's own energy tableEC/dev/roadmap-closed-ids.md, task 566.01
2.9Our Hazen-Williams pair is derived from EPANET's 4.727 form, and differs from the common metric restatement by up to 0.12% from 50 mm to 2 mEC/js/PipeHydraulics.lib.js header comment, verbatim
2.10Element vocabulary, curve types, rule grammar, and unit-switch behaviour follow EPANETEC/CLAUDE.md: element types list; "EPANET HAS EXACTLY FOUR KINDS"; EC/js/lpn-rules.js is "EPANET's own grammar"; "EPANET behaves the same way we do" on unit switching
2.11Curve editor modelled on EPANET's; table of assets is the view EPANET has had since 2.0; EPANET 2.2's five map colours are in the palette unsoftenedEC commit 7b146c1d "Curve editor reads like EPANET's"; EC/js/looped-network.js comment on the tables pane, "EPANET has had it since 2.0"; EC/js/lpn-ramps.js: "The five map colours of EPANET 2.2 ... Kept unsoftened"
2.11aThey are NOT the default. The shipped default is Viridis, for both nodes and linksEC/js/looped-network.js defaultSettings(): colorRampNode: 'viridis', colorRampLink: 'viridis'. Corrected 2026-09-06 after Tom challenged the original claim; the earlier wording was false, and a comment in EC/js/looped-network.js had said the same false thing, which is where it came from. epanet is only the fallback for an unknown ramp key.
2.11bViridis is perceptually uniform and readable to colour-blind viewers; the rest of the palette is Brewer'sEC/js/lpn-ramps.js: 41 ramps in all: 35 of Brewer's (18 sequential, 9 diverging, 8 qualitative), plus viridis/magma/inferno/plasma (CC0, BIDS), plus EPANET's rainbow, plus Gray
2.11cThe features named as not simply downstream: scenarios, a world map, find and replace, flexible multi-labels, and a menu system we HOPE is easierEC/CLAUDE.md: scenarios are guarded by scenario_seam_check.php and setProp(); the world map is project.basemap with OSM and Mapbox raster tiles (task 497, EC/js/lpn-terrain.js); Find and replace is named in the lpn_ section (task 542); multi-line and link-anchored Text labels are claim 2.5b's own impossible round trip. Corrected 2026-09-06: the earlier wording named a profile tool and a search as places we are not downstream. Tom struck it, saying "EPANET has not only a profile tool, but graphs of time series, contours, frequency, and system flow", and he supplied this list himself. The menu-system claim is deliberately written as a hope, not a fact, because nobody has measured it.

3. Disclosures 2 to 5

Supports the remaining four items on the Disclosures page: the license, how new we are, the use of AI, and that nobody has vetted this.

#ClaimSource
3.1The license paragraph, quotedTom Haws, verbatim, 2026-09-06, supplied in the brief for this site
3.2The software is GNU GPL v3 or laterEC/CLAUDE.md license line; EC/dev/positioning.md §2
3.3EPANET carries no license because a US government work has no copyright to license17 U.S.C. § 105; see 4.2
3.4"We are what we are ... we have no idea what we are not and what we don't know"Tom Haws, 2026-08-22, quoted in EC/dev/positioning.md §2, which records it as written for the LibreWaterNet splash page and therefore sanctioned for public use
3.5We do not publish a completeness claim against EPANETEC/dev/positioning.md §2: "never write a completeness claim against EPANET"; the LibreWaterNet.org repository restates it
3.6The AI paragraph, quotedTom Haws, verbatim, 2026-09-06, supplied in the brief for this site
3.7No foundation, no governance document, no funding, and the forming of one is deliberately deferred rather than absentEC/dev/positioning.md §1 and §8. Rewritten 2026-09-12. It used to say the site claims neither a board nor the absence of one, which was true while the page said nothing; the front page now says "We have directors-in-waiting ... we have chosen to wait for clarity before forming a foundation or writing a governing document". Tom Haws, 2026-09-12, on writing it: "Nobody named, and it’s more true than ‘no board’. What I have written is to close a truth gap." The rule that produced the older wording is unchanged and is why no director is named: naming a living person on a public page is their decision, not ours.
3.7aDevelopment started on 28 July 2026, and as of 1 September 2026 the software has carried one real-world design reportTom Haws, 2026-09-06. Added 2026-09-06, when the third disclosure stopped saying "we are not going to dress it up" and started saying how new, which is a fact and needs a row like any other
3.7bFounder Tom Haws, P.E., and an experienced nonprofit CEO, linked to npsge.orgTwo claims, two registers, and both are public. P.E. is a state licence to practise engineering: a matter of public record against the licensing board of the issuing state, which is what the letters are for. Nonprofit CEO is an officer title in four Arizona nonprofit corporations, supplied by Tom Haws on 2026-09-12 and verifiable against the Arizona Corporation Commission, which publishes the officers of every corporation it registers. It is searchable rather than linkable: the register issues no stable public address for an entity, so the citation is the search, at arizonabusinesscenter.azcc.gov/businesssearch, on these four names:
  • NPS Maricopa Inc., CEO, 5 September 2017 to 7 January 2025.
  • NPS Agua Fria Inc., CEO, 31 August 2020 to 7 January 2025.
  • NPS Global Inc., CEO, 7 September 2020 to the present.
  • NPS Pinal Inc., CEO, 28 January 2025 to the present.
Continuous since 2017 and two of them current, which is what carries experienced and the present tense. NPS is a nonprofit CORPORATION, not a 501(c)(3) charity (his correction, the same day), and that decides where a reader should look: the charity registers and the Form 990 databases index tax-exempt filers and would not hold these companies whatever their officers are called, so their silence is evidence of nothing. The linked page carries the founding half in its own words: "NPS Global Inc. supports the self-managed family of engineering companies (currently including NPS Maricopa Inc., NPS Pinal Inc., and NPS Agua Fria Inc.) founded by Tom Haws in 2017."
3.827 languagesEC/lib/lang.ec.*.php is 27 files. Stated as 27 on librewaternet.org

4. Where EPANET came from, and whose work we ship

Supports the Credits page and the EPANET page it links to. Rows 4.1 to 4.8b are EPANET’s own history; 4.9 onward are the third-party works that travel inside the software.

#ClaimSource
4.1EPANET was paid for by American taxpayers and given awayFollows from 4.2 and from EPANET being EPA work. Stated as a characterisation, not a budget figure
4.217 U.S.C. § 105: copyright is not available for any work of the United States government; a "work of the United States Government" is one prepared by an officer or employee as part of official duties (§ 101)uscode.house.gov, title 17 § 105; Copyright status of works by the federal government
4.3EPANET was created by Lewis A. Rossman for EPA and first appeared in 1993Wikipedia: EPANET; EPA Science Matters, EPANET 2.2.0
4.4A formal report on the EPANET water quality model was published in 1993OSTI record, EPANET water quality model; EPA Science Inventory
4.52.2 was the last release made by EPA itselfUSEPA/EPANET2.2 on GitHub; EC/js/vendor/README.md: "EPANET development moved to Open Water Analytics ... after EPA's 2.2.0". Only an approximate date is stated on the site, see section 6
4.6EPANET is used by utilities, consultants, regulators, and academics worldwide, and its engine is embedded in many other packagesWikipedia: EPANET; EPA Science Matters
4.7Open Water Analytics is a community effort in collaboration with EPA; 2.3 released 2024-07-17, 2.3.5 on 2025-02-20OpenWaterAnalytics/EPANET releases; EC/js/vendor/README.md
4.8The browser build of the engine is MIT, © Luke Butler, wrapping MIT OWA-EPANET, compiled to WebAssemblyEC/js/vendor/README.md; EC/js/vendor/epanet-js.LICENSE. The name is printed as of 2026-09-06, in this credit and nowhere else, see section 7
4.8aPeople have wrapped, ported, rebuilt and taught EPANET for thirty years: graphical front ends free and commercial, the hydraulic solver, university coursesA characterisation, not an enumeration, and the paragraph says so in as many words: it mentions them together because the list is longer than we know. It names nobody, on Tom's instruction, 2026-09-06: "I preferred not to name any names in this paragraph". The one name we do print is the license credit at 4.8, where a credit belongs. EPANET first appeared in 1993 (4.3), which is where "thirty years" comes from
4.8bThat work was done before the age of AI, and it is what made it possible for one semi-retired engineer with an AI to build this in a summerTom Haws, 2026-09-06, whose tribute this is and who asked for it in these terms. The dates are 3.7a: development started 28 July 2026. Written as a measure of what they left behind, not as a claim about us
4.9Bootstrap 5.3.2, MIT, © 2011-2023 The Bootstrap AuthorsEC/js/vendor/README.md; the license header inside the vendored files
4.10Colour schemes, Apache-2.0, © 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State UniversityEC/js/lpn-ramps.js license block; colorbrewer2.org/export/LICENSE.txt
4.11viridis, magma, inferno, plasma released CC0 by Nathaniel J. Smith, Stefan van der Walt, and (viridis) Eric FiringEC/js/lpn-ramps.js; github.com/BIDS/colormap
4.12OpenStreetMap supplies the street basemap and Nominatim answers place-name search; Mapbox supplies satellite imagery and terrain elevationEC/CLAUDE.md: the four third-party requests, each opt-in
4.12aPublic domain under § 105 is a statement about United States law; the site says so in those words17 U.S.C. § 105 denies copyright to a US government work; the position outside the United States is not governed by it. Corrected 2026-09-06 after an editorial review pointed out that "in the public domain by operation of law" stood next to "a working engineer anywhere on earth"
4.13The third-party code is vendored; a copy travels with the software rather than being fetched while you work. The two services in 4.12 are not code and are fetched over the network, each behind its own consent gateEC/js/vendor/README.md: "Everything this site loads comes from this site. There is no CDN, no hosted font, and no third-party code of any kind." Map tiles are the stated data exception, and the site says the tiles come from those services Corrected 2026-09-06: the page previously said "all of them are vendored" over a list that included OpenStreetMap, Nominatim, and Mapbox, which was false. The list is now split, and the services carry their own paragraph saying they are off until turned on.
4.14ColorBrewer published 2002 by Brewer, Harrower, and Penn State, funded by the NSF Digital Government program through the GeoVISTA CenterWikipedia: ColorBrewer; ColorBrewer: Learn More, Penn State
4.15The schemes are designed per class count and tested for photocopying, projection, and colour-blind readersEC/js/lpn-ramps.js: "Brewer PUBLISHES a separate, individually designed set for each class count"; ColorBrewer: Learn More on display environments and colourblind-safe options
4.16Cynthia Brewer received the ICA Carl Mannerfelt Gold Medal in 2023Wikipedia: Cynthia Brewer; Penn State Geography directory
4.17The acknowledgement sentence is fixed by Apache-2.0 clause 2, and clauses 4 and 5 forbid using the name to endorse or promoteEC/js/lpn-ramps.js license block, which quotes clause 2 verbatim; the license text
4.18The FSF released GPL version 3 on 2007-06-29fsf.org/news/gplv3_launched; the license's own header, "Version 3, 29 June 2007"
4.19Net1, Net2, and Net3 are the example networks an EPANET-compatible program is checked againstEC/CLAUDE.md: .inp export "returns 1,280 numeric tokens across Net1/2/3 character-for-character"; EPA ships them with EPANET

5. What EPANET is, and where it lives now

Supports the description of the program itself and of its move to Open Water Analytics.

#ClaimSource
5.1EPANET performs extended-period simulation of hydraulic and water-quality behaviour in pressurised pipe networksWikipedia: EPANET, quoting the program's own description
5.2The four consequences of public domain (no license, no owner, anyone may take it private, cannot be withdrawn)Follows from 4.2. The "anyone may take it private" point is standard public-domain doctrine and is also what makes EPANET's engine embeddable in commercial products (4.6)
5.3A run report from our page prints a version higher than the one on EPA's download pageEC/js/vendor/README.md: "The run report prints it as 2.3.05 ... beside EPA's own download page, which still offers 2.2.0"
5.4Open development continues at github.com/OpenWaterAnalytics/EPANETThe repository itself

6. Stated on the site as unverified

Two things we could not settle. Both are marked as approximations where they appear.

  • The exact release date of EPANET 2.2. Wikipedia gives July 23, 2020. EC/js/vendor/README.md records "EPA's 2.2.0 of December 2019". We did not resolve which is right, so the site says around early 2020 and says in as many words that it is an approximation. Tom's ruling, 2026-09-06: an estimate a reader can use beats a refusal, as long as it is marked as one.
  • The exact administrative name of the EPA division. Sources give "Water Supply and Water Resources Division" (Wikipedia) and "Drinking Water Research Division" (the 1993 report abstract). The site says only "EPA's water research programme" and states that it did not verify the division name.

7. Constraints observed, and what they cost

Rules we are bound by, what each one made us write, and what it made us leave out.

  • Cynthia Brewer. The Apache-2.0 license on her schemes (see 4.17) fixes the wording of the acknowledgement and forbids using the project name to endorse or promote. The site therefore reproduces the required sentence verbatim, in English, untranslated, in its own box, and puts the name in no heading and in no product or control name. The one prose mention names the source of the colours, which is attribution and not promotion.
  • No live commercial trademark, and one deliberate exception. EC/dev/positioning.md §1 and ROADMAP task 296 ban naming competing products. Tom lifted it for this one name on 2026-09-06: epanet-js is a library we depend on, not a product we compete with, and the honest way to credit a library is to say what it is called. It is printed once, as a license credit; the tribute to everybody who has extended EPANET over thirty years sits above it and deliberately names nobody ("I preferred not to name any names in this paragraph"). The ban stands everywhere else, and no competing application is named anywhere on this site.
  • No claim about phones, no comparison with another product, and no completeness claim. All from EC/dev/positioning.md and the LibreWaterNet.org repository. The phone sentence left the site entirely on 2026-09-12, when the note that was its one sanctioned home was deleted; and no feature table here has always meant no comparison matrix against somebody else’s software, not the plain list of our own on the feature list.

8. Claims deliberately not made

Four things this site will not say, so that their absence reads as a decision rather than an oversight.

  • Any number for how many people use the software.
  • Any statement about what EPA thinks of this, or would think of it.
  • Any date, roadmap, or promise about future features.
  • Any statement that the software is as capable as EPANET, in any respect other than the specific measured agreements in rows 2.6 to 2.8.

9. The front page, the buttons, and this page itself

Supports the front page: what the editor does, what it costs, what the project is asking for, and the promise about outbound requests that this page is an answer to.

Added 2026-09-06, after a review found these assertions on the page with no row of their own.

#ClaimSource
9.1The network editor draws a looped network on a map, solves it, and saves or exports an EPANET fileEC/js/looped-network.js File menu: New, Open, Save, Import .inp, Import geo, lpn_file_export_inp. Corrected 2026-09-06: the page said "publish the drawing", and there is no publish, share, or image export
9.2Free, no sign-up, runs in your browser, in 27 languagesEC/CLAUDE.md: no database, no authentication, all computation client-side; EC/lib/lang.ec.*.php is 27 files
9.3The project is looking for advisors, bug reports, power users with wish lists, and non-profit directors, not for moneyEC/dev/positioning.md §1, Tom's own four phrases, used in his order
9.4It is a web page rather than a Windows programEPA distributes EPANET as a Windows program from its own page; this suite runs in a browser (EC/CLAUDE.md). Not a claim that EPANET is Windows-only, and the site does not make one
9.5No page makes any request to another server: no fonts, no scripts, no images, no analytics, no cookies, no storagecheck.sh, check 2, which fails the build on a cross-origin src, href, @import or url(), and on any storage call. Held by a script since 2026-09-06, having been held by somebody remembering until then: the sibling site made the same promise and was fetching three font families from Google the whole time. It is the claim a sceptical reader tests first
9.5bThe front page says "the screenshots are real", and the screenshots page says every frame can be reproduced from the examples the software ships withEvery published frame is a real capture of the program running in a browser, vetted one by one in EC/dev/screenshots/INDEX.md, which records for each what is in it, whether it may be published, and why. Nothing is composited, retouched or drawn. EC/dev/scripts/screenshot_publish_check.php holds the other half: it compares each published file against the one the index says was published, so a frame cannot be quietly swapped. The reproducibility half is the stronger claim and is the one a reader can test without us: the networks are EPA’s Net1, Net2 and Net3 and the shipped Elm Street Center, all in the examples gallery. Two frames are older than the software and say so at EC/dev/screenshots/INDEX.md row 0082: the lead image carries a navigation bar that has since been removed and a Libraries box that predates its Fittings section. Older is not staged, but it is not current either, and a re-shoot is filed as Task 634.
9.6EPANET runs an instant or a weekFollows from 5.1: extended-period simulation with a user-set duration
9.7This page exists because the site says every claim is checkableThe site said so before this page existed, which was the defect that produced it