@mailwoman/corpus 10.4.0 → 10.5.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 (96) hide show
  1. package/data/PROVENANCE.md +14 -0
  2. package/data/address-source-register.json +32 -4
  3. package/data/source-resolutions.json +35 -0
  4. package/data/training-manifests/v0.7.2-address-systems.effective.json +1169 -0
  5. package/data/training-manifests/v0.7.2-address-systems.json +550 -0
  6. package/lib/adapters/cordis/adapter.ts +1 -1
  7. package/lib/adapters.ts +2 -0
  8. package/lib/be/adapters/brussels/adapter.ts +1 -1
  9. package/lib/be/adapters/wallonie/adapter.ts +1 -1
  10. package/lib/build/align.ts +1 -1
  11. package/lib/cz/adapters/cuzk/adapter.ts +1 -1
  12. package/lib/cz/tools/fetch/cuzk.ts +2 -2
  13. package/lib/es/tools/fetch/bizkaia.ts +1 -1
  14. package/lib/gb/adapters/os-open/adapter.ts +453 -0
  15. package/lib/gb/os-open/nearest-link.ts +169 -0
  16. package/lib/gb/os-open/open-names.ts +180 -0
  17. package/lib/gb/os-open/open-roads.ts +145 -0
  18. package/lib/gb/tools/fetch/os-open.ts +251 -0
  19. package/lib/nl/tools/fetch/kadaster.ts +1 -1
  20. package/lib/registers.ts +7 -0
  21. package/lib/source-register/effective-manifest.ts +12 -6
  22. package/lib/source-register/training-manifest.ts +30 -2
  23. package/lib/source-register.ts +1 -0
  24. package/lib/subvenue/surfaces.ts +1 -1
  25. package/lib/tools/fetch/gleif.ts +1 -1
  26. package/lib/tools/fetch.ts +2 -0
  27. package/lib/tools/lint/recipe-output.ts +1 -1
  28. package/lib/tools/migrate/source-names.ts +1 -1
  29. package/lib/us/adapters/usgov/nad/adapter.ts +1 -1
  30. package/lib/us/adapters/usgov/nppes/adapter.ts +1 -1
  31. package/out/adapters/cordis/adapter.js +1 -1
  32. package/out/adapters.d.ts.map +1 -1
  33. package/out/adapters.js +2 -0
  34. package/out/adapters.js.map +1 -1
  35. package/out/be/adapters/brussels/adapter.d.ts +1 -1
  36. package/out/be/adapters/brussels/adapter.js +1 -1
  37. package/out/be/adapters/wallonie/adapter.d.ts +1 -1
  38. package/out/be/adapters/wallonie/adapter.js +1 -1
  39. package/out/build/align.d.ts +1 -1
  40. package/out/cz/adapters/cuzk/adapter.d.ts +1 -1
  41. package/out/cz/adapters/cuzk/adapter.js +1 -1
  42. package/out/cz/tools/fetch/cuzk.js +2 -2
  43. package/out/cz/tools/fetch/cuzk.js.map +1 -1
  44. package/out/es/tools/fetch/bizkaia.js +1 -1
  45. package/out/es/tools/fetch/bizkaia.js.map +1 -1
  46. package/out/gb/adapters/os-open/adapter.d.ts +165 -0
  47. package/out/gb/adapters/os-open/adapter.d.ts.map +1 -0
  48. package/out/gb/adapters/os-open/adapter.js +298 -0
  49. package/out/gb/adapters/os-open/adapter.js.map +1 -0
  50. package/out/gb/os-open/nearest-link.d.ts +73 -0
  51. package/out/gb/os-open/nearest-link.d.ts.map +1 -0
  52. package/out/gb/os-open/nearest-link.js +133 -0
  53. package/out/gb/os-open/nearest-link.js.map +1 -0
  54. package/out/gb/os-open/open-names.d.ts +92 -0
  55. package/out/gb/os-open/open-names.d.ts.map +1 -0
  56. package/out/gb/os-open/open-names.js +107 -0
  57. package/out/gb/os-open/open-names.js.map +1 -0
  58. package/out/gb/os-open/open-roads.d.ts +80 -0
  59. package/out/gb/os-open/open-roads.d.ts.map +1 -0
  60. package/out/gb/os-open/open-roads.js +79 -0
  61. package/out/gb/os-open/open-roads.js.map +1 -0
  62. package/out/gb/tools/fetch/os-open.d.ts +91 -0
  63. package/out/gb/tools/fetch/os-open.d.ts.map +1 -0
  64. package/out/gb/tools/fetch/os-open.js +166 -0
  65. package/out/gb/tools/fetch/os-open.js.map +1 -0
  66. package/out/nl/tools/fetch/kadaster.d.ts +1 -1
  67. package/out/nl/tools/fetch/kadaster.js +1 -1
  68. package/out/registers.d.ts +7 -0
  69. package/out/registers.d.ts.map +1 -1
  70. package/out/registers.js +7 -0
  71. package/out/registers.js.map +1 -1
  72. package/out/source-register/effective-manifest.d.ts +9 -3
  73. package/out/source-register/effective-manifest.d.ts.map +1 -1
  74. package/out/source-register/effective-manifest.js +9 -4
  75. package/out/source-register/effective-manifest.js.map +1 -1
  76. package/out/source-register/training-manifest.d.ts +27 -0
  77. package/out/source-register/training-manifest.d.ts.map +1 -1
  78. package/out/source-register/training-manifest.js +13 -1
  79. package/out/source-register/training-manifest.js.map +1 -1
  80. package/out/source-register.d.ts +1 -1
  81. package/out/source-register.d.ts.map +1 -1
  82. package/out/source-register.js +1 -1
  83. package/out/source-register.js.map +1 -1
  84. package/out/subvenue/surfaces.d.ts +1 -1
  85. package/out/tools/fetch/gleif.d.ts +1 -1
  86. package/out/tools/fetch.d.ts +2 -0
  87. package/out/tools/fetch.d.ts.map +1 -1
  88. package/out/tools/fetch.js +2 -0
  89. package/out/tools/fetch.js.map +1 -1
  90. package/out/tools/lint/recipe-output.d.ts +1 -1
  91. package/out/tools/migrate/source-names.d.ts +1 -1
  92. package/out/us/adapters/usgov/nad/adapter.d.ts +1 -1
  93. package/out/us/adapters/usgov/nad/adapter.js +1 -1
  94. package/out/us/adapters/usgov/nppes/adapter.d.ts +1 -1
  95. package/out/us/adapters/usgov/nppes/adapter.js +1 -1
  96. package/package.json +14 -13
