# DLR Independent Verification Report

## Scope

This report samples the DLR extracted rows against persisted primary-source text produced by `extract_dlr.py`.

Primary source family: Repeatable source family: Digital Realty investor relations quarterly supplement and earnings release materials.

Primary source URL:

https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a

Companion verification artifacts:

- `source_manifest.csv`
- `source_cache_manifest.json`
- `verification_sample_checks.csv`
- `verification_summary.json`
- `validation_report.json`

## Verification Summary

Status: PASS

sampled_row_count: 12  
pass_count: 12  
fail_count: 0  
rows_matched_to_cached_source_text: 12  

## Method

`extract_dlr.py` fetches primary source files into `sources/raw/`, converts them into persisted text files under `sources/text/`, and extracts rows from those cached text files using repeatable line-pattern matching. The extraction no longer emits rows from embedded snippet constants.

`validate_dlr.py` independently reloads `source_cache_manifest.json`, reads the persisted text files, and confirms that every sampled verification snippet and every extracted row snippet is present in cached source text.

## Sample Checks

| row_id | company | period | metric_name | raw_value | normalized_value | source_url | verdict | confidence |
|---:|---|---|---|---:|---:|---|---|---|
| 1 | DLR | 2026Q1 | live_capacity | 3,024 | 3024 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 2 | DLR | 2026Q1 | live_capacity | 2,408 | 2408 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 3 | DLR | 2026Q1 | capacity_added_this_quarter | 3,024 - 2,963 | 61 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 4 | DLR | 2026Q1 | capacity_under_construction | 1,169 | 1169 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 7 | DLR | 2026Q1 | future_capacity_pipeline_total | 4,640 + 540 | 5180 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | medium |
| 8 | DLR | 2026Q1 | pre_leased_percentage | 61% | 61 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 9 | DLR | 2026Q1 | backlog_rpo_annualized_base_rent | $1.8 billion | 1800000000 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 10 | DLR | 2026Q1 | backlog_rpo_annualized_base_rent | $1.0 billion | 1000000000 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 11 | DLR | 2026Q1 | lease_commitments_bookings_capacity | 312.8 | 312.8 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 12 | DLR | 2026Q1 | lease_commitments_bookings_annualized_base_rent | $422,774 thousand | 422774000 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 13 | DLR | 2026Q1 | expected_commencement_window | nineteen months | 19 | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |
| 16 | DLR | 2026Q1 | capex_guidance_development_net_partner_contributions | $3,500 - $4,000 million | [3500000000,4000000000] | https://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2a | PASS | high |

## Normalization Cases

Several USD rows are reported in tables as dollar amounts in thousands and normalized to full USD in `extracted_rows.json`. These are expected normalization cases, not unsupported values:

1. `$422,774 thousand` normalized to `422774000`
2. `$729,959 thousand` normalized to `729959000`
3. `$795,384 thousand` normalized to `795384000`
4. `$2,980,028 thousand` normalized to `2980028000`

## Verification Conclusion

The artifact set now supports a repeatable audit path: source URLs are listed in `source_manifest.csv`, raw and text cache files are recorded in `source_cache_manifest.json`, extraction reads cached source text, and validation checks cited snippets against the persisted source text rather than trusting generated row snippets alone.
