@mailwoman/corpus 10.3.0 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/README.md +17 -17
  2. package/data/PROVENANCE.md +273 -273
  3. package/data/address-source-register.json +517 -23
  4. package/data/license-decisions.json +120 -0
  5. package/data/licenses/PROVENANCE.md +5 -5
  6. package/data/licenses/cdla-permissive-2.0.md +6 -6
  7. package/data/licenses/geonames-publication.md +5 -5
  8. package/data/licenses/licence-ouverte-2.0.md +3 -3
  9. package/data/licenses/national-address-database.md +12 -12
  10. package/data/licenses/nlod-2.0.md +3 -3
  11. package/data/licenses/sirene-publication.md +13 -6
  12. package/data/licenses/whosonfirst-licenses.md +4 -4
  13. package/data/source-resolutions.json +11 -0
  14. package/lib/adapters/cordis/adapter.ts +8 -8
  15. package/lib/adapters/gleif/adapter.ts +7 -8
  16. package/lib/adapters/po-box/adapter.ts +1 -1
  17. package/lib/adapters/source-id.ts +1 -1
  18. package/lib/adapters.ts +2 -2
  19. package/lib/au/adapters/gnaf/adapter.ts +1 -1
  20. package/lib/be/adapters/brussels/adapter.ts +2 -2
  21. package/lib/be/adapters/vlaanderen/adapter.ts +1 -1
  22. package/lib/build.ts +1 -1
  23. package/lib/cz/adapters/cuzk/adapter.ts +1 -1
  24. package/lib/cz/tools/fetch/cuzk.ts +4 -4
  25. package/lib/de/recipes/locale.ts +1 -1
  26. package/lib/dk/adapters/inspire/adapter.ts +1 -1
  27. package/lib/ee/tools/fetch/ads.ts +2 -2
  28. package/lib/es/adapters/bizkaia/adapter.ts +1 -1
  29. package/lib/es/adapters/navarra/adapter.ts +2 -2
  30. package/lib/es/cadastre.ts +2 -2
  31. package/lib/es/tools/fetch/bizkaia.ts +7 -7
  32. package/lib/es/tools/fetch/catastro.ts +6 -6
  33. package/lib/es/tools/fetch/navarra.ts +4 -4
  34. package/lib/fingerprints.ts +3 -3
  35. package/lib/fr/adapters/finess/adapter.ts +6 -5
  36. package/lib/fr/adapters/finess/voie-type.ts +1 -1
  37. package/lib/fr/tools/fetch/annuaire-education.ts +3 -3
  38. package/lib/gb/constituent-country.ts +52 -0
  39. package/lib/inspire/address.ts +3 -3
  40. package/lib/international/recipes/locale.ts +41 -7
  41. package/lib/it/adapters/anac/adapter.ts +4 -3
  42. package/lib/jp/adapters/wof-admin/adapter.ts +2 -2
  43. package/lib/kr/adapters/juso/label-rows.ts +1 -1
  44. package/lib/kr/adapters/localdata/key-index.ts +2 -1
  45. package/lib/lu/adapters/bd-adresses/adapter.ts +1 -1
  46. package/lib/nl/adapters/kadaster/adapter.ts +2 -2
  47. package/lib/nl/tools/fetch/kadaster.ts +1 -1
  48. package/lib/parquet/shuffle.ts +2 -2
  49. package/lib/parquet/span-sql.ts +8 -6
  50. package/lib/parquet/streams.ts +1 -1
  51. package/lib/parquet/writers.ts +2 -2
  52. package/lib/pl/tools/fetch/emuia.ts +2 -2
  53. package/lib/recipes/scaffold.ts +2 -2
  54. package/lib/recipes/sources.ts +3 -3
  55. package/lib/recipes/sub/venue/render.ts +1 -1
  56. package/lib/recipes/sub/venue/sources.ts +4 -3
  57. package/lib/recipes/sub/venue.ts +4 -3
  58. package/lib/recipes/venue.ts +11 -11
  59. package/lib/ro/adapters/retea-scolara/adapter.ts +2 -2
  60. package/lib/runner.ts +3 -3
  61. package/lib/sk/tools/fetch/inspire.ts +3 -3
  62. package/lib/source-register/effective-manifest.ts +2 -2
  63. package/lib/source-register/types.ts +2 -2
  64. package/lib/subvenue/harvest.ts +6 -5
  65. package/lib/subvenue/promotions.ts +3 -3
  66. package/lib/subvenue/table.ts +6 -6
  67. package/lib/surfaces/locale.ts +1 -1
  68. package/lib/synthesizers/anchor-absorption.ts +1 -1
  69. package/lib/synthesizers/boundary-stress.ts +3 -2
  70. package/lib/synthesizers/no-street.ts +1 -1
  71. package/lib/synthesizers/po-box.ts +1 -1
  72. package/lib/synthesizers/tail.ts +2 -2
  73. package/lib/test-kit/corpus-recipe.ts +1 -1
  74. package/lib/tools/align-canonical.ts +3 -2
  75. package/lib/tools/audit.ts +1 -1
  76. package/lib/tools/corpus-stats.ts +1 -1
  77. package/lib/tools/fetch/download/network.ts +1 -1
  78. package/lib/tools/fetch/geonames/dump.ts +1 -1
  79. package/lib/tools/fetch/gleif.ts +1 -1
  80. package/lib/tools/fetch/header.ts +1 -1
  81. package/lib/tools/fetch/inspire-addresses.ts +1 -1
  82. package/lib/tools/fetch/vlaanderen-ad.ts +1 -1
  83. package/lib/tools/fetch/wfs-harvest.ts +6 -6
  84. package/lib/tools/fetch/zip-archive.ts +2 -2
  85. package/lib/tools/golden/expand.ts +1 -1
  86. package/lib/tools/golden/promote.ts +3 -3
  87. package/lib/tools/golden/relabel-street/directory.ts +2 -1
  88. package/lib/tools/lint/recipe-output/vocab.ts +2 -2
  89. package/lib/tools/overlay/manifest.ts +62 -10
  90. package/lib/tools/overlay/split-slice.ts +2 -10
  91. package/lib/tools/postcode-triples.ts +2 -2
  92. package/lib/tools/sub/venue/head-nouns.ts +4 -3
  93. package/lib/types.ts +3 -3
  94. package/lib/us/adapters/state/tx-notaries/adapter.ts +1 -1
  95. package/lib/us/adapters/usgov/irs-bmf/adapter.ts +2 -2
  96. package/lib/us/adapters/usgov/nppes/adapter.ts +1 -1
  97. package/lib/us/synthesizers/intersection.ts +4 -4
  98. package/lib/us/synthesizers/street.ts +3 -3
  99. package/lib/us/tools/fetch/nad.ts +2 -2
  100. package/lib/utils/split.ts +59 -6
  101. package/lib/utils/wof-json.ts +1 -1
  102. package/out/adapters/cordis/adapter.d.ts +7 -7
  103. package/out/adapters/cordis/adapter.js +8 -8
  104. package/out/adapters/cordis/adapter.js.map +1 -1
  105. package/out/adapters/gleif/adapter.d.ts +7 -8
  106. package/out/adapters/gleif/adapter.d.ts.map +1 -1
  107. package/out/adapters/gleif/adapter.js +7 -8
  108. package/out/adapters/gleif/adapter.js.map +1 -1
  109. package/out/adapters/po-box/adapter.d.ts +1 -1
  110. package/out/adapters/source-id.d.ts +1 -1
  111. package/out/adapters/source-id.js +1 -1
  112. package/out/adapters.d.ts +2 -2
  113. package/out/adapters.js +2 -2
  114. package/out/au/adapters/gnaf/adapter.js +1 -1
  115. package/out/be/adapters/brussels/adapter.d.ts +1 -1
  116. package/out/be/adapters/brussels/adapter.js +2 -2
  117. package/out/be/adapters/vlaanderen/adapter.d.ts +1 -1
  118. package/out/build.js +1 -1
  119. package/out/build.js.map +1 -1
  120. package/out/cz/adapters/cuzk/adapter.d.ts +1 -1
  121. package/out/cz/adapters/cuzk/adapter.js +1 -1
  122. package/out/cz/tools/fetch/cuzk.d.ts +2 -2
  123. package/out/cz/tools/fetch/cuzk.js +2 -2
  124. package/out/de/recipes/locale.d.ts +1 -1
  125. package/out/de/recipes/locale.js +1 -1
  126. package/out/dk/adapters/inspire/adapter.js +1 -1
  127. package/out/ee/tools/fetch/ads.d.ts +2 -2
  128. package/out/ee/tools/fetch/ads.js +1 -1
  129. package/out/es/adapters/bizkaia/adapter.js +1 -1
  130. package/out/es/adapters/navarra/adapter.d.ts +2 -2
  131. package/out/es/adapters/navarra/adapter.js +2 -2
  132. package/out/es/cadastre.d.ts +2 -2
  133. package/out/es/cadastre.js +2 -2
  134. package/out/es/tools/fetch/bizkaia.d.ts +5 -5
  135. package/out/es/tools/fetch/bizkaia.js +5 -5
  136. package/out/es/tools/fetch/catastro.d.ts +4 -4
  137. package/out/es/tools/fetch/catastro.js +2 -2
  138. package/out/es/tools/fetch/navarra.d.ts +2 -2
  139. package/out/es/tools/fetch/navarra.js +2 -2
  140. package/out/fingerprints.d.ts +3 -3
  141. package/out/fingerprints.js +3 -3
  142. package/out/fr/adapters/finess/adapter.d.ts +6 -5
  143. package/out/fr/adapters/finess/adapter.d.ts.map +1 -1
  144. package/out/fr/adapters/finess/adapter.js +6 -5
  145. package/out/fr/adapters/finess/adapter.js.map +1 -1
  146. package/out/fr/adapters/finess/voie-type.d.ts +1 -1
  147. package/out/fr/adapters/finess/voie-type.js +1 -1
  148. package/out/fr/tools/fetch/annuaire-education.d.ts +3 -3
  149. package/out/fr/tools/fetch/annuaire-education.js +3 -3
  150. package/out/gb/constituent-country.d.ts +36 -0
  151. package/out/gb/constituent-country.d.ts.map +1 -0
  152. package/out/gb/constituent-country.js +30 -0
  153. package/out/gb/constituent-country.js.map +1 -0
  154. package/out/inspire/address.d.ts +3 -3
  155. package/out/inspire/address.js +3 -3
  156. package/out/international/recipes/locale.d.ts +6 -0
  157. package/out/international/recipes/locale.d.ts.map +1 -1
  158. package/out/international/recipes/locale.js +29 -7
  159. package/out/international/recipes/locale.js.map +1 -1
  160. package/out/it/adapters/anac/adapter.d.ts +1 -1
  161. package/out/it/adapters/anac/adapter.d.ts.map +1 -1
  162. package/out/it/adapters/anac/adapter.js +4 -3
  163. package/out/it/adapters/anac/adapter.js.map +1 -1
  164. package/out/jp/adapters/wof-admin/adapter.d.ts +2 -2
  165. package/out/jp/adapters/wof-admin/adapter.js +2 -2
  166. package/out/kr/adapters/juso/label-rows.d.ts +1 -1
  167. package/out/kr/adapters/localdata/key-index.d.ts +2 -1
  168. package/out/kr/adapters/localdata/key-index.d.ts.map +1 -1
  169. package/out/kr/adapters/localdata/key-index.js +2 -1
  170. package/out/kr/adapters/localdata/key-index.js.map +1 -1
  171. package/out/lu/adapters/bd-adresses/adapter.d.ts +1 -1
  172. package/out/lu/adapters/bd-adresses/adapter.js +1 -1
  173. package/out/nl/adapters/kadaster/adapter.js +2 -2
  174. package/out/nl/tools/fetch/kadaster.d.ts +1 -1
  175. package/out/nl/tools/fetch/kadaster.js +1 -1
  176. package/out/parquet/shuffle.d.ts +2 -2
  177. package/out/parquet/shuffle.js +2 -2
  178. package/out/parquet/span-sql.d.ts +8 -6
  179. package/out/parquet/span-sql.d.ts.map +1 -1
  180. package/out/parquet/span-sql.js +8 -6
  181. package/out/parquet/span-sql.js.map +1 -1
  182. package/out/parquet/streams.d.ts +1 -1
  183. package/out/parquet/writers.d.ts +2 -2
  184. package/out/parquet/writers.js +1 -1
  185. package/out/pl/tools/fetch/emuia.d.ts +2 -2
  186. package/out/recipes/scaffold.d.ts +2 -2
  187. package/out/recipes/sources.d.ts +2 -2
  188. package/out/recipes/sources.js +3 -3
  189. package/out/recipes/sources.js.map +1 -1
  190. package/out/recipes/sub/venue/render.d.ts +1 -1
  191. package/out/recipes/sub/venue/render.js +1 -1
  192. package/out/recipes/sub/venue/sources.d.ts +4 -3
  193. package/out/recipes/sub/venue/sources.d.ts.map +1 -1
  194. package/out/recipes/sub/venue/sources.js +4 -3
  195. package/out/recipes/sub/venue/sources.js.map +1 -1
  196. package/out/recipes/sub/venue.d.ts +3 -2
  197. package/out/recipes/sub/venue.d.ts.map +1 -1
  198. package/out/recipes/sub/venue.js +2 -2
  199. package/out/recipes/sub/venue.js.map +1 -1
  200. package/out/recipes/venue.d.ts +7 -6
  201. package/out/recipes/venue.d.ts.map +1 -1
  202. package/out/recipes/venue.js +11 -10
  203. package/out/recipes/venue.js.map +1 -1
  204. package/out/ro/adapters/retea-scolara/adapter.d.ts +2 -2
  205. package/out/ro/adapters/retea-scolara/adapter.js +2 -2
  206. package/out/runner.d.ts +3 -3
  207. package/out/runner.js +2 -2
  208. package/out/sk/tools/fetch/inspire.d.ts +3 -3
  209. package/out/sk/tools/fetch/inspire.js +1 -1
  210. package/out/source-register/effective-manifest.d.ts +2 -2
  211. package/out/source-register/types.d.ts +2 -2
  212. package/out/subvenue/harvest.d.ts +4 -3
  213. package/out/subvenue/harvest.d.ts.map +1 -1
  214. package/out/subvenue/harvest.js +6 -5
  215. package/out/subvenue/harvest.js.map +1 -1
  216. package/out/subvenue/promotions.d.ts +2 -2
  217. package/out/subvenue/promotions.js +3 -3
  218. package/out/subvenue/promotions.js.map +1 -1
  219. package/out/subvenue/table.d.ts +6 -6
  220. package/out/subvenue/table.js +1 -1
  221. package/out/surfaces/locale.d.ts +1 -1
  222. package/out/surfaces/locale.js +1 -1
  223. package/out/synthesizers/boundary-stress.d.ts.map +1 -1
  224. package/out/synthesizers/boundary-stress.js +2 -1
  225. package/out/synthesizers/boundary-stress.js.map +1 -1
  226. package/out/synthesizers/tail.d.ts +2 -2
  227. package/out/synthesizers/tail.js +2 -2
  228. package/out/test-kit/corpus-recipe.d.ts +1 -1
  229. package/out/test-kit/corpus-recipe.js +1 -1
  230. package/out/tools/align-canonical.d.ts.map +1 -1
  231. package/out/tools/align-canonical.js +3 -2
  232. package/out/tools/align-canonical.js.map +1 -1
  233. package/out/tools/audit.js +1 -1
  234. package/out/tools/corpus-stats.d.ts +1 -1
  235. package/out/tools/fetch/download/network.d.ts +1 -1
  236. package/out/tools/fetch/download/network.js +1 -1
  237. package/out/tools/fetch/geonames/dump.d.ts +1 -1
  238. package/out/tools/fetch/geonames/dump.js +1 -1
  239. package/out/tools/fetch/gleif.d.ts +1 -1
  240. package/out/tools/fetch/gleif.js +1 -1
  241. package/out/tools/fetch/header.d.ts +1 -1
  242. package/out/tools/fetch/header.js +1 -1
  243. package/out/tools/fetch/inspire-addresses.d.ts +1 -1
  244. package/out/tools/fetch/vlaanderen-ad.d.ts +1 -1
  245. package/out/tools/fetch/wfs-harvest.d.ts +3 -3
  246. package/out/tools/fetch/wfs-harvest.js +4 -4
  247. package/out/tools/fetch/wfs-harvest.js.map +1 -1
  248. package/out/tools/fetch/zip-archive.d.ts +2 -2
  249. package/out/tools/fetch/zip-archive.js +2 -2
  250. package/out/tools/golden/expand.js +1 -1
  251. package/out/tools/golden/expand.js.map +1 -1
  252. package/out/tools/golden/promote.d.ts +1 -1
  253. package/out/tools/golden/promote.js +3 -3
  254. package/out/tools/golden/promote.js.map +1 -1
  255. package/out/tools/golden/relabel-street/directory.d.ts +2 -1
  256. package/out/tools/golden/relabel-street/directory.d.ts.map +1 -1
  257. package/out/tools/golden/relabel-street/directory.js.map +1 -1
  258. package/out/tools/lint/recipe-output/vocab.js +2 -2
  259. package/out/tools/overlay/manifest.d.ts +15 -2
  260. package/out/tools/overlay/manifest.d.ts.map +1 -1
  261. package/out/tools/overlay/manifest.js +41 -10
  262. package/out/tools/overlay/manifest.js.map +1 -1
  263. package/out/tools/overlay/split-slice.d.ts.map +1 -1
  264. package/out/tools/overlay/split-slice.js +2 -9
  265. package/out/tools/overlay/split-slice.js.map +1 -1
  266. package/out/tools/postcode-triples.d.ts +1 -1
  267. package/out/tools/postcode-triples.js +2 -2
  268. package/out/tools/postcode-triples.js.map +1 -1
  269. package/out/tools/sub/venue/head-nouns.d.ts +1 -1
  270. package/out/tools/sub/venue/head-nouns.d.ts.map +1 -1
  271. package/out/tools/sub/venue/head-nouns.js +4 -3
  272. package/out/tools/sub/venue/head-nouns.js.map +1 -1
  273. package/out/types.d.ts +3 -3
  274. package/out/types.js +1 -1
  275. package/out/us/adapters/state/tx-notaries/adapter.d.ts +1 -1
  276. package/out/us/adapters/state/tx-notaries/adapter.js +1 -1
  277. package/out/us/adapters/usgov/irs-bmf/adapter.d.ts +1 -1
  278. package/out/us/adapters/usgov/irs-bmf/adapter.js +2 -2
  279. package/out/us/synthesizers/intersection.js +4 -4
  280. package/out/us/synthesizers/intersection.js.map +1 -1
  281. package/out/us/synthesizers/street.js +3 -3
  282. package/out/us/synthesizers/street.js.map +1 -1
  283. package/out/us/tools/fetch/nad.d.ts +2 -2
  284. package/out/us/tools/fetch/nad.js +2 -2
  285. package/out/utils/split.d.ts +21 -0
  286. package/out/utils/split.d.ts.map +1 -1
  287. package/out/utils/split.js +49 -5
  288. package/out/utils/split.js.map +1 -1
  289. package/out/utils/wof-json.d.ts +1 -1
  290. package/out/utils/wof-json.js +1 -1
  291. package/package.json +14 -14
