# AsbestosAtlas v1.6 Integrity Audit and Ships Pilot Gate

**Prepared for:** Charles Fletcher  
**Prepared by:** Manus AI  
**Date:** September 14, 2026  
**Audited release:** *U.S. Shipyard Asbestos Exposure Dataset v1.6*, DOI `10.5281/zenodo.22313866`  
**Canonical JSON SHA-256:** `c14cabc38b7bc0301b27611aa92c8bc363517c2cd28e66bbc4119d92a50c54fd`

## Executive decision

The submitted review is **substantially correct and identifies release-blocking defects**. The published archive is technically intact—the deposited checksums pass, the three CSV files parse, and the declared counts of 37 yard rows, 118 evidence rows, and 74 employment rows are reproducible—but the data is not referentially or semantically release-clean. The phrase “118 verified findings” is especially unsafe: the evidence table contains **109 `verified`, 3 `disputed`, 3 `verification_needed`, 2 `unverified`, and 1 `partial`** records. Some records are corrections, archival leads, non-asbestos contextual studies, or records with no yard foreign key. The site should describe these as **118 evidence records**, not 118 verified findings.[1] [2]

The ships pilot should proceed only as a **schema-and-evidence-modeling exercise** until the yard dataset passes a v1.7 release gate. Devin’s prose can remain source material, but no ship-specific claim should enter the Atlas as untyped narrative. The ship model should use stable ship IDs, typed evidence rows, source IDs, documentation level, verification status, page or archival locator, and a limitations note. Vessel-to-yard relationships should be their own sourced relationship records. This preserves the strongest discipline in the current project while preventing the pilot from inheriting v1.6’s broken joins and mixed record shapes.

No live-site, Zenodo, canonical-domain, or publication change was made during this audit.

## What was verified

The audit used the exact v1.6 ZIP deposited on Zenodo. Its MD5 matched the public record, and every SHA-256 value inside `checksums.sha256` passed. The canonical JSON and CSVs contain the declared row counts.[1]

| Check | Result |
|---|---:|
| Registry rows / unique `yard_id` values | 37 / 37 |
| Evidence rows / unique `evidence_id` values | 118 / 118 |
| Employment rows | 74 |
| Canonical nested evidence rows | 118 |
| Malformed CSV rows | 0 |
| Deposit checksum failures | 0 |
| Evidence records marked `verified` | 109 |
| Evidence records not marked `verified` | 9 |

Passing file-integrity checks do not cure the semantic problems below. They prove only that the published files are intact copies of what was deposited.

## Assessment of the submitted defect list