@@ -117,6 +117,20 @@ Of the four artifacts in this directory, the register is the one with a digest.
117
117
  lexicon, the reviewed VE postcode tuples and the license decisions do not. The license decisions are
118
118
  hand-written by design. That file is an input to this build rather than an output of one.
119
119
 
120
+ ### How a `sourceID` is numbered, and why a CSV row is appended
121
+
122
+ A `sourceID` is `<iso2>-<sector>-<ordinal>`, and the ordinal is the row's position among the research
123
+ CSV's rows of the same `iso2` and sector. Row order therefore decides the suffix: inserting a row before
124
+ an existing one of the same `iso2` and sector renumbers the later row and reattaches its entry in
125
+ `source-resolutions.json` to the wrong source, with no error. Append within an `iso2` and sector. Never
126
+ insert.
127
+
128
+ `ASSERTS_BY_ROLE`, `SOURCE_STATUS_BY_NAME`, `GEOMETRY_BY_NAME` and `RESEARCH_PASS_BY_ORIGIN` in
129
+ `packages/corpus/lib/tools/source-register/build.ts` are closed tables, and a CSV spelling outside one
130
+ fails the build. The sector column is the one mapped spelling: the research CSV writes
131
+ `property_building`, the register declares `property-building`, and the build replaces the underscore.
132
+ `ingestEligibilityProblems(source, register)` takes the whole register rather than the license record.
133
+
120
134
  ### What the register stores
121
135
 
122
136
  The register holds two tables rather than one nested list. The jurisdiction table is a complete
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "registerID": "address-source-register",
3
3
  "version": "0.1.0",