@@ -9,6 +9,94 @@
9
9
  "$sharedReadings": "One publisher can hold a licence over several jurisdictions, and the register scopes a decision to one publisher in one jurisdiction, so reading that publisher's terms once produces several decisions with the same body. A decision reads `sameAs` to name a body declared here, which keeps each licence id's own decision while the prose behind it has one home. The build refuses a `sameAs` naming a reading this file does not declare.",
10
10
  "$ocpRegistryStatements": "Five of the decisions below rest on the OCP Data Registry's own licence statement rather than on the publisher's page. Each of those register rows records its access as OCDS bulk through that registry and its `sourceURL` as the registry, so the copy this repository would fetch is the registry's and the licence it publishes is the one governing that copy. AusTender is the exception: its publisher's own terms were retrieved, which is the stronger record. Retrieving each of the five publishers' own pages would raise them to the same standard and is not done.",
11
11
  "sharedReadings": {
12
+ "ogl-uk-3.0-gb-ordnance-survey-opendata": {
13
+ "state": "elected",
14
+ "electedTerms": "Open Government Licence v3.0",
15
+ "spdx": "OGL-UK-3.0",
16
+ "termsVersion": "3.0",
17
+ "retrievedCopy": "internal/strategy/rights-receipts/gb-os-opendata-2026-10-14/",
18
+ "retrievedAt": "2026-10-14",
19
+ "electedBecause": "Ordnance Survey licenses four OS OpenData products, Code-Point Open, OS Open Names, OS Open Roads and OS Open USRN, under the Open Government Licence v3.0. Each download ships a `licence.txt`, and each one states `Your use of OS OpenData is subject to the terms at http://os.uk/opendata/licence` (Code-Point Open words it `Your use of data is subject to terms at www.ordnancesurvey.co.uk/opendata/licence`). Both addresses redirected on 2026-10-14 to `https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/`, 10,450 bytes, sha256 `f5b2b9f2af63647cde889fa6c3508f5705925295b74912c68caa28dd37e64aa5`. OS's own `docs.os.uk` terms page, 2,936 bytes, sha256 `83e7e1047ff833d4144e451f596290543b5673915733d3a26b8d48cac5253d7e`, states that the OS OpenData terms `are contained within the Open Government Licence` and that the attribution statement `can be found in the licence file downloaded with the data`. The licence files read are Code-Point Open 2026-08, 346 bytes, sha256 `2273fa3818d2b009ab38c11f3cfc9563e48c0e9e940bf73c1a3685b3188255ad`; OS Open Names 2026-07, 438 bytes, sha256 `1be838dcdba14daa10f6a5015833100858711fcda9e495a9442c9295d357f99f`; OS Open Roads 2026-04, 190 bytes, sha256 `65f3f555aa3e42e93b4db24a29ad277beefd12bc4871076d558c1cc41a6b216d`; and OS Open USRN 2026-10, 442 bytes, sha256 `41e89b74974c31cbb39efec9d78db825107e8fca565611e7098f92c94c6be62e`. The attribution differs by product. Open Roads requires `Contains Ordnance Survey data © Crown copyright and database right 2026`. Code-Point Open and Open Names add `Contains Royal Mail data © Royal Mail copyright and database right 2026` and `Contains National Statistics data © Crown copyright and database right 2026`. Open USRN requires `Contains OS data © Crown Copyright and database rights 2026` and, `Where you use data relating to Scotland`, `This product contains data created and maintained by Scottish Local Government.` No licence file or page read restricts the Royal Mail-derived postcode data beyond that acknowledgement, which is a statement about the text read; the OGL's own exemption for `third party rights the Information Provider is not authorised to license` stays in force. Code-Point Open's `product-supply` page, 4,936 bytes, sha256 `3f71e7910ce3a0107af8217563eb8e193a715c37e91bb5166078fae8ebeb942a`, states `Code-Point Open covers postcodes for Great Britain`, and the 2026-08 release has no BT area, so no Northern Ireland postcode and no Land & Property Services term reaches these sources. This reading covers the licence only. A row that joins a real street to a real postcode and synthesizes a house number can reproduce a residential address, which is a question for the personal-data review in `source-resolutions.json`, not for this reading.",
20
+ "operations": {
21
+ "fetch": {
22
+ "permission": "permitted",
23
+ "basis": "publisher-grant",
24
+ "because": "OGL v3.0 grants the right to copy, publish, distribute and transmit the Information."
25
+ },
26
+ "extract": {
27
+ "permission": "permitted",
28
+ "basis": "publisher-grant",
29
+ "because": "OGL v3.0 grants the right to adapt the Information, which covers reading street names, postcodes and coordinates out of the published files."
30
+ },
31
+ "transform": {
32
+ "permission": "permitted",
33
+ "basis": "publisher-grant",
34
+ "because": "OGL v3.0 grants the right to adapt the Information, which covers joining postcodes to street centrelines and synthesizing a house number."
35
+ },
36
+ "train": {
37
+ "permission": "permitted",
38
+ "basis": "publisher-grant",
39
+ "because": "OGL v3.0 grants adaptation and commercial and non-commercial exploitation, and fitting a model adapts and exploits the Information."
40
+ },
41
+ "redistribute-data": {
42
+ "permission": "permitted",
43
+ "basis": "publisher-grant",
44
+ "because": "OGL v3.0 grants publication and distribution, conditioned on the per-product attribution statements in each download's `licence.txt`, including the Scottish Local Government acknowledgement for Open USRN data relating to Scotland."
45
+ },
46
+ "redistribute-model": {
47
+ "permission": "unreviewed",
48
+ "because": "Whether trained weights carry the attribution condition is the question `internal/strategy/counsel-briefing-2026-09-27-part-2.md` records for attribution licenses, and the OGL text does not answer it."
49
+ },
50
+ "commercial-sublicense": {
51
+ "permission": "unreviewed",
52
+ "because": "OGL v3.0 grants a worldwide, royalty-free, perpetual, non-exclusive license and states no sublicensing right. Whether that satisfies a commercial agreement is a drafting question."
53
+ }
54
+ }
55
+ },
56
+ "ogl-uk-3.0-gb-organization-registers": {
57
+ "state": "elected",
58
+ "electedTerms": "Open Government Licence v3.0",
59
+ "spdx": "OGL-UK-3.0",
60
+ "termsVersion": "3.0",
61
+ "retrievedCopy": "internal/strategy/rights-receipts/gb-org-registers-2026-10-12/",
62
+ "retrievedAt": "2026-10-12",
63
+ "electedBecause": "Five Great Britain publishers of organization registers license the register under the Open Government Licence v3.0, and the pages read for each are retained in the receipt directory. Three state the license for the data itself. CQC's `using-cqc-data` page, 76,786 bytes, sha256 `2db3eec0967e349830b9e5622e7887e6e5284760d4212f3f66801415147f7ba2`, states `Our data is made available under the Open Government Licence. By using it you are accepting the conditions of this licence.` The Food Standards Agency's terms page, 99,851 bytes, sha256 `b301243640a0230e84a75316267df54d1621fc8cdbd75ff8b835872f42360dbf`, states `Use of proprietary food hygiene ratings information and services is subject to the terms of the Open Government Licence (OGL).` NHS England's TRUD terms, 20,140 bytes, sha256 `b2c90ebee42abff95b1ad5c963eae1ace22e4449e326b4b9a3aa781d95e97e7f`, state `you can use NHS England Content, including copying it, adapting it, and using it for any purpose, including commercially, provided you follow these terms and conditions and the terms of the OGL`, and the Organisation Data Service item page, 16,610 bytes, sha256 `d8d9e77435333049425de7289e89915e4f9a8871a16797fedd1f6c26c63d35d7`, applies `Open Government Licence for SDS`. TRUD excludes `Information owned by third parties which we are not authorised to licence on to you`, which `will be clearly marked`. Two rest on the GOV.UK footer alone, `All content is available under the Open Government Licence v3.0, except where otherwise stated`: DVSA's active MOT test stations publication, 76,532 bytes, sha256 `58184d539a607e2046a1d47f0860c98b2185488bd0c0fadac4c5e59273788a15`, and the Get Information about Schools downloads page, 47,303 bytes, sha256 `270a0e64ae36c363de65c25a2363bcfe255f5ccdcb115da340d44b14a78352be`. Neither page states anything otherwise. **None of the pages read restricts the address fields the way MHCLG's energy performance notice restricts its AddressBase- and PAF-derived fields**, and that is a statement about the text read rather than about where each publisher's address columns came from. GIAS and CQC are the two most likely to have matched addresses against AddressBase, so their field documentation is the read that would settle it. The Food Standards Agency withholds address and geocoding data where an establishment operates from a private address, per `ratings.food.gov.uk/open-data`, 397,874 bytes, sha256 `364a2f3293febbe54f52ff09bf5ac0b71fafce052ff6463566493d9d0069fb4e`.",
64
+ "operations": {
65
+ "fetch": {
66
+ "permission": "permitted",
67
+ "basis": "publisher-grant",
68
+ "because": "OGL v3.0 grants the right to copy, publish, distribute and transmit the Information."
69
+ },
70
+ "extract": {
71
+ "permission": "permitted",
72
+ "basis": "publisher-grant",
73
+ "because": "OGL v3.0 grants the right to adapt the Information, which covers reading the address columns out of the published file."
74
+ },
75
+ "transform": {
76
+ "permission": "permitted",
77
+ "basis": "publisher-grant",
78
+ "because": "OGL v3.0 grants the right to adapt the Information."
79
+ },
80
+ "train": {
81
+ "permission": "permitted",
82
+ "basis": "publisher-grant",
83
+ "because": "OGL v3.0 grants adaptation and commercial and non-commercial exploitation, and fitting a model adapts and exploits the Information."
84
+ },
85
+ "redistribute-data": {
86
+ "permission": "permitted",
87
+ "basis": "publisher-grant",
88
+ "because": "OGL v3.0 grants publication and distribution, conditioned on the attribution statement the publisher specifies."
89
+ },
90
+ "redistribute-model": {
91
+ "permission": "unreviewed",
92
+ "because": "Whether trained weights carry the attribution condition is the question `internal/strategy/counsel-briefing-2026-09-27-part-2.md` records for attribution licenses, and the OGL text does not answer it."
93
+ },
94
+ "commercial-sublicense": {
95
+ "permission": "unreviewed",
96
+ "because": "OGL v3.0 grants a worldwide, royalty-free, perpetual, non-exclusive license and states no sublicensing right. Whether that satisfies a commercial agreement is a drafting question."
97
+ }
98
+ }
99
+ },
12
100
  "ocp-registry-cc0-1.0": {
13
101
  "state": "elected",
14
102
  "electedTerms": "Creative Commons CC0 1.0 Universal Public Domain Dedication",
@@ -544,6 +632,38 @@
544
632
  "publisherStatement": "CHECK NATIONAL / DATASET TERMS",
545
633
  "refusedBecause": "The Central Bank of Libya reserves all rights in its own footer, `© All rights reserved 2026، The Central Bank of Libya.`, and its site carries no data license and no reuse permission. Its English home page holds no licensing term in 222,200 bytes and it publishes no terms-of-use page; `/en/terms-of-use/` answers HTTP 404 and the contact page, 147,508 bytes, sha256 `765d8a3adabde677eee5c8afcc2d4be1cf36d26b2e6d8d2498586cc2974750a4`, carries the footer and nothing further. The only address the site publishes is `webdesign@email.ly`, which belongs to whoever built the site rather than to the bank, so a request goes through the contact form at `https://cbl.gov.ly/en/contact/`. Do not substitute a third party's dataset: a humdata query for Libya returns five `cc-by` datasets, every one published by the World Bank Group or the AfDB rather than by the central bank."
546
634
  },
635
+ "unchecked-access-free-registration-gb-gb-property-building-2": {
636
+ "state": "refused",
637
+ "publisherStatement": "Free-reg",
638
+ "retrievedCopy": "internal/strategy/rights-receipts/gb-epc-2026-10-12/",
639
+ "retrievedAt": "2026-10-12",
640
+ "refusedBecause": "MHCLG licenses the energy performance of buildings data in two parts, and the part this register needs is the restricted one. `https://get-energy-performance-data.communities.gov.uk/guidance/licensing-restrictions`, 19,402 bytes, sha256 `e2164d92b85e88b35db873985b278d02e0cc94576b70b9dca4ddb8ccf5682226`, states that `All data fields other than the address and postcode data` are under the Open Government Licence v3.0, UPRNs included. The address fields, address 1 to 3 and the postcode, were `processed against Ordnance Survey's Address Base Premium product, which incorporates Royal Mail's PAF® database`, and Ordnance Survey and Royal Mail `reserve all their respective copyright, database rights`. The notice permits the address data `solely for specific purposes related to the energy performance of buildings`, plus non-commercial research and private study, and states that `Any use of address data which is not specified in this notice … requires an appropriate licence from Ordnance Survey.` Training a general-purpose address parser and redistributing weights fitted on these strings fall outside the permitted purposes, so the route to permission is an Ordnance Survey license. The OGL fields alone carry a UPRN without an address string, which gives the corpus no labeled address text. The same service's `/guidance/data-protection-requirements`, 19,054 bytes, sha256 `599a56a0722221c25bdac7057bf9b6152b46c8971b0ee118c79782b0e41a6668`, states `Address level data concerning the energy performance of buildings constitute personal data`, which is a second, independent refusal under the 2026-09-30 decision that the corpus carries organization addresses only."
641
+ },
642
+ "unchecked-access-free-gb-gb-health-1": { "sameAs": "ogl-uk-3.0-gb-organization-registers" },
643
+ "unchecked-access-free-gb-gb-health-2": { "sameAs": "ogl-uk-3.0-gb-organization-registers" },
644
+ "unchecked-access-free-gb-gb-food-pharma-1": { "sameAs": "ogl-uk-3.0-gb-organization-registers" },
645
+ "unchecked-access-free-gb-gb-education-1": { "sameAs": "ogl-uk-3.0-gb-organization-registers" },
646
+ "unchecked-access-free-gb-driver-and-vehicle-standards-agency": {
647
+ "sameAs": "ogl-uk-3.0-gb-organization-registers"
648
+ },
649
+ "unchecked-access-free-gb-gb-public-administration-1": { "sameAs": "ogl-uk-3.0-gb-ordnance-survey-opendata" },
650
+ "unchecked-access-free-gb-gb-public-administration-2": { "sameAs": "ogl-uk-3.0-gb-ordnance-survey-opendata" },
651
+ "unchecked-access-free-gb-gb-transport-1": { "sameAs": "ogl-uk-3.0-gb-ordnance-survey-opendata" },
652
+ "unchecked-access-free-gb-gb-transport-2": { "sameAs": "ogl-uk-3.0-gb-ordnance-survey-opendata" },
653
+ "unchecked-access-free-gb-gb-property-building-3": {
654
+ "state": "refused",
655
+ "publisherStatement": "Free",
656
+ "retrievedCopy": "internal/strategy/rights-receipts/gb-org-registers-2026-10-12/",
657
+ "retrievedAt": "2026-10-12",
658
+ "refusedBecause": "The Valuation Office Agency publishes the non-domestic rating lists under its own restricted terms and states that the Open Government Licence does not apply. Its download page, `https://voaratinglists.blob.core.windows.net/html/rlidata.htm`, 33,414 bytes, sha256 `dafa09c510cf68e3575adbdd256a7b95ff86f1193ecaeda5dce6bd355df49be0`, reads `VO Rating List Downloads are only available under our restricted` license terms and `open government licence does not apply`, and `The information must be used in line with the restricted license terms and conditions`. The row's note describes the lists as the commercial complement to Price Paid Data, which makes this the largest Great Britain business-premises register refused so far. The route to permission is the VOA's restricted license, whose clauses this reading did not open."
659
+ },
660
+ "unchecked-access-free-gb-general-pharmaceutical-council": {
661
+ "state": "refused",
662
+ "publisherStatement": "Free",
663
+ "retrievedCopy": "internal/strategy/rights-receipts/gb-org-registers-2026-10-12/",
664
+ "retrievedAt": "2026-10-12",
665
+ "refusedBecause": "The General Pharmaceutical Council reserves commercial use in its web terms. `https://www.pharmacyregulation.org/web-terms-use`, 88,394 bytes, sha256 `c33632ff36e296d16919b1111b121206e59f261c0b6bad7a546f64e42b88983b`, states `You cannot use any of the content or material from or any part of our websites for commercial purposes without obtaining a licence to do so from either us or our licensors.` The registered premises list is published on that website, and this reading found no separate data license for it. A request to the council could produce one."
666
+ },
547
667
  "unchecked-national-terms-km-banque-centrale-des-comores": {
548
668
  "state": "refused",
549
669
  "publisherStatement": "CHECK NATIONAL / DATASET TERMS",
@@ -3,7 +3,7 @@
3
3
  This directory holds the copies that license decisions are read from. `ElectedLicense.retrievedCopy` in the source
4
4
  register points to a file here, so a later reviewer checks the same text instead of the page as it reads that day.
5
5
 
6
- A publisher's page changes over time. A license is versioned but the page that carries it is not, so a decision
6
+ A publisher's page changes over time. A license is versioned but the page that publishes it is not, so a decision
7
7
  recorded against the page cannot be rechecked once the page changes. Each file here holds the text as retrieved, with
8
8
  the URL and the retrieval date at its head, and is never edited after that. A correction requires a new retrieval.
9
9
 
@@ -26,19 +26,19 @@ The first filename keeps the publisher's own spelling, because it is the name of
26
26
 
27
27
  Five of the seven files are here although no register source points to them. The four runtime bundles' rights records
28
28
  cite those terms, and an operator acts on them today. A file that covers a bundle instead of a register source is the
29
- ordinary case. The terms for a source that nobody can ingest can wait, but the terms for a database that somebody
29
+ ordinary case. The terms for a source that no operator can ingest can wait, but the terms for a database that somebody
30
30
  downloads this week cannot.
31
31
 
32
32
  The National Address Database is the strongest reason for putting bundles first. Its rows are 85,482,142 of the `us` bundle's
33
- 125,276,536, which is 68.2%. The bundle's record mentioned neither the database nor the Department of Transportation
33
+ 125,276,536, or 68.2%. The bundle's record mentioned neither the database nor the Department of Transportation
34
34
  until a census of the shipped databases' own `source` column found them.
35
35
 
36
36
  Three of the five retrievals changed a record instead of only supporting one. The Who's On First page lists Ordnance
37
37
  Survey of Northern Ireland and Ordnance Survey Ireland and never mentions Royal Mail, so half of the `candidate`
38
38
  bundle's open question concerned a body absent from the text. CDLA-Permissive-2.0 §3.1 states that the agreement
39
39
  imposes no restriction or obligation on Results, and §5.4 defines Results to include machine learning models. The
40
- `poi` bundle's conditions therefore separate what redistributing the database requires from what the model carries.
41
- The National Address Database's page states both that the data carries no copyright under 17 U.S.C. § 105 and that it
40
+ `poi` bundle's conditions therefore separate what redistributing the database requires from what the model must include.
41
+ The National Address Database's page states both that the data has no copyright under 17 U.S.C. § 105 and that it
42
42
  is not intended for use as a mailing list under state statutes. A record that kept only the first statement would lose
43
43
  the second.
44
44
 
@@ -5,9 +5,9 @@
5
5
  - Publisher: The Linux Foundation, as the steward of the agreement
6
6
  - Version stated in the text: 2.0
7
7
 
8
- This is the grant the Overture Maps Foundation places its Places theme under, which is the `poi`
8
+ This is the grant the Overture Maps Foundation places its Places theme under. That theme is the `poi`
9
9
  runtime bundle. The text was taken from the SPDX license list rather than from `cdla.dev`, because
10
- SPDX publishes it as plain text and the two carry the same words.
10
+ SPDX publishes it as plain text and the two contain the same words.
11
11
 
12
12
  ## Data-sharing terms (quoted)
13
13
 
@@ -16,7 +16,7 @@ SPDX publishes it as plain text and the two carry the same words.
16
16
 
17
17
  That is the one condition the agreement places on redistributing the database, and it is a condition
18
18
  to supply this text rather than to name a contributor. This repository hosts `poi.db` for download,
19
- so the condition attaches to that hosting, which is why this file is committed.
19
+ so the condition attaches to that hosting. This file is committed to meet it.
20
20
 
21
21
  ## A model trained on the data, quoted
22
22
 
@@ -28,14 +28,14 @@ so the condition attaches to that hosting, which is why this file is committed.
28
28
  > 5.4. "Results" means any result obtained by computational analysis of Data, including for example
29
29
  > machine learning models and models' insights.
30
30
 
31
- Read together, the agreement states that a machine-learning model is a Result and that it carries no
31
+ Read together, the agreement states that a machine-learning model is a Result and that it is subject to no
32
32
  restriction or obligation under the agreement. Among the grants this repository reads, this is the
33
33
  one that addresses a trained model in its own text rather than leaving it to be argued from the
34
34
  definition of a derived work.
35
35
 
36
36
  Two things that does not establish. It makes no statement about the terms of whatever sources Overture
37
- itself drew each row from, which the `poi` bundle's record still carries as an open question. And it
38
- is a statement about this agreement alone, so it does not decide the question for any other source.
37
+ itself drew each row from. The `poi` bundle's record still lists those terms as an open question. And
38
+ it is a statement about this agreement only, so it does not decide the question for any other source.
39
39
 
40
40
  ## What this text does not settle
41
41
 
@@ -6,7 +6,7 @@
6
6
  - Publisher: GeoNames
7
7
  - Version stated in the text: Creative Commons Attribution 4.0, in the export readme
8
8
 
9
- GeoNames folds into the `candidate` runtime bundle, whose record names its terms. Two of the
9
+ GeoNames folds into the `candidate` runtime bundle. That bundle's record identifies its terms. Two of the
10
10
  publisher's own pages state them and only one gives a version.
11
11
 
12
12
  ## What the export readme states, quoted in full
@@ -24,11 +24,11 @@ publisher's own pages state them and only one gives a version.
24
24
  The about page names no version. The readme beside the files themselves names 4.0. That readme travels
25
25
  with the data, so the bundle's record states 4.0 and names this file.
26
26
 
27
- Both sources matter because the two pages give different information. The about page alone leaves the
28
- version unknown. Creative Commons Attribution's conditions differ across versions.
27
+ Both sources matter because the two pages give different information. Read without the readme, the about
28
+ page leaves the version unknown. Creative Commons Attribution's conditions differ across versions.
29
29
 
30
30
  ## What this text does not settle
31
31
 
32
32
  Which GeoNames records reached the `candidate` bundle, and therefore what has to be attributed for
33
- which rows. GeoNames itself integrates data from other sources, which its about page states in those
34
- words, and this text makes no statement about the terms of those. No election is made here.
33
+ which rows. GeoNames itself integrates data from other sources. Its about page states that in those
34
+ words. This text makes no statement about the terms of those. No election is made here.
@@ -6,7 +6,7 @@
6
6
  - Version stated in the text: 2.0
7
7
 
8
8
  The canonical page `https://www.etalab.gouv.fr/licence-ouverte-open-licence/` now redirects to
9
- `https://www.data.gouv.fr/`, so the text was taken from Etalab's own repository, which is where the page sourced it.
9
+ `https://www.data.gouv.fr/`, so the text was taken from Etalab's own repository. The page sourced its text from that repository.
10
10
 
11
11
  ## Rights granted, quoted
12
12
 
@@ -27,10 +27,10 @@ adapting, modifying, distributing, and exploiting the information commercially.
27
27
  - The reuser must not mislead a third party about the content, source or update date of the information.
28
28
  - The information is provided `telle que produite ou reçue, sans autre garantie expresse ou tacite`, with no warranty
29
29
  against defects, errors, or continued availability.
30
- - The reuser carries sole responsibility for the reuse.
30
+ - The reuser bears sole responsibility for the reuse.
31
31
 
32
32
  ## What this text does not settle
33
33
 
34
34
  It grants reuse of the information. Whether model weights trained on that information are themselves a reuse under this
35
35
  grant, and what attribution discharges the condition for a trained model where no individual record is recoverable, are
36
- readings the text does not make. The grant carries no share-alike condition.
36
+ readings the text does not make. The grant imposes no share-alike condition.
@@ -6,9 +6,9 @@
6
6
  - Version stated in the text: none. The page states it was last updated 2026-01-09.
7
7
 
8
8
  The National Address Database supplies 85,482,142 of the 125,276,536 address points in the `us`
9
- runtime bundle, which is 68.2% of it. The bundle's record mentioned neither the database nor its
9
+ runtime bundle. That count is 68.2% of the bundle. The bundle's record mentioned neither the database nor its
10
10
  publisher until this text was read. The rows reach the bundle through the Overture Maps Foundation.
11
- Overture stamps each row `NAD`, so the bundle carries the publisher on every row.
11
+ Overture stamps each row `NAD`, so every row in the bundle identifies the publisher.
12
12
 
13
13
  ## What the disclaimer states about reuse, quoted
14
14
 
@@ -20,22 +20,22 @@ Overture stamps each row `NAD`, so the bundle carries the publisher on every row
20
20
  > Although the NAD is open data, it is not intended for use as a mailing list and is subject to
21
21
  > individual state statutes that prohibit it's use as a mailing list.
22
22
 
23
- These two sentences appear on the same page, and a record that says only "no copyright under 17
24
- U.S.C. § 105" would lose the second one. The first sentence says that copyright imposes no
25
- restriction. The second states a restriction from another source: individual state statutes, which
26
- the page neither names nor lists, on one particular use. A postal address product is close to that
23
+ These two sentences appear on the same page, and a record that states only "no copyright under 17
24
+ U.S.C. § 105" would lose the second one. The first sentence states that copyright imposes no
25
+ restriction. The second states a restriction from another source on one particular use. That source is
26
+ individual state statutes, and the page neither names nor lists them. A postal address product is close to that
27
27
  use, so the restriction belongs in the record and not in a footnote.
28
28
 
29
29
  This text does not establish which states have those statutes, what they prohibit, or whether any of
30
30
  them applies to what this repository does with the rows.
31
31
 
32
- ## What the disclaimer states about NAD's own sources, quoted
32
+ ## What the disclaimer states about NAD's own sources
33
33
 
34
- > The National Address Database (NAD) is, with few exceptions, aggregated from state data, which is
35
- > in turn aggregated from local data.
34
+ The disclaimer states that the National Address Database (NAD) is, with few exceptions, aggregated from state
35
+ data. The state data is in turn aggregated from local data.
36
36
 
37
- > The states that partner with USDOT to provide data for the NAD do so willingly, with no obligation.
38
- > Not every state that provides data to the NAD has complete coverage.
37
+ The disclaimer also states that the states partnering with USDOT provide NAD data voluntarily and under no
38
+ obligation. It adds that not every contributing state has complete coverage.
39
39
 
40
40
  NAD is therefore itself an aggregate. The federal-work statement covers NAD as published and does not
41
41
  cover each contributing state's own publication.
@@ -43,4 +43,4 @@ cover each contributing state's own publication.
43
43
  ## What this text does not settle
44
44
 
45
45
  The text does not say which state or local body supplied a given NAD row, or what that body requires.
46
- The bundle's rows carry `overture:NAD` and record no finer source. This file elects no license.
46
+ The bundle's rows have the source `overture:NAD` and record no finer source. This file elects no license.
@@ -3,13 +3,13 @@
3
3
  - Source: `https://raw.githubusercontent.com/spdx/license-list-data/main/text/NLOD-2.0.txt`, with
4
4
  `https://data.norge.no/nlod/en/2.0` returning HTTP 200 on the same date
5
5
  - Retrieved: 2026-09-21
6
- - Publisher: the responsible Norwegian ministry, named in the text as the Ministry of Local
6
+ - Publisher: the responsible Norwegian ministry. The text identifies it as the Ministry of Local
7
7
  Government and Modernisation
8
8
  - Version stated in the text: 2.0
9
9
 
10
10
  An earlier pass recorded `data.norge.no/nlod/en/2.0` as returning HTTP 406 to an automated fetch. It
11
11
  returned HTTP 200 on 2026-09-21, so that record was a transient failure rather than a refusal, and
12
- `PROVENANCE.md` is corrected. The text below is from SPDX, which publishes it as plain text.
12
+ `PROVENANCE.md` is corrected. The text below is from SPDX. SPDX publishes it as plain text.
13
13
 
14
14
  This is the grant the register's Brønnøysund entity register row would be read against.
15
15
 
@@ -60,7 +60,7 @@ not covered by the licence.
60
60
  ```
61
61
 
62
62
  The first exemption carves personal data out of the grant itself. A source under this license is
63
- therefore not fully granted by the license alone, which is why `AddressSourceRecord` carries a
63
+ therefore not fully granted by the license text. For that reason `AddressSourceRecord` stores a
64
64
  `personalDataReview` apart from its license decision.
65
65
 
66
66
  ## The attribution condition
@@ -3,19 +3,26 @@
3
3
  - Source: `https://www.data.gouv.fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/`
4
4
  - Retrieved: 2026-09-21
5
5
  - Publisher: Institut national de la statistique et des études économiques (INSEE)
6
- - Terms named on the page: `Licence Ouverte / Open Licence version 2.0`, archived beside this as
6
+ - Terms the page identifies: `Licence Ouverte / Open Licence version 2.0`, archived beside this as
7
7
  `licence-ouverte-2.0.md`
8
8
  - Last update stated on the page: 2026-09-01
9
9
 
10
10
  ## What the publication offers
11
11
 
12
- Twelve primary files, as six pairs in ZIP and Parquet: the stock of legal units, active and ceased; historicized values
13
- of legal units; the stock of establishments, active and closed; historicized values of establishments; establishment
14
- succession links; and SIREN duplicates. Twelve documentation files accompany them, in PDF and CSV.
12
+ The page offers twelve primary files, as six pairs in ZIP and Parquet. The six datasets are these:
13
+
14
+ - the stock of legal units, active and ceased
15
+ - historicized values of legal units
16
+ - the stock of establishments, active and closed
17
+ - historicized values of establishments
18
+ - establishment succession links
19
+ - SIREN duplicates
20
+
21
+ Twelve documentation files accompany them, in PDF and CSV.
15
22
 
16
23
  ## Personal data, quoted and paraphrased
17
24
 
18
- The page states the dataset carries personal data subject to the GDPR and French data-protection law, and that a reuser
25
+ The page states the dataset contains personal data subject to the GDPR and French data-protection law, and that a reuser
19
26
  must respect its dissemination-status codes.
20
27
 
21
28
  For a sole trader or a legal representative who has filed an opposition, INSEE masks specific fields:
@@ -33,6 +40,6 @@ present in the resource is a question the files answer and this page does not. C
33
40
  mapping is not evidence of presence.
34
41
 
35
42
  **Whether the masking suffices for what we do.** INSEE masks an opposed sole trader's identity, municipality address
36
- and geolocation at the source, which is a stronger starting position than a dataset with no opt-out. Whether a model
43
+ and geolocation at the source. That masking is a stronger starting position than a dataset with no opt-out. Whether a model
37
44
  trained on the unmasked remainder can memorize an address, and what measures that calls for, is a separate reading from
38
45
  the license.
@@ -6,7 +6,7 @@
6
6
  - Publisher: Who's On First, originally Mapzen
7
7
  - Version stated in the text: none. The page states it was generated by `bin/docs.py` on 2020-02-21.
8
8
 
9
- Two pages carry the terms. They differ in length but agree in substance. The repository's
9
+ Two pages publish the terms. They differ in length but agree in substance. The repository's
10
10
  `LICENSE.md` is four paragraphs and links to the page. The page repeats those paragraphs and adds the
11
11
  list of contributing sources.
12
12
 
@@ -48,13 +48,13 @@ Four entries bear on questions this repository has open:
48
48
  | Yahoo! GeoPlanet | the publisher's own page |
49
49
  | GeoNames | the publisher's own page |
50
50
 
51
- **Royal Mail does not appear anywhere on the page.** The `candidate` bundle's record carried an open
51
+ **Royal Mail does not appear anywhere on the page.** The `candidate` bundle's record held an open
52
52
  question about "the Ordnance Survey and Royal Mail notice". The page does list the two Ordnance
53
53
  Survey bodies, but it does not mention Royal Mail.
54
54
 
55
55
  A separate census already addressed the GeoPlanet entry. Across the four Who's On First
56
- bundles in the local data root, **zero of 7,189,494 `name:*` variant keys carry the `_p` GeoPlanet
57
- suffix**, and neither postalcode bundle carries a `name:*` key at all, so no GeoPlanet-derived string
56
+ bundles in the local data root, **zero of 7,189,494 `name:*` variant keys end in the `_p` GeoPlanet
57
+ suffix**, and neither postalcode bundle contains a `name:*` key at all, so no GeoPlanet-derived string
58
58
  reaches a corpus row through those bundles.
59
59
 
60
60
  ## What this text does not settle
@@ -9,6 +9,17 @@
9
9
  "$sireneSecondAddress": "SIRENE's establishment file carries a second address family, the `2`-suffixed columns, which INSEE labels only `adresse secondaire` — `complementAdresse2Etablissement` reads `Complément d'adresse secondaire`. What role that address plays is unstated, so it takes no entry in `addressRoles` rather than a guessed one, and the coverage text names it so a reader knows the column exists.",
10
10
  "$ocdsPartyRoles": "An OCDS release keys its addresses by party role, so `addressRoles` names roles rather than columns for those sources. A role is assigned only where OCDS's own codelist defines it, retrieved from `https://standard.open-contracting.org/1.1/en/codelists/partyRole.csv`: `buyer`, `procuringEntity`, `payer`, `funder` and `reviewBody` are bodies acting in the process, so their address is an office they operate and reads `facility`; `supplier` and `tenderer` are the transacting party, so theirs reads `counterparty`. Germany's release also uses eight roles from an extension whose codelist neither the 1.1 nor the latest list defines — `processContactPoint`, `reviewContactPoint`, `submissionReceiptBody`, `mediationBody`, `evaluationBody`, `procurementServiceProvider`, `leadTenderer`, `subcontractor` — and those take no role here rather than a guessed one.",
11
11
  "resolutions": {
12
+ "gb-mixed-regulatory-2": {
13
+ "addressRoles": {
14
+ "Address1,Address2,Address3,Town,Postcode": "facility"
15
+ },
16
+ "coverage": "DVSA's active MOT test stations CSV, `https://assets.publishing.service.gov.uk/media/6abcee45943e890cb55e5d00/active-mot-stations.csv`, read 2026-10-12: 2,391,015 bytes, sha256 `1feeed6fa09140db3cde595c59b0503aa597cdc75a4846444c11122a6e5241c4`, 22,988 data rows over 14 columns with 0 ragged rows under a quote-aware parse; 923 lines carry a quote character. One row is one approved test premises. 22,969 of 22,988 postcodes take a valid Great Britain postcode shape and 121 postcode areas are present, including AB 217, EH 309 and G 369 in Scotland and CF 386, SA 342 and LL 282 in Wales; BT, Northern Ireland, has 0 rows, because Northern Ireland tests vehicles through its own agency. 7,126 rows open `Address1` with a digit, so about a third carry a house number and the rest open with a building, unit or estate name.",
17
+ "upstreamLineage": ["https://www.gov.uk/government/publications/active-mot-test-stations"],
18
+ "personalDataReview": {
19
+ "reading": "present",
20
+ "because": "The address columns locate test premises, and the `Trading_Name` column names a natural person on some rows. Among 22,988 trading names, 235 take an initial-and-surname shape without a business word, as `J J GRIFFITHS`, `R C WILSON`, `V WILLIAMS` and `S BISHOP` do, and 106 carry `AND SON` or `& SONS`, some of which are limited companies. A sole trader's name beside the premises where that person trades identifies them, which is the reading this register gave Enhetsregisteret's sole proprietorships. The shape count is a lower bound. **Whether a build that reads only the five address columns and never `Trading_Name` changes this reading is the same open question recorded for swisstopo's `BDG_NAME`**, and it is the operator's and counsel's to answer: an approved MOT premises is a commercial site with test equipment, so the address alone locates a business."
21
+ }
22
+ },
12
23
  "es-mixed-regulatory-1": {
13
24
  "adapterID": "es-catastro",
14
25
  "addressRoles": {
@@ -71,7 +71,7 @@
71
71
  *
72
72
  * ## The street line
73
73
  *
74
- * `street` holds the whole street line as the participant typed it, usually but not always in the
74
+ * `street` holds the whole street line as the participant typed it, in most records but not all in the
75
75
  * country's own order: `THE WELLCOME TRUST LIMITED` writes `EUSTON ROAD 215 GIBBS BUILDING`, a
76
76
  * number-last line in a number-first country. The house number is therefore split off only on the
77
77
  * side the country's order puts it, and {@linkcode streetOrderForCountry} reads that side from codex's
@@ -110,11 +110,11 @@
110
110
  *
111
111
  * ## License
112
112
  *
113
- * The CORDIS legal notice at `https://cordis.europa.eu/about/legal`, read 2026-10-03, states:
114
- * "Unless otherwise noted (e.g. in individual copyright notices), the reuse of the editorial content on
115
- * this website owned by the EU is authorized under the Creative Commons Attribution 4.0 International
116
- * (CC BY 4.0) licence." The same notice records that "The Commission's reuse policy is implemented by
117
- * Commission Decision 2011/833/EU of 12 December 2011 on the reuse of Commission documents", and the
113
+ * The CORDIS legal notice at `https://cordis.europa.eu/about/legal`, read 2026-10-03, authorizes reuse
114
+ * of the EU-owned editorial content on the site under Creative Commons Attribution 4.0 International
115
+ * (CC BY 4.0), except where an individual copyright notice states otherwise. The same notice states
116
+ * that Commission Decision 2011/833/EU of 12 December 2011, on the reuse of Commission documents,
117
+ * implements the Commission's reuse policy, and the
118
118
  * data.europa.eu records for `cordisfp7projects`, `cordish2020projects` and
119
119
  * `cordis-eu-research-projects-under-horizon-europe-2021-2027` label each CSV distribution with that
120
120
  * decision (`COM_REUSE`). CC BY requires credit and a statement that changes were made, so every row
@@ -603,7 +603,7 @@ export function readCORDISRecord(record: CORDISOrganizationRecord, lexicon: Pers
603
603
  if (!aligned.street && !aligned.postcode) return { refused: CORDISRefusal.ComponentsTooFew, country }
604
604
 
605
605
  // A layout with no slot for a component leaves it out of `raw`, as the United Arab Emirates'
606
- // leaves the locality, and the count records how often a published value went unwritten.
606
+ // leaves the locality, and the count records the number of published values that went unwritten.
607
607
  for (const tag of rendered.unplaced) {
608
608
  discarded.push(`component:${tag}:unplaced`)
609
609
  }
@@ -633,7 +633,7 @@ export interface CORDISRecordReading {
633
633
  /**
634
634
  * Every distinct published record under `inputPath`, read once each.
635
635
  *
636
- * A record is distinct on the five fields that reach a row, so an organization that took part in many
636
+ * A record is distinct on the five fields that reach a row, so an organization that took part in several
637
637
  * projects with one address is read once, and one whose address changed is read once per version.
638
638
  * `onDuplicate` is called once for every participation row a record already read covers.
639
639
  *
@@ -14,12 +14,11 @@
14
14
  *
15
15
  * ## License
16
16
  *
17
- * GLEIF's LEI Data Terms of Use, at {@linkcode GLEIF_LICENSE_URL}, read on 2026-10-03, state: "The
18
- * data available through the Access Service are provided under the CC0 licence, see CC0 1.0
19
- * Universal (CC0 1.0)." The Access Service is defined there as the facility that lets users "look-up
20
- * and/or download individual LEIs and/or related LE-RD and/or the entire set or a subset of LEIs",
21
- * which is the golden copy. GLEIF's open-data page states the same: "The data on GLEIF's website is
22
- * provided under a Creative Commons (CC0) license." The same terms ask a user not to create the
17
+ * GLEIF's LEI Data Terms of Use, at {@linkcode GLEIF_LICENSE_URL}, read on 2026-10-03, place the
18
+ * data served through the Access Service under CC0 1.0 Universal. The terms define the Access
19
+ * Service as the facility for looking up or downloading single LEIs, their related reference data,
20
+ * or the whole LEI set or a subset of it. The golden copy falls under that definition. GLEIF's open-data page
21
+ * also places the data on GLEIF's website under CC0. The same terms ask a user not to create the
23
22
  * impression that derived data or services are provided or endorsed by GLEIF. That is why
24
23
  * {@linkcode GLEIF_ATTRIBUTION} credits the source rather than the corpus.
25
24
  *
@@ -60,7 +59,7 @@
60
59
  * becomes `po_box` rather than a street.
61
60
  *
62
61
  * **A line holding a digit the split could not place refuses the address**, and so does a line with
63
- * no digit at all: in this register a digitless first line is as often a building (`UGLAND HOUSE`,
62
+ * no digit at all: in this register a digitless first line is a building about as frequently (`UGLAND HOUSE`,
64
63
  * `KYDD BUILDING`) as a street, and no field separates the two. An English ordinal inside a street name
65
64
  * (`5TH AVENUE`) is a name rather than a number.
66
65
  *
@@ -126,7 +125,7 @@ export const GLEIF_ADAPTER_ID = "gleif-lei"
126
125
  * Countries whose sampled rows show a labeling defect the street split cannot detect,
127
126
  * so none of their rows is emitted until the split handles them.
128
127
  *
129
- * - `AE`: the first address line is often an office or unit number before a building name,
128
+ * - `AE`: the first address line can be an office or unit number before a building name,
130
129
  * as in `601 سويس تاور` and `501 LE SOLARIUM`, which the split reads as a house number and a street.
131
130
  * - `HK`: a floor such as `6F` comes out as the house number, as in `6F MANULIFE PLACE`.
132
131
  * - `BS`: codex records the Bahamas as number-last while its published lines are number-first
@@ -49,7 +49,7 @@ export interface PoBoxInputRow extends PoBoxBaseTuple {
49
49
 
50
50
  export interface PoBoxAdapterOptions {
51
51
  /**
52
- * How many PO box variants to emit per input tuple, each picking a different leader
52
+ * The number of PO box variants to emit per input tuple, each picking a different leader
53
53
  * (and possibly a different number or noise level); default 1.
54
54
  */
55
55
  variantsPerInput?: number
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * The deterministic row id for a source that publishes no primary key of its own.
7
7
  *
8
- * A CSV row or GeoJSON feature often has no stable identifier. The runner still needs one, so
8
+ * A CSV row or GeoJSON feature can lack a stable identifier. The runner still needs one, so
9
9
  * deduplication and holdout manifests agree across reruns and a run can resume. These functions
10
10
  * derive it by hashing the adapter id together with a canonical serialization of the row's values.
11
11
  *
package/lib/adapters.ts CHANGED
@@ -19,7 +19,7 @@
19
19
  * what the adapter reads: BAN covers France and ten overseas jurisdictions, Matrikkelen covers
20
20
  * Norway and Svalbard, and Ryhti's one national file covers Åland beside the Finnish mainland.
21
21
  *
22
- * Flanders is the counter-case worth stating. Its adapter sits under `be` and covers the Flemish
22
+ * Flanders is the counter-case. Its adapter sits under `be` and covers the Flemish
23
23
  * Region only, because Brussels and Wallonia publish the INSPIRE theme through their own
24
24
  * services, so Belgium needs three adapters rather than one.
25
25
  *
@@ -88,7 +88,7 @@ import { usgovNPPESAdapter } from "#us/adapters/usgov/nppes/adapter"
88
88
  /**
89
89
  * Built-in adapters.
90
90
  *
91
- * Order is significant, because `corpus build` iterates this list to drive every adapter in turn.
91
+ * Order matters, because `corpus build` iterates this list to drive every adapter in turn.
92
92
  * The order runs coarse-first (admin, then postcode), then street-level
93
93
  * (BAN FR, tiger US, OpenAddresses global), then adversarial-source (FCC BDC US, HRSA fqhc US).
94
94
  *
@@ -45,7 +45,7 @@ interface GNAFTuple {
45
45
  }
46
46
 
47
47
  /**
48
- * The address layouts an AU address actually arrives in.
48
+ * The address layouts an AU address arrives in.
49
49
  *
50
50
  * The model already handles postcode-trailing (canonical); the two postcode-leading
51
51
  * forms are the ones it fails, so they show the change.
@@ -51,7 +51,7 @@
51
51
  * Nine addresses write `<ad:component xlink:href=""/>` in the postal-zone slot, so those nine state
52
52
  * no postcode: `BE.BRUSSELS.BRIC.ADM.ADPT.220623`, `.220631`, `.220635`, `.256972`, `.257005` and
53
53
  * four more, in Bruxelles and Schaerbeek. `componentHrefs` skips an empty href, so an unwary reader
54
- * yields those rows with the postcode simply missing. This adapter refuses them and
54
+ * yields those rows with no postcode and no error. This adapter refuses them and
55
55
  * counts them under {@link Refusals.noPostcode}, because a postcode the publisher left unstated is
56
56
  * not a postcode this repository may read as absent from the address.
57
57
  *
@@ -224,7 +224,7 @@ const COMPONENT_TYPES = ["ad:ThoroughfareName", "ad:PostalDescriptor", "ad:Admin
224
224
  * An address reaching the reader with fewer readable references has written one of them empty.
225
225
  *
226
226
  * That count is how the nine postcode-less addresses are told apart from an
227
- * address whose reference simply does not resolve.
227
+ * address whose reference does not resolve.
228
228
  */
229
229
  const COMPONENTS_PER_ADDRESS = 7
230
230
 
@@ -282,7 +282,7 @@ export function componentResourceID(href: string): string | null {
282
282
  * A Flemish street name read apart from the homonym discriminator that follows it.
283
283
  *
284
284
  * `gn:text` on an `ad:ThoroughfareName` states more than the street name: the name,
285
- * an underscore, and a discriminator that is usually empty.
285
+ * an underscore, and a discriminator that is empty in most identifiers.
286
286
  * Over 20,000 values at twenty offsets, 19,979 end with `_` and the remaining
287
287
  * 21 have a discriminator after it.
288
288
  *
package/lib/build.ts CHANGED
@@ -104,7 +104,7 @@ export async function buildCorpus(opts: BuildCorpusOptions): Promise<BuildCorpus
104
104
  opts.onProgress?.("parquet", "writing parquet files")
105
105
 
106
106
  // Each split gets its own generator seeded from one base, so a split's row order does
107
- // not depend on how many rows the earlier splits happened to contain.
107
+ // not depend on the number of rows the earlier splits happened to contain.
108
108
  const shuffled = (path: PathBuilderLike, salt: number) =>
109
109
  shuffleWithinWindow(streamJSONL<LabeledRow>(path), makeMulberry32(shuffleSeed + salt), shuffleWindow)
110
110