forked from OurHike/OurHike
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatc_updates.json
More file actions
222 lines (222 loc) · 10.4 KB
/
Copy pathatc_updates.json
File metadata and controls
222 lines (222 loc) · 10.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
{
"_README": [
"ATC's own Trail Updates, as reviewed by a person, keyed by ATC's slug.",
"",
"features/ATC_TRAIL_UPDATES.md is the design. export_atc_updates.py bakes",
"this file into conditions/atc_updates.json, which the app reads as the",
"ATC's word rather than as OurHike's (#459, #460, #461).",
"",
"EDITED BY HAND, AND THAT IS THE DESIGN RATHER THAN A STOPGAP. ATC",
"publishes these as prose on their website, in NOBO miles from Springer -",
"the same number as `closures.start_mile_marker`. Parsing that is easy and",
"is already proven (spike_atc_updates.py: seven of nine live updates carry",
"a placeable mile reference). What is not automatable is deciding whether",
"a parsed range is RIGHT, and three specific things go wrong:",
"",
" - A regex produces a confident wrong answer. `NOBO mile 1,503.6` read",
" without the thousands separator is mile 1: a Connecticut shelter",
" drawn in Georgia. It parses, it looks plausible, it is 1,502 miles",
" wrong, and no schema check catches it.",
" - Some updates END a closure. 'NC/TN: Iron Mtn Gap Reopened' means the",
" trail is open again. An ingest that only ever adds closures",
" accumulates barriers across trail people have been walking for weeks.",
" - One update can state several ranges, accumulated over months of",
" edits, and the current one is not mechanically distinguishable from",
" its own history.",
"",
"So: a person reads ATC's page, writes the rows here, and a merged pull",
"request is what releases them - the same property DATA_RELEASES.md gives",
"every other build input. #463 would open that pull request automatically",
"one day; it is deliberately post-MVP and it proposes, never publishes.",
"",
"NINE UPDATES, EDITED ROUGHLY WEEKLY. That is what makes a human gate",
"affordable rather than aspirational.",
"",
"WHAT A ROW CARRIES, and what it must not. Facts and a link: the mile",
"range, ATC's category, the states, their headline, their own last-updated",
"date, and the URL of their page. NOT their body text - that is ATC's",
"writing, and sources.json's `licence` field on `atc_trail_updates`",
"records why this file stops at the facts.",
"",
" {",
" \"atc_id\": \"harpers-ferry-footbridge-closure\",",
" \"title\": \"Harpers Ferry: Footbridge Closure\",",
" \"category\": \"Detour\",",
" \"states\": [\"MD\", \"WV\"],",
" \"start_mile_marker\": 1026.7,",
" \"end_mile_marker\": 1026.7,",
" \"obstructs_trail\": true,",
" \"updated_at\": \"2026-07-31T19:54:12Z\",",
" \"source_url\": \"https://appalachiantrail.org/trail-updates/harpers-ferry-footbridge-closure/\"",
" }",
"",
"A POINT rather than a range - a shelter, a footbridge - is the same mile",
"in both markers. lib/closureSpan.ts reads that as a zero-length span and",
"draws it, which is right: ATC publishes several.",
"",
"`obstructs_trail` IS THE ONE FIELD THAT IS NOT A FACT ABOUT ATC'S PAGE.",
"It is your answer to one question: is a hiker stopped from walking",
"through here? Only rows where that is true get drawn as a band across the",
"trail; the rest still reach a hiker as a banner naming the ATC.",
"",
"It cannot be read off `category`, and the live page is why. Measured",
"2026-08-12:",
"",
" Connecticut: Limestone Spring Shelter Closed Closure obstructs: NO",
" Harpers Ferry: Footbridge Closure Detour obstructs: YES",
"",
"The only notice ATC files as `Closure` is a closed SHELTER, with the trail",
"past it open - and the one thing that genuinely stops a hiker, the way",
"across the Potomac, is filed as `Detour`. A rule reading the category is",
"wrong in both directions at once. When in doubt, false: losing the band",
"keeps the banner, and a warning that is only a banner is a smaller failure",
"than a barrier that is not there.",
"ignored. When in doubt, false: losing the band keeps the banner, and a",
"warning that is only a banner is a smaller failure than a barrier that",
"is not there.",
"",
"AN UPDATE WITH NO PLACE DOES NOT GO IN THIS FILE. Two of the nine live on",
"2026-08-09 were like that and neither is a defect to fix: a region-wide",
"severe-weather advisory spanning ten states, and a law-enforcement",
"request that is not a place at all. Pinning either to a mile would be",
"actively wrong. They are real information with no home on a map yet, and",
"features/ATC_TRAIL_UPDATES.md leaves that an open question rather than",
"inventing a screen for it.",
"",
"`reviewed_at` IS NOT OPTIONAL AND IS NOT THE BAKE'S DATE. It is the day a",
"person last checked this file against ATC's page. An empty file with no",
"`reviewed_at` says *nobody has looked*; an empty file WITH one says *we",
"looked and ATC has nothing placeable*. Only the second is publishable,",
"and export_atc_updates.py refuses to write an artifact without it rather",
"than shipping the first one dressed as the second.",
"",
"`source_marker` is the ETag ATC's trail-updates feed carried at that",
"review. check_freshness.py compares it against the live feed, so a",
"STALE verdict on `atc_trail_updates` means *a person should re-read",
"ATC's page* - the one source in that check no automated run can clear.",
"Get it with:",
"",
" curl -sI https://appalachiantrail.org/trail-updates/feed/ | grep -i etag",
"",
"WHAT IS IN HERE NOW, reviewed 2026-08-12 against ATC's live page. Nine",
"updates were posted; six are here. The three that are not are not",
"omissions:",
"",
" NC/TN: Iron Mtn Gap Reopened the trail is OPEN again, and it states",
" five different ranges accumulated over",
" months of edits. An ingest that only",
" ever adds closures would have barred a",
" trail people are walking.",
" NC - VT: Severe Weather eleven states, no mile reference. Real",
" information with no place on a map.",
" New York: Help Identifying... a law-enforcement request. Not a place",
" at all, and pinning it to one would be",
" actively wrong.",
"",
"Of the six that are here, exactly ONE obstructs the trail: the Harpers",
"Ferry footbridge. Two bear warnings, a closed shelter, a yearly flooding",
"reminder and the Helene advisory are all real and none of them stops a",
"hiker walking through, so they are dots on the map and a banner rather",
"than barriers across it.",
"",
"The VA Creeper closure that features/ATC_TRAIL_UPDATES.md quotes",
"throughout was gone from ATC's page by 2026-08-12. That is the staleness",
"argument in this document arriving in three days rather than in theory,",
"and it is why `reviewed_at` and `source_marker` are not decoration."
],
"source": {
"key": "atc_trail_updates",
"title": "A.T. Trail Updates",
"url": "https://appalachiantrail.org/trail-updates/",
"provider": "Appalachian Trail Conservancy",
"attribution": "Appalachian Trail Conservancy",
"licence": "Facts and a link only - see sources.json's `atc_trail_updates` entry for the full statement and #458 for how it was settled."
},
"reviewed_at": "2026-08-12",
"reviewed_by": "Claude Code, against appalachiantrail.org/trail-updates - confirmed at merge",
"source_marker": "\"3d304d545f77af86936a9b3e6704f029\"",
"updates": [
{
"atc_id": "great-smoky-mtns-np-bear-warning-for-silers-bald",
"title": "Great Smoky Mtns NP: Bear Warning for Silers Bald",
"category": "Animal",
"states": [
"NC",
"TN"
],
"start_mile_marker": 195.8,
"end_mile_marker": 195.8,
"obstructs_trail": false,
"updated_at": "2026-08-12T13:00:04Z",
"source_url": "https://appalachiantrail.org/trail-updates/great-smoky-mtns-np-bear-warning-for-silers-bald/"
},
{
"atc_id": "sw-va-bear-activity-at-rhododendron-gap",
"title": "SW VA: Bear Activity at Rhododendron Gap",
"category": "Animal",
"states": [
"VA"
],
"start_mile_marker": 500.2,
"end_mile_marker": 500.2,
"obstructs_trail": false,
"updated_at": "2026-08-11T16:30:29Z",
"source_url": "https://appalachiantrail.org/trail-updates/sw-va-bear-activity-at-rhododendron-gap/"
},
{
"atc_id": "harpers-ferry-footbridge-closure",
"title": "Harpers Ferry: Footbridge Closure",
"category": "Detour",
"states": [
"MD",
"WV"
],
"start_mile_marker": 1026.7,
"end_mile_marker": 1026.7,
"obstructs_trail": true,
"updated_at": "2026-07-31T19:54:12Z",
"source_url": "https://appalachiantrail.org/trail-updates/harpers-ferry-footbridge-closure/"
},
{
"atc_id": "vernie-swamp-area-trail-flooding-standing-update",
"title": "Vernie Swamp Area: Trail Flooding, Yearly Reminder",
"category": "Detour",
"states": [
"NJ"
],
"start_mile_marker": 1346.3,
"end_mile_marker": 1346.3,
"obstructs_trail": false,
"updated_at": "2026-07-20T17:55:27Z",
"source_url": "https://appalachiantrail.org/trail-updates/vernie-swamp-area-trail-flooding-standing-update/"
},
{
"atc_id": "connecticut-limestone-spring-shelter-closed",
"title": "Connecticut: Limestone Spring Shelter Closed",
"category": "Closure",
"states": [
"CT"
],
"start_mile_marker": 1503.6,
"end_mile_marker": 1503.6,
"obstructs_trail": false,
"updated_at": "2026-07-24T13:06:50Z",
"source_url": "https://appalachiantrail.org/trail-updates/connecticut-limestone-spring-shelter-closed/"
},
{
"atc_id": "helene-storm-damage",
"title": "Hurricane Helene Storm Damage",
"category": "Alert",
"states": [
"NC",
"TN",
"VA"
],
"start_mile_marker": 239.4,
"end_mile_marker": 637.8,
"obstructs_trail": false,
"updated_at": "2025-09-23T17:51:09Z",
"source_url": "https://appalachiantrail.org/trail-updates/helene-storm-damage/"
}
]
}