| # | Assessment | Verified result and required treatment |
|---:|---|---|
| 1 | **Confirmed, with one factual correction** | `sun-shipbuilding` and `sun-shipbuilding-chester` are duplicate records for the Chester, Pennsylvania facility. They disagree on opening year and duplicate the same *Lilley* opinion. However, the conclusion that Pabco and Raybestos are absent from the opinion is incorrect. The opinion names Pabco and Raybestos through Samuel Wasson’s corroborating testimony, and separately discusses Fibreboard’s Pabco and Caltemp products.[6] Merge the yard records, retain those products with precise witness-level provenance, and remove the erroneous limitation statement. |
| 2 | **Confirmed; strict result is worse** | Sixteen flagship IDs do not exist anywhere in the evidence table. A seventeenth, Brooklyn’s `ev-brooklyn-navy-yard-04`, exists but has a blank `yard_id`, so it fails a strict same-yard foreign-key check. Tampa Bay and Washington have nonexistent flagship IDs despite zero evidence rows. |
| 3 | **Confirmed** | Eighteen evidence records have a blank `yard_id`. Their parent yard can usually be recovered from canonical JSON nesting, but the flat evidence table breaks the declared relationship. |
| 4 | **Confirmed** | Ten evidence records have an empty `finding_value`. Several instead use legacy fields such as `finding`, `finding_summary`, `population_description`, or `time_period` in canonical JSON. This is schema drift, not just missing copy. |
| 5 | **Confirmed** | Twenty-two records have no `limitations_note`. A generic statement such as “verify against original study” is not an adequate source-specific limitation and should not coexist with `verification_status=verified`. |
| 6 | **Directionally correct but understated** | No authoritative machine-readable schema is included in the deposit, so a strict vocabulary verdict is impossible. Against the historical schema plus explicit v1.6 categories, the data contains **7 noncanonical `finding_type` labels across 8 records** and **11 noncanonical `citation_type` labels across 15 records**. The issue is broader than three rows. |
| 7 | **Confirmed in part; do not deduplicate by citation alone** | Clear redundancy exists for Pearl Harbor and Portsmouth. PMID 4016758 appears in two Pearl Harbor records; PMID 7918819 appears in three, not two. Portsmouth PMIDs 3337077 and 19378213 each appear twice. The three Puget Sound rows citing DTIC `AD0715808` state different findings from one source, so they should become one source joined to multiple claims rather than being blindly collapsed. The peer-reviewed follow-up should remain a separate source if it is a distinct publication. |
| 8 | **Confirmed** | Tampa Bay Shipbuilding and Washington Navy Yard have zero evidence rows. Tampa nevertheless has Tier 3 and multiple product assertions. Washington has no tier. Registry retention is defensible, but the public copy must call them registry-only or evidence-gap records rather than yards with documented asbestos exposure. |
| 9 | **Confirmed** | `evidence_tier` is blank for Alabama Dry Dock and Washington Navy Yard. Alabama now has an OSHA record and therefore needs a rule-derived tier; Washington should remain `not_assigned` or equivalent until qualifying evidence exists. |
| 10 | **Confirmed** | `superfund_status` uses `Never Listed` for 19 yards and `Not Listed` for 9. If these are synonyms, normalize them. If they represent distinct temporal claims, define both and store an `as_of_date` plus the supporting EPA identifier or lookup record. |
| 11 | **Confirmed and not isolated** | Bethlehem contains two 1943 peak values—180,000 and 300,000—from the same source ID, with blank notes. Kaiser contains two additional unannotated same-period/source conflicts: 200,000 versus 79,000 for 1944 and 90,000 versus 13,000 versus 12,000 for 1945. These likely mix corporate networks with individual yards, but the source ledger is absent, so the scope cannot be resolved from the deposit. |
| 12 | **Confirmed** | `todd-shipyards` is a corporate aggregation located as `Brooklyn, TX` while its coordinates are in Brooklyn, New York. Its evidence is multi-location and one OSHA record is explicitly limited to San Francisco. It should not remain a physical-yard row. |
| 13 | **Confirmed as an entity-model problem** | Kaiser aliases include Oregon Shipbuilding Corporation and Swan Island Shipyard while Oregon Shipbuilding has its own record. Bethlehem aliases include Fore River Shipyard while Fore River has its own record. These should be modeled as parent organization–facility relationships or clearly scoped aggregates, not counted as independent yards alongside their component yards. |
| 14 | **Confirmed and broader** | Five records use a law-firm or secondary-media host as the direct citation URL: `worthingtoncaron.com`, `harrismartin.com`, `simmonsfirm.com`, `legalnewsline.com`, and `insurancejournal.com`. This conflicts with the live methodology’s source hierarchy.[3] The Fleischer paper should cite PMID 21016030 as the primary identifier; a law-firm-hosted scan may be retained only as a labeled convenience mirror, not the authoritative source. |
| 15 | **Partly confirmed** | The two evidence-ID typos are present: `ev-boston-naval-shipyar-02` and `ev-philadelphia-naval-s-02`. No literal string `None` occurs as `citation_value` in the deposited v1.6 files; instead, `ev-todd-02` and `ev-todd-03` have blank citation values. Preserve old IDs through an alias/deprecation map rather than silently changing identifiers. |
| 16 | **Confirmed** | Portsmouth’s flagship is PMID 6109897, a radiation/leukaemia mortality study with a null result and no asbestos endpoint. It is inappropriate as the flagship of an asbestos record.[11] PMID 3337077 is the stronger yard-specific asbestos-related candidate.[9] |

The coverage counts in the submitted review are also reproduced: **20 missing citation URLs, 20 missing populations, and 13 missing study periods**.

## Additional defects found

### Public claims and public rendering

The homepage, data page, and journalists page call the dataset’s 118 rows “verified findings,” although nine rows do not have `verification_status=verified`.[2] [5] The journalists page also calls all 37 entries “shipyards with documented asbestos exposure,” despite two records having no evidence rows.[5]

The evidence-tier page displays **0 shipyards** for Tier 1, Tier 2, and Tier 3, even though the registry contains 7 Tier 1, 11 Tier 2, 17 Tier 3, and 2 blank-tier records. The same page says the two zero-evidence yards are Alabama Dry Dock and Washington Navy Yard, but the actual zero-evidence yards are Tampa Bay Shipbuilding and Washington Navy Yard.[4]

