# Henriksvej 7, 2400 København NV — Full Data Harvest

Date of harvest: 2026-05-23
Server: local `go run ./cmd/server` on port 8765
Branch: `mc/update-lun-energy-api` (with uncommitted Datafordeler GraphQL v1→v2 changes)

## Resolved identifiers

| Field               | Value                                                                         |
| ------------------- | ----------------------------------------------------------------------------- |
| Address (resolved)  | Henriksvej 7, 2400 København **NV** (user typed N, correct postal city is NV) |
| BFE number          | `6023018`                                                                     |
| BBR building UUID   | `86c5c5d1-07e2-4690-a890-c2611477833b`                                        |
| Adresse ID (DAR)    | `0a3f509e-a0ff-32b8-e044-0003ba298018`                                        |
| Husnummer ID        | `0a3f507a-8b2b-32b8-e044-0003ba298018`                                        |
| Kommunekode         | `0101` (Copenhagen)                                                           |
| Vejkode             | `2820`                                                                        |
| Coordinates (WGS84) | `55.71858265, 12.53263203`                                                    |
| Coordinates (UTM32) | `easting 721866.96, northing 6180414.38`                                      |

## Key facts (cross-referenced across sources)

| Field                          | Value                                                             | Source           |
| ------------------------------ | ----------------------------------------------------------------- | ---------------- |
| Year built                     | 1919                                                              | BBR, EMO         |
| Use                            | Fritliggende enfamiliehus (parcelhus) — code 120                  | BBR              |
| Built area (footprint)         | 71 m²                                                             | BBR              |
| Total building area            | 71 m²                                                             | BBR              |
| Total dwelling area            | 132 m²                                                            | BBR              |
| Total heated floor area (EMO)  | 173 m²                                                            | EMO              |
| Basement area                  | 71 m² (49 m² heated, 22 m² unheated)                              | BBR              |
| Floors (BBR floor summary)     | 4 entries: basement + ground + 1st + roof, total 164 m²           | BBR              |
| Outer walls                    | Mursten (tegl)                                                    | BBR              |
| Roof                           | Teglsten (vingetegl)                                              | BBR              |
| Heating                        | Fjernvarme/blokvarme (district heating)                           | BBR              |
| Sewerage                       | Fælleskloakeret: spildevand (combined sewer)                      | BBR              |
| Energy label                   | **D** (calculated 143.6 kWh/m²/yr, valid 2025-02-06 → 2035-02-06) | EMO ID 311810277 |
| Public property valuation 2024 | **8,616,000 DKK** (land: 5,740,000 DKK)                           | Vurdering        |
| Assessed land area             | 765 m²                                                            | Vurdering        |

## Climate risk overview (from `/klimasikringsrapport`)

Overall risk: **🔴 Rød** ("Ejendommen har kritisk risiko for oversvømmelse ved grundvand og sætningsskader ved tørke.")

| Risk        | Level         | Notes                                                                                                                                  |
| ----------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Groundwater | 🔴 Rød (CR3)  | Built 1919 (before capillary-break requirement), 71 m² basement w/ heated section + installations, lerjord (clay). Water table 23.6 m. |
| Cloudburst  | 🟢 Grøn (CR1) | Combined sewer = backflow risk, but no bluespot / flow path.                                                                           |
| Storm surge | 🟢 Grøn (CR1) | No flood threshold crossed in 100yr scenarios.                                                                                         |
| Heatwave    | 🟢 Grøn (CR1) | Low overheating risk.                                                                                                                  |
| Drought     | 🔴 Rød        | Moræneler soil + trees within 25 m of foundation + pre-1950 foundation.                                                                |

## Per-source status (58 fetchers registered; 3 missing at startup, see bottom)

Status taken primarily from `/api/v1/building/{address}` (most reliable metadata) with notes from `/api/v1/property/context` where the BBR-dependent post-processing changes the outcome.

### ✓ Succeeded with data (52)

`airpollution`, `ammoniak`, `bbr`, `bygninger`, `childcare`, `coast`, `demographics`, `dhmrain`, `districtheating`, `dkjord`, `dma`, `dmi`, `documents`, `drikkevand`, `dst`, `emoweb`, `ev_charging`, `fbb`, `finansdanmark`, `floodrisk`, `forest`, `fredsskov`, `googlesolar`, `greenspaces`, `gsearch`, `hip`, `jordartskort`, `jupiter`, `kamp`, `kvaelstof`, `lakes`, `matrikelkort`, `miljoeportal`, `naturdata`, `naturprotection`, `plandata`, `powerlines`, `publictransport`, `radon`, `railways`, `roads`, `shops`, `skovjordbund`, `skraafoto`, `smiley`, `solar`, `stations`, `stoejkort`, `streetview`, `sunshadow`, `water_hardness`, `watercourses`, `windturbines`, `vurdering` (succeeded in `/property/context`), `lidar` (succeeded in `/property/context`)