4
- "contentDigest": "3fa1de0a2980baed2173b5144d9a284911e6ccf4c98482d410f03dcb77f073b2",
4
+ "contentDigest": "39a609822e026395275ca1b80fd3054b14aa4ca74645ba581f77e34d1e42805e",
5
5
  "provenance": {
6
6
  "source": "mailwoman-research",
7
7
  "sourceVersion": "global-address-corpus-spec-v3",
@@ -14692,7 +14692,17 @@
14692
14692
  "researchPass": "2026-09-30-rights-review",
14693
14693
  "access": "quarterly CSV zip from the OS Data Hub downloads API",
14694
14694
  "sourceURL": "https://api.os.uk/downloads/v1/products/CodePointOpen",
14695
- "note": "Release 2026-08 holds 1,749,109 postcode units in 120 area files with no BT area, so it carries no Northern Ireland postcode. Columns are postcode, positional quality, easting, northing and GSS codes; there is no street, post town or locality name. The licence file adds Royal Mail and National Statistics acknowledgements."
14695
+ "note": "Release 2026-08 holds 1,749,109 postcode units in 120 area files with no BT area, so it carries no Northern Ireland postcode. Columns are postcode, positional quality, easting, northing and GSS codes; there is no street, post town or locality name. The licence file adds Royal Mail and National Statistics acknowledgements.",
14696
+ "adapterID": "gb-os-open",
14697
+ "addressRoles": {
14698
+ "Postcode": "other"
14699
+ },
14700
+ "coverage": "OS Code-Point Open, 2026-08 release, `codepo_gb.zip` sha256 `fc266d063e4d8c27bd23ea8a65c6855162942cf6b9fc73c91d0930d442a0eefb`, read 2026-10-14: 120 postcode-area CSV files, 1,749,109 rows, 10 columns (`Postcode,Positional_quality_indicator,Eastings,Northings,Country_code,NHS_regional_HA_code,NHS_HA_code,Admin_county_code,Admin_district_code,Admin_ward_code`), no header row. Great Britain only: 0 rows begin `BT`. The file carries no post town, locality or street. In the LS area, 22,197 of 22,198 postcodes carry coordinates, and 21,648 of those 22,197 (97.53%) lie within 100 m of a named OS Open Roads link; 903 share a coordinate with another postcode. The `gb-os-open` adapter also reads `gb-public-administration-2` (OS Open Names) and `gb-transport-1` (OS Open Roads), which share the license decision `ogl-uk-3.0-gb-ordnance-survey-opendata` and each record `absent` personal data.",
14701
+ "upstreamLineage": ["https://osdatahub.os.uk/downloads/open/CodePointOpen"],
14702
+ "personalDataReview": {
14703
+ "reading": "absent",
14704
+ "because": "Each row is a postcode unit with a point and administrative codes. No column records a person, an organization or a property."
14705
+ }
14696
14706
  },
14697
14707
  {
14698
14708
  "sourceID": "gb-public-administration-2",
@@ -14707,7 +14717,16 @@
14707
14717
  "researchPass": "2026-09-30-rights-review",
14708
14718
  "access": "CSV zip from the OS Data Hub downloads API",
14709
14719
  "sourceURL": "https://api.os.uk/downloads/v1/products/OpenNames",
14710
- "note": "Release 2026-07 holds 983,356 Named Road and Section Of Named Road features, each with a postcode district, populated place, district and county. Its feature ID equals the roadNameTOID on OS Open Roads links."
14720
+ "note": "Release 2026-07 holds 983,356 Named Road and Section Of Named Road features, each with a postcode district, populated place, district and county. Its feature ID equals the roadNameTOID on OS Open Roads links.",
14721
+ "addressRoles": {
14722
+ "NAME1": "other"
14723
+ },
14724
+ "coverage": "OS Open Names, 2026-07 release, `opname_csv_gb.zip` sha256 `6175912f1a3be7fffe556b4621a8d0686f1ea145e20ca61ce2b115a75a9bd69f`, read 2026-10-14: 819 CSV files, 3,047,173 rows, of which 983,356 have `LOCAL_TYPE` `Named Road` or `Section Of Named Road`. A road row carries `NAME1`, `NAME2` (the Welsh or Gaelic form where one exists), `POSTCODE_DISTRICT`, `POPULATED_PLACE`, `DISTRICT_BOROUGH` and `COUNTY_UNITARY`. In the LS area, 14,939 road rows carry an LS postcode district, and 20,677 of 21,648 postcode-to-street joins (95.51%) found a non-empty `POPULATED_PLACE`.",
14725
+ "upstreamLineage": ["https://osdatahub.os.uk/downloads/open/OpenNames"],
14726
+ "personalDataReview": {
14727
+ "reading": "absent",
14728
+ "because": "Rows are place and road names with their geometry and administrative parents. No column records a person, an organization or a property."
14729
+ }
14711
14730
  },
14712
14731
  {
14713
14732
  "sourceID": "gb-transport-1",
@@ -14722,7 +14741,16 @@
14722
14741
  "researchPass": "2026-09-30-rights-review",
14723
14742
  "access": "GML or GeoPackage zip from the OS Data Hub downloads API",
14724
14743
  "sourceURL": "https://api.os.uk/downloads/v1/products/OpenRoads",
14725
- "note": "Release 2026-04. Joining LS postcode points to the nearest named centreline within 100 m assigns 21,648 of 22,197 located postcodes, 97.53%, to a street."
14744
+ "note": "Release 2026-04. Joining LS postcode points to the nearest named centreline within 100 m assigns 21,648 of 22,197 located postcodes, 97.53%, to a street.",
14745
+ "addressRoles": {
14746
+ "road:name1": "other"
14747
+ },
14748
+ "coverage": "OS Open Roads, 2026-04 release, read 2026-10-14 for one 100 km tile only, `OSOpenRoads_SE.gml`: 177,637 `road:name1` elements. Each named link carries a `roadNameTOID`, and all 21,648 LS joins found that TOID in OS Open Names. The other tiles were not read.",
14749
+ "upstreamLineage": ["https://osdatahub.os.uk/downloads/open/OpenRoads"],
14750
+ "personalDataReview": {
14751
+ "reading": "absent",
14752
+ "because": "Rows are road centreline links with names and classifications. No column records a person, an organization or a property."
14753
+ }
14726
14754
  },