At least the Tampa Bay and Washington profile pages still display **Dataset v1.5** provenance and link to the v1.5 DOI inside pages otherwise branded as v1.6. The application bundle also contains stale v1.5 strings.

The JSON-LD distribution advertises `https://asbestosatlas.org/data/shipyards.json`, but that URL returns the application HTML shell rather than JSON. Direct guessed CSV paths behave the same way. If the CSV controls generate client-side blobs, the site still lacks stable file URLs corresponding to the JSON-LD `contentUrl` claim.

### Missing release artifacts and unresolved source relationships

The v1.6 deposit contains no machine-readable schema, no source ledger, and no standalone changelog. The live `/schema` and `/changelog` routes return the homepage shell. This is material because the employment table contains `source_id` values that cannot be joined to a deposited source table. It also prevents objective validation of controlled vocabularies.

The canonical JSON contains **11 distinct evidence object shapes**. Seventy-five records use the intended full shape, while the rest vary through missing fields or legacy names such as `finding_summary`, `finding`, `population_description`, and `time_period`. The CSV export flattens those variants into blanks rather than normalizing them.

### Product-count and provenance ambiguity

The advertised “87 documented products” is actually **87 detailed product rows**, representing **66 case-normalized product names**. Sixteen of the 87 rows have no `product_id`, and only 23 of 37 yards have a detailed `products_documented` array. The remaining 14 yards still publish free-text and normalized product claims without record-level product provenance in the deposited canonical JSON. The public wording should say “87 product records” unless a documented deduplication rule supports a distinct-product count.

### Material evidence-quality problem beyond duplicate rows

PMID 7342758 does not name Bethlehem, Baltimore, Sparrows Point, or any individual shipyard in its PubMed record. It reports 86% radiological evidence of asbestosis among 286 ship-repair workers.[12] The dataset nevertheless assigns it to Bethlehem and states “Bethlehem Steel’s Baltimore shipyard workers” and “4 out of 5 workers,” both as verified. Those rows should be quarantined unless the full text supplies a defensible named-yard key. This matches the project’s standing rule that cross-yard research cannot be attributed to a single yard without explicit evidence.

## Required v1.7 remediation sequence

| Priority | Required work | Acceptance criterion |
|---|---|---|
| **P0** | Publish a visible v1.6 erratum and stop calling all 118 rows verified. | Public pages distinguish total records, verified records, qualifying yard evidence, correction records, and evidence gaps. |
| **P0** | Establish one canonical source-of-truth build input. | JSON, CSV, pages, JSON-LD, and release manifest are generated from the same normalized data and produce matching counts. |
| **P0** | Restore referential integrity. | Every evidence row has a valid `yard_id`; every flagship points to an existing, same-yard, qualifying evidence row; every employment `source_id` resolves in the deposited source ledger. |
| **P0** | Ship and enforce a versioned schema. | Zero schema errors, one controlled vocabulary per enumerated field, and no legacy field aliases in released records. |
| **P0** | Separate support from correction and context. | Add `evidence_role` such as `supporting`, `negative_finding`, `correction`, `context`, or `archival_lead`; only verified supporting records can determine tiers or flagships. |
| **P0** | Resolve entity identity. | Merge the duplicate Sun yard; model Todd, Bethlehem, and Kaiser as organizations or explicitly scoped aggregates; physical facilities remain uniquely counted. Legacy IDs survive in an alias/deprecation table. |
| **P1** | Reconcile duplicate studies. | One source ledger row per publication/report, with one-to-many claim rows where the source supports materially distinct findings. Redundant restatements are removed or deprecated with successor IDs. |
| **P1** | Re-verify source hygiene. | Primary URLs replace five secondary/law-firm URLs; any unreplaced claim becomes `verification_needed` and cannot drive a tier or flagship. |
| **P1** | Resolve employment conflicts. | Every conflicting value has a scope, unit, population, period, source locator, and conflict note; aggregates are not represented as facility peaks. |
| **P1** | Normalize product records. | Every product assertion has a stable product-record ID, yard ID, source ID, source locator, period, verification status, and limitation. Counts distinguish rows from unique products. |
| **P1** | Repair public data access and counters. | Tier counts, zero-evidence lists, DOI/version labels, and JSON/CSV URLs are verified by automated tests against production responses. |
| **P2** | Reconcile creator and reviewer metadata. | Zenodo creator/editor/reviewer fields match dated contribution records. Do not infer scientific or legal review from titles or sponsorship. |