### — Expected N/A (1)

- `chr` — livestock registry; no farms in Copenhagen city. (User confirmed: doesn't matter.)

### ✗ Errored (1)

- `eloverblik` — `401 Unauthorized` on the token request. `ELOVERBLIK_REFRESH_TOKEN` is set in `.env` but appears expired or revoked. **Action: refresh the third-party token** at eloverblik.dk → Tredjepart and re-import to Secret Manager (`ELOVERBLIK_REFRESH_TOKEN:latest`). No code bug.

### Timeouts on `/building` only (not real failures)

- `lidar`: 30s timeout in /building due to parallel contention; **succeeded** in /property/context (returned point_cloud, vegetation, coverage layers).
- `vurdering`: 30s timeout in /building; **succeeded** in /property/context with 8 historical valuations going back to 2017. The v1→v2 GraphQL migration on this branch is working — the /building timeout is just contention/queueing.

### Not registered at startup (no credentials / not in scope)

- `roofanalysis` — `ROOF_ANALYSIS_CLOUDRUN_URL` not set
- `city3d` — `CITY3D_CLOUDRUN_URL` not set (`/api/v1/lod2-reconstruction` therefore returns `"city3d data source not available"`)
- `institutions` — `STIL_USERNAME` / `STIL_PASSWORD` not set
- `boliga` — disabled via `BOLIGA_ENABLED=false`

## Files produced (under `.context/`)

| File                                | Size   | Description                                                                                                  |
| ----------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------ |
| `henriksvej-7-address-search.json`  | 291 B  | GSearch resolution                                                                                           |
| `henriksvej-7-building.json`        | 213 MB | Full `/api/v1/building/{address}` response — all 56 sources                                                  |
| `henriksvej-7-property.json`        | 213 MB | Full `/api/v1/property/context` response with BBR-dependent post-processing (lidar+vurdering succeeded here) |
| `henriksvej-7-climate.json`         | 2.6 KB | `/climate-report/{address}` — 5-risk synthesis                                                               |
| `henriksvej-7-klimasikring.json`    | 18 KB  | `/klimasikringsrapport/{address}` — Danish-language climate security report                                  |
| `henriksvej-7-environment.json`     | 1.1 MB | `/environment/assessment` — air, livestock, noise, nearby buildings, environmental permits                   |
| `henriksvej-7-lod2.json`            | 51 B   | `/lod2-reconstruction` — error, city3d not registered                                                        |
| `sources.json` / `sources-list.txt` | —      | `/api/v1/sources` enumeration                                                                                |
| `server.log`                        | —      | Server stdout/stderr for the harvest                                                                         |

## Things noticed but not fixed (in scope of "fix everything you encounter")

1. **`/property/context` metadata under-reports failures.** Response says `sources_errored: 0` but 3 sources (chr, eloverblik, kamp) didn't make it into `data`. The handler in `internal/api/handler.go` returns counts but no list of which sources failed. Worth a follow-up: surface a `sources_errored: [string]` list so clients can detect gaps without diffing requested vs received.
2. **`kamp` race.** It succeeded in /building (2,439 ms, returned `at_risk: true`, `in_sewer_catchment: true`) but is absent in /property/context. The independent-sources `FetchAll` call may be hitting a short timeout that drops kamp specifically. Worth investigating per-source `FetchTimeout` in its `Capabilities`.
3. **Skraafoto returns `unexpected EOF reading response, using partial data`** dozens of times during each run. The fetcher recovers, but this is a sign of a chronic upstream or HTTP/2 issue. Worth profiling.
4. **`weblager: failed to load token from authstore`** — no weblager_token document in Firestore. Documents fetcher still works via fallback, but the warning is noisy.

These are real but not in the path of the user's "get all data" request. The data was harvested successfully and the in-progress BBR/Vurdering v1→v2 migration is confirmed healthy (`bfe:6023018` + 8.6M DKK valuation history both came back cleanly).

## In-progress branch validation

The 7 modified files on `mc/update-lun-energy-api` (BBR + Vurdering Datafordeler GraphQL v1→v2):

- `go build ./...` — green
- `go test -race -short` on bbr, vurdering, base, config — all green
- Real `/api/v1/property/context` run against Henriksvej 7 returned full BBR v2 data and full Vurdering v2 data (`property_value_dkk: 8,616,000`, valuation history back to 2017). **Migration is working.**