14727
14755
  {
14728
14756
  "sourceID": "gb-transport-2",
@@ -8,7 +8,42 @@
8
8
  "$sireneRepetition": "Nine rows below are one source, INSEE's SIRENE establishment register, split by overseas territory. The fields repeat because the register carries one row per jurisdiction and each row's coverage statement is about that territory, while the column layout and the diffusion mechanism are SIRENE's and identical throughout.",
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
+ "$osOpenData": "Three rows below, Code-Point Open, OS Open Names and OS Open Roads, publish address components rather than addresses: a postcode with its point, and a street name with its geometry and its postcode district. A training row is assembled by joining a postcode to the nearest named street and adding a synthesized house number. `other` is their role because `AddressRole` describes an address column's relation to a party or premise, and these columns describe neither. OS Open USRN takes no entry because its download was not read.",
11
12
  "resolutions": {
13
+ "gb-public-administration-1": {
14
+ "adapterID": "gb-os-open",
15
+ "addressRoles": {
16
+ "Postcode": "other"
17
+ },
18
+ "coverage": "OS Code-Point Open, 2026-08 release, `codepo_gb.zip` sha256 `fc266d063e4d8c27bd23ea8a65c6855162942cf6b9fc73c91d0930d442a0eefb`, read 2026-10-14: 120 postcode-area CSV files, 1,749,109 rows, 10 columns (`Postcode,Positional_quality_indicator,Eastings,Northings,Country_code,NHS_regional_HA_code,NHS_HA_code,Admin_county_code,Admin_district_code,Admin_ward_code`), no header row. Great Britain only: 0 rows begin `BT`. The file carries no post town, locality or street. In the LS area, 22,197 of 22,198 postcodes carry coordinates, and 21,648 of those 22,197 (97.53%) lie within 100 m of a named OS Open Roads link; 903 share a coordinate with another postcode. The `gb-os-open` adapter also reads `gb-public-administration-2` (OS Open Names) and `gb-transport-1` (OS Open Roads), which share the license decision `ogl-uk-3.0-gb-ordnance-survey-opendata` and each record `absent` personal data.",
19
+ "upstreamLineage": ["https://osdatahub.os.uk/downloads/open/CodePointOpen"],
20
+ "personalDataReview": {
21
+ "reading": "absent",
22
+ "because": "Each row is a postcode unit with a point and administrative codes. No column records a person, an organization or a property."
23
+ }
24
+ },
25
+ "gb-public-administration-2": {
26
+ "addressRoles": {
27
+ "NAME1": "other"
28
+ },
29
+ "coverage": "OS Open Names, 2026-07 release, `opname_csv_gb.zip` sha256 `6175912f1a3be7fffe556b4621a8d0686f1ea145e20ca61ce2b115a75a9bd69f`, read 2026-10-14: 819 CSV files, 3,047,173 rows, of which 983,356 have `LOCAL_TYPE` `Named Road` or `Section Of Named Road`. A road row carries `NAME1`, `NAME2` (the Welsh or Gaelic form where one exists), `POSTCODE_DISTRICT`, `POPULATED_PLACE`, `DISTRICT_BOROUGH` and `COUNTY_UNITARY`. In the LS area, 14,939 road rows carry an LS postcode district, and 20,677 of 21,648 postcode-to-street joins (95.51%) found a non-empty `POPULATED_PLACE`.",
30
+ "upstreamLineage": ["https://osdatahub.os.uk/downloads/open/OpenNames"],
31
+ "personalDataReview": {
32
+ "reading": "absent",
33
+ "because": "Rows are place and road names with their geometry and administrative parents. No column records a person, an organization or a property."
34
+ }
35
+ },
36
+ "gb-transport-1": {
37
+ "addressRoles": {
38
+ "road:name1": "other"
39
+ },
40
+ "coverage": "OS Open Roads, 2026-04 release, read 2026-10-14 for one 100 km tile only, `OSOpenRoads_SE.gml`: 177,637 `road:name1` elements. Each named link carries a `roadNameTOID`, and all 21,648 LS joins found that TOID in OS Open Names. The other tiles were not read.",
41
+ "upstreamLineage": ["https://osdatahub.os.uk/downloads/open/OpenRoads"],
42
+ "personalDataReview": {
43
+ "reading": "absent",
44
+ "because": "Rows are road centreline links with names and classifications. No column records a person, an organization or a property."
45
+ }
46
+ },
12
47
  "gb-mixed-regulatory-2": {
13
48
  "addressRoles": {
14
49
  "Address1,Address2,Address3,Town,Postcode": "facility"