> **Release rule:** v1.7 should not be deposited merely because all cells are filled. It should be deposited only after every released claim has a defined role, valid relationships, an eligible source, and a source-specific limitation.

## Draft public erratum language

> **Known issues in v1.6:** A post-release integrity audit identified duplicate facility records, broken flagship references, missing yard foreign keys, incomplete required fields, unresolved duplicate-study records, and inconsistencies between public counters and the deposited tables. Version 1.6 remains preserved for citation integrity but should not be used as the current analytical release. A corrected successor will retain stable identifiers through an explicit deprecation and replacement map. Until that release, users should verify individual records against the cited primary source and should not interpret record counts or evidence tiers as exposure severity, individual exposure, causation, or legal eligibility.

This text is a draft only. Posting it would be a public action and was not authorized in this task.

## Ships pilot: approved data shape, not article shape

The ship pilot should reuse the Atlas’s intended evidence discipline but not its current implementation defects. The minimum model should contain three linked tables.

| Table | Required fields |
|---|---|
| `ships` | `ship_id`, canonical name, aliases, hull number, class, service dates, disposition, and record status |
| `ship_evidence` | `ship_evidence_id`, `ship_id`, typed claim, `documentation_level`, `source_id`, page/table/archive locator, verification status, evidence role, and source-specific limitations |
| `ship_shipyard_relationships` | `relationship_id`, `ship_id`, `yard_id`, relationship type such as built/overhauled/repaired, date range, `source_id`, locator, verification status, and limitations |

`documentation_level` should be an explicit enum: `ship_specific`, `class_or_era`, or `context_only`. Only `ship_specific` evidence may support wording such as “documented aboard this hull.” Class-era evidence must be written as class-era evidence, and absence of ship-specific evidence must remain unknown rather than presumed. Narrative service summaries may be generated from these records, but they cannot substitute for them.

The existing `related_shipyards` slugs are useful only after yard identity is normalized. Links to `brooklyn-navy-yard`, `long-beach-naval-shipyard`, `puget-sound-naval-shipyard`, and `norfolk-naval-shipyard` resolve today, but the relationship itself still needs a source and date range. The pilot should therefore continue with schema mapping and evidence extraction, but publication should wait for the v1.7 yard release gate.

## Review status and next step

This audit verifies structural and selected source-level issues against the published v1.6 archive and live public pages. It is **not** a complete scientific re-verification of all 118 records, a legal review, or an EPA-status refresh. The most useful next step is to obtain the current source repository or canonical build input and apply the P0 repairs in a non-public v1.7 release candidate. If no repository is available, the Zenodo JSON can be normalized into a new source-of-truth draft while preserving old IDs in a migration table. Publication of an erratum, live-site changes, or a new Zenodo version requires separate authorization.

## References

[1]: https://doi.org/10.5281/zenodo.22313866 "U.S. Shipyard Asbestos Exposure Dataset v1.6"
[2]: https://asbestosatlas.org/ "Asbestos Atlas — U.S. Shipyard Exposure Map"
[3]: https://asbestosatlas.org/methodology "Asbestos Atlas Methodology"
[4]: https://asbestosatlas.org/evidence "Asbestos Atlas Evidence Tiers"
[5]: https://asbestosatlas.org/for-journalists "Asbestos Atlas for Journalists and Researchers"
[6]: https://law.justia.com/cases/pennsylvania/superior-court/1991/408-pa-super-83-2.html "Lilley v. Johns-Manville Corp., 408 Pa. Super. 83 (1991)"
[7]: https://pubmed.ncbi.nlm.nih.gov/4016758/ "Cancer occurrence in shipyard workers exposed to asbestos in Hawaii"
[8]: https://pubmed.ncbi.nlm.nih.gov/7918819/ "A case-control study of mesothelioma and employment in the Hawaii sugarcane industry"
[9]: https://pubmed.ncbi.nlm.nih.gov/3337077/ "Case-control study of lung cancer in civilian employees at the Portsmouth Naval Shipyard"
[10]: https://pubmed.ncbi.nlm.nih.gov/19378213/ "Summary of retrospective asbestos and welding fume exposure estimates for a nuclear naval shipyard"
[11]: https://pubmed.ncbi.nlm.nih.gov/6109897/ "Cancer mortality at a Naval Nuclear Shipyard"
[12]: https://pubmed.ncbi.nlm.nih.gov/7342758/ "Radiological evidence of asbestos disease among ship repair workers"
