Colorado: E-470 (five mainline plazas at the operator's own coordinates, ramp tolls per the calculator's exit table, rates from its rate feed), the Northwest Parkway (mainline gantries and the US 287 / Sheridan ramps, day and night by axles, from its 'Current Toll Rates' on nwpky.com; bill by plate adds the $1.35 per-trip Processing Fee), CDOT Express Lanes (told, never charged), the Pikes Peak Highway (driver's admission, May 1 - Nov 30 and Dec 1 - Apr 30 from the City's rate structure PDF pikespeak_rate_structure_2026).
e470_api_toll_rates (wp-json feed) and e470_calc_data (plazas, exits) whenever E-470 announces a rate change (January); the builder asserts the feed equals the 'Toll Rates' page.nwp_driver_information (nwpky.com/driver-information/, rendered on b100 with cfpage.mjs); its 'Pending Toll Rates' line announces changes; the builder asserts the table's wording.python3 e470_ramps.py (classifies ramp gantries), then bash chain.sh CO.
Hosts: geo1 (192.168.50.220) holds the sources, builders, drafts, map and API; b100 (192.168.50.14) is the test client. All times are Eastern.
| what | where (geo1 unless said) |
|---|---|
| sources list | /home/geo1/maps/toll/CO/urls.txt (name <tab> URL) |
| archived sources | /home/geo1/maps/toll/CO/sources/<name>/<YYYY-MM-DD>/ (file + meta.json: url, fetched, sha256) |
| builder | /home/geo1/system/handbuilt/co_state.py; shared code toll_common.py |
| OpenStreetMap inputs | /home/geo1/system/handbuilt/osm/co_* (cut from /home/geo1/maps/osm/us-latest.osm.pbf) |
| output | draft /srv/toll/draft/CO/ (the builders write here); published /srv/toll/CO/ (copied from the draft by promote.py publish). The map and the API read the published page, or the draft while it is listed for review |
| toll engine | source /home/geo1/maps/web/tolls.js, served copy /srv/maps/tolls.js (the API runs the served copy) |
| API | /home/geo1/maps/api/server.mjs on 127.0.0.1:8090 behind nginx /api/; pid in logs/test.pid |
| regression trips | b100: ~/apitest/site/cases.json, runner ~/apitest/run.py, browser check ~/apitest/browser.mjs |
python3 /home/geo1/system/handbuilt/fetch_list.py CO [name ...] (no names = every line of urls.txt). A new source: add a line to urls.txt first, then fetch it by name.node ~/apitest/fetch_b100.mjs <out> <name>=<url> ..., then rsync -a <out>/ geo1@192.168.50.220:/home/geo1/maps/toll/CO/sources/. Its meta.json records that it came from b100.diff, pdftotext -layout for PDFs). Same content: nothing to do. Changed amounts or a new effective date: rebuild (step 2) and update the expected amounts of the affected regression trips from the operator's own figures.python3 /home/geo1/maps/toll/bin/tollup.py CO update fetches the adapter's sources (bin/adapters/co.py), stores a document only when its content changes, writes one rate file per version under /home/geo1/maps/toll/CO/rates/ and appends every price change to history.csv (every run to runs.log). TOLL_WEB=/home/geo1/maps/toll/corpus python3 /home/geo1/maps/toll/bin/publish.py CO writes the corpus /home/geo1/maps/toll/corpus/CO from it (DE: plain publish.py DE writes /srv/toll/DE). Never hand-edit either. Then rebuild the draft (step 2) so it picks up the new rates.
cd /home/geo1/system/handbuilt && python3 co_state.pybash /home/geo1/system/handbuilt/chain.sh CO (logs in /tmp/co1.log ... co6.log; it prints the points, any point on no road and the untied count). The builders written since October 2026 share state_kit.py (sources, booths, terms, rows, write) and own_state.py (keeps a state's untied list to toll nodes inside the state, by the local geocoder; cache osm/node_state.json).cd /home/geo1/system/handbuilt; H=$(ls osm/co_highways_*.geojsonseq); J=$(ls osm/co_junctions_*.geojsonseq)
python3 co_state.py && python3 osm_streets.py CO $H $J && python3 co_state.py && python3 osm_snap.py CO && python3 toll_ways.py CO && python3 co_state.pytoll_ways.py's output: nodes claimed by two points: {} and points on no road: [] must both be empty.OSM way <id>) needs that way in osm/co_lane_ways.json (the builder writes it). A point on a road priced entry to exit needs gantry in its location name, or toll_ways.py treats it as a position-only exit marker.osm/ny_not_toll_nodes.json (congestion-zone gantries that are not tolls); every state's untied list leaves those out, so rebuild NJ and PA after NY.tolls.js when it starts. Restart it: cd /home/geo1/maps/api && kill $(cat logs/test.pid); (nohup /home/geo1/maps/node/bin/node server.mjs > logs/server.log 2>&1 & echo $! > logs/test.pid) (it is started by hand, not a service).python3 ~/apitest/run.py ~/apitest/site/cases.json. Every trip must be OK. Add a trip for every rate or rule you change, with the amount taken from the operator's own source.tolls.js): edit /home/geo1/maps/web/tolls.js, check with /home/geo1/maps/node/bin/node --check, copy to /srv/maps/tolls.js with sudo install -o www-data -g www-data -m 644, restart the API, run the trips.The builders match toll points to the OSM way ids the router drives, so the extracts here must come from the same us-latest.osm.pbf the router (Valhalla, /home/geo1/maps/valhalla_data) was built from (now 2026-09-27). New OSM data means: rebuild the router tiles, then for each state cut the box, rebuild its OSM inputs and run the full chain, then compare untied_toll_nodes.csv and the estimated positions below. The box for CO and the cutting commands are in the state's procedure above; the toll-node and way index comes from python3 tollnode_ways.py CO.
A rebuild writes the draft (/srv/toll/draft/CO); the published page (/srv/toll/CO) does not change. python3 /home/geo1/maps/toll/bin/promote.py review CO lists the draft for review: the map and the API then read it instead of the published page. Run the regression trips from b100. After approval, python3 /home/geo1/maps/toll/bin/promote.py publish CO copies the draft to /srv/toll/CO (the previous page is kept under /home/geo1/maps/toll/CO/published/<time>/) and takes it off the review list. After a change, update the coverage line for CO in the API page (/api.html, generator /home/geo1/maps/api/doc/api_page.py) and rebuild this page: python3 /home/geo1/system/handbuilt/maintain_pages.py CO.
Each fetch is kept in its own dated folder under /home/geo1/maps/toll/CO/sources/<name>/; the builder always reads the newest one, so a new fetch takes effect at the next rebuild and the old one stays for comparison.
| source | fetched (newest) | fetches kept | how | listed in urls.txt | rows using it |
|---|---|---|---|---|---|
cdot_dynamic_tolling_nov2024https://www.codot.gov/news/2024/november/dynamic-tolling-nov25-i25-westbound-i70 | 2026-10-10 | 1 | fetch_list.py | yes | |
cdot_el_c470https://www.codot.gov/programs/expresslanes/c470 | 2026-10-10 | 1 | fetch_list.py | yes | 5 |
cdot_el_central_70_express_laneshttps://www.codot.gov/programs/expresslanes/central-70-express-lanes | 2026-10-10 | 1 | fetch_list.py | yes | 5 |
cdot_el_eastbound_i_70_mountain_express_lanehttps://www.codot.gov/programs/expresslanes/eastbound-i-70-mountain-express-lane | 2026-10-10 | 1 | fetch_list.py | yes | |
cdot_el_frequently_asked_questionshttps://www.codot.gov/programs/expresslanes/frequently-asked-questions | 2026-10-10 | 1 | fetch_list.py | yes | |
cdot_el_i_25_central_express_laneshttps://www.codot.gov/programs/expresslanes/i-25-central-express-lanes | 2026-10-10 | 1 | fetch_list.py | yes | 9 |
cdot_el_i_25_express_lanes_us_36_to_e_470_northwhttps://www.codot.gov/programs/expresslanes/i-25-express-lanes-us-36-to-e-470-northwest-pa | 2026-10-10 | 1 | fetch_list.py | yes | 5 |
cdot_el_i_25_north_express_lanes_johnstown_to_fohttps://www.codot.gov/programs/expresslanes/i-25-north-express-lanes-johnstown-to-fort-col | 2026-10-10 | 1 | fetch_list.py | yes | 7 |
cdot_el_i_25_north_express_lanes_mead_to_berthouhttps://www.codot.gov/programs/expresslanes/i-25-north-express-lanes-mead-to-berthoud | 2026-10-10 | 1 | fetch_list.py | yes | |
cdot_el_i_25_south_gaphttps://www.codot.gov/programs/expresslanes/i-25-south-gap | 2026-10-10 | 1 | fetch_list.py | yes | 7 |
cdot_el_us_36_express_laneshttps://www.codot.gov/programs/expresslanes/us-36-express-lanes | 2026-10-10 | 1 | fetch_list.py | yes | 7 |
cdot_el_usehttps://www.codot.gov/programs/expresslanes/use | 2026-10-10 | 1 | fetch_list.py | yes | |
cdot_el_westboundi70https://www.codot.gov/programs/expresslanes/westboundi70 | 2026-10-10 | 1 | fetch_list.py | yes | 5 |
cdot_expresslaneshttps://www.codot.gov/programs/expresslanes | 2026-10-10 | 1 | fetch_list.py | yes | |
cdot_southgap_tolls_begin_2024https://www.codot.gov/news/2024/january/tolls-begin-jan-17-on-the-i-25-south-gap-express-l | 2026-10-10 | 1 | fetch_list.py | yes | |
e470_api_toll_rateshttps://e470.com/wp-json/e470/v1/toll-rates | 2026-10-10 | 1 | fetch_list.py | yes | 336 |
e470_calc_datahttps://e470.com/app/themes/fru_timber/calculator/data.json | 2026-10-10 | 1 | fetch_list.py | yes | |
e470_calculatorhttps://www.e-470.com/toll-rates/calculator/ | 2026-10-10 | 1 | fetch_list.py | yes | |
e470_calculator_jshttps://e470.com/app/themes/fru_timber/calculator/scripts-es5.js | 2026-10-10 | 1 | fetch_list.py | yes | |
e470_discounthttps://www.e-470.com/discount/ | 2026-10-10 | 1 | fetch_list.py | yes | |
e470_how_tolling_workshttps://www.e-470.com/how-tolling-works/ | 2026-10-10 | 1 | fetch_list.py | yes | |
e470_partner_roadshttps://www.e-470.com/partner-roads/ | 2026-10-10 | 1 | fetch_list.py | yes | |
e470_toll_rateshttps://www.e-470.com/toll-rates/ | 2026-10-10 | 1 | fetch_list.py | yes | 1 |
expresstoll_roads_rateshttps://www.expresstoll.com/content-pages/roads-and-rates | 2026-10-10 | 1 | fetch_list.py | yes | |
nwp_driver_informationhttps://www.nwpky.com/driver-information/ | 2026-10-10 | 1 | b100 (192.168.50.14), headless Chrome, rendered page: the site refuses scripts (Cloudflare) | yes | 61 |
pikespeak_hours_rateshttps://coloradosprings.gov/pikes-peak-americas-mountain/page/pikes-peak-hours-and-rates | 2026-10-10 | 1 | fetch_list.py | yes | 2 |
pikespeak_rate_structure_2026https://drivepikespeak.b-cdn.net/app/uploads/2026/09/PPAM-Rate-Structure-and-Hours-of-Oper | 2026-10-10 | 1 | fetched on b100 (192.168.50.14): City of Colorado Springs (Pikes Peak - America's Mountain) 'PPAM Highway Rate Structure | yes | 1 |
| id | facility | operator | points | rate / trip rows | effective dates in the rows | source |
|---|---|---|---|---|---|---|
CO-E470 | E-470 | E-470 Public Highway Authority | 24 | 336 | 2026-10-10_observed | e470_toll_rates |
CO-EL-C470 | C-470 Express Lanes (I-25 - Wadsworth Blvd) | Colorado Transportation Investment Office (CTIO, CDOT) | 4 | 4 | (none printed) | cdot_el_c470 |
CO-EL-C70 | Central 70 Express Lanes (I-25 - Chambers Rd) | Colorado Transportation Investment Office (CTIO, CDOT) | 4 | 4 | (none printed) | cdot_el_central_70_express_lanes |
CO-EL-I25N | I-25 Express Lanes (US 36 - E-470) | Colorado Transportation Investment Office (CTIO, CDOT) | 4 | 4 | (none printed) | cdot_el_i_25_express_lanes_us_36_to_e_470_northw |
CO-EL-I25NC | I-25 North Express Lanes (Berthoud - Fort Collins) | Colorado Transportation Investment Office (CTIO, CDOT) | 6 | 6 | (none printed) | cdot_el_i_25_north_express_lanes_johnstown_to_fo |
CO-EL-I25SG | I-25 South Gap Express Lanes (Monument - Castle Rock) | Colorado Transportation Investment Office (CTIO, CDOT) | 5 | 6 | (none printed) | cdot_el_i_25_south_gap |
CO-EL-US36 | US 36 Express Lanes (Federal Blvd - Table Mesa Dr) | Colorado Transportation Investment Office (CTIO, CDOT) | 6 | 6 | (none printed) | cdot_el_us_36_express_lanes |
CO-EL-I25C | I-25 Central Express Lanes (reversible, US 36 - downtown Denver) | Colorado Transportation Investment Office (CTIO, CDOT) | 3 | 8 | (none printed) | cdot_el_i_25_central_express_lanes |
CO-EL-I70M | I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire) | Colorado Transportation Investment Office (CTIO, CDOT) | 4 | 4 | (none printed) | cdot_el_westboundi70 |
CO-PPH | Pikes Peak Highway | City of Colorado Springs (Pikes Peak - America's Mountain) | 1 | 2 | 2026-10-10_observed | pikespeak_hours_rates |
CO-NWP | Northwest Parkway | Northwest Parkway Public Highway Authority (concession operator) | 3 | 60 | 2026-05-01 | nwp_driver_information |
| point | facility | location | placed on | why |
|---|---|---|---|---|
CO-EL-C470-01 | C-470 Express Lanes (I-25 - Wadsworth Blvd) | beside: C-470 Express Lanes (I-25 - Wadsworth Blvd), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-C470-02 | C-470 Express Lanes (I-25 - Wadsworth Blvd) | beside: C-470 Express Lanes (I-25 - Wadsworth Blvd), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-C470-03 | C-470 Express Lanes (I-25 - Wadsworth Blvd) | beside: C-470 Express Lanes (I-25 - Wadsworth Blvd), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-C470-04 | C-470 Express Lanes (I-25 - Wadsworth Blvd) | beside: C-470 Express Lanes (I-25 - Wadsworth Blvd), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-C70-01 | Central 70 Express Lanes (I-25 - Chambers Rd) | beside: Central 70 Express Lanes (I-25 - Chambers Rd), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-C70-02 | Central 70 Express Lanes (I-25 - Chambers Rd) | beside: Central 70 Express Lanes (I-25 - Chambers Rd), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-C70-03 | Central 70 Express Lanes (I-25 - Chambers Rd) | beside: Central 70 Express Lanes (I-25 - Chambers Rd), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-C70-04 | Central 70 Express Lanes (I-25 - Chambers Rd) | beside: Central 70 Express Lanes (I-25 - Chambers Rd), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25N-01 | I-25 Express Lanes (US 36 - E-470) | beside: I-25 Express Lanes (US 36 - E-470), northbound | the northbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25N-02 | I-25 Express Lanes (US 36 - E-470) | beside: I-25 Express Lanes (US 36 - E-470), southbound | the southbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25N-03 | I-25 Express Lanes (US 36 - E-470) | beside: I-25 Express Lanes (US 36 - E-470), northbound | the northbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25N-04 | I-25 Express Lanes (US 36 - E-470) | beside: I-25 Express Lanes (US 36 - E-470), southbound | the southbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25NC-01 | I-25 North Express Lanes (Berthoud - Fort Collins) | beside: I-25 North Express Lanes (Berthoud - Fort Collins), northbound | the northbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25NC-02 | I-25 North Express Lanes (Berthoud - Fort Collins) | beside: I-25 North Express Lanes (Berthoud - Fort Collins), southbound | the southbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25NC-03 | I-25 North Express Lanes (Berthoud - Fort Collins) | beside: I-25 North Express Lanes (Berthoud - Fort Collins), northbound | the northbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25NC-04 | I-25 North Express Lanes (Berthoud - Fort Collins) | beside: I-25 North Express Lanes (Berthoud - Fort Collins), southbound | the southbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25NC-05 | I-25 North Express Lanes (Berthoud - Fort Collins) | beside: I-25 North Express Lanes (Berthoud - Fort Collins), northbound | the northbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25NC-06 | I-25 North Express Lanes (Berthoud - Fort Collins) | beside: I-25 North Express Lanes (Berthoud - Fort Collins), southbound | the southbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25SG-01 | I-25 South Gap Express Lanes (Monument - Castle Rock) | beside: I-25 South Gap Express Lanes (Monument - Castle Rock), northbound | the northbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25SG-02 | I-25 South Gap Express Lanes (Monument - Castle Rock) | beside: I-25 South Gap Express Lanes (Monument - Castle Rock), southbound | the southbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25SG-03 | I-25 South Gap Express Lanes (Monument - Castle Rock) | beside: I-25 South Gap Express Lanes (Monument - Castle Rock), northbound | the northbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25SG-04 | I-25 South Gap Express Lanes (Monument - Castle Rock) | beside: I-25 South Gap Express Lanes (Monument - Castle Rock), southbound | the southbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-US36-01 | US 36 Express Lanes (Federal Blvd - Table Mesa Dr) | beside: US 36 Express Lanes (Federal Blvd - Table Mesa Dr), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-US36-02 | US 36 Express Lanes (Federal Blvd - Table Mesa Dr) | beside: US 36 Express Lanes (Federal Blvd - Table Mesa Dr), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-US36-03 | US 36 Express Lanes (Federal Blvd - Table Mesa Dr) | beside: US 36 Express Lanes (Federal Blvd - Table Mesa Dr), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-US36-04 | US 36 Express Lanes (Federal Blvd - Table Mesa Dr) | beside: US 36 Express Lanes (Federal Blvd - Table Mesa Dr), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-US36-05 | US 36 Express Lanes (Federal Blvd - Table Mesa Dr) | beside: US 36 Express Lanes (Federal Blvd - Table Mesa Dr), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-US36-06 | US 36 Express Lanes (Federal Blvd - Table Mesa Dr) | beside: US 36 Express Lanes (Federal Blvd - Table Mesa Dr), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25C-01 | I-25 Central Express Lanes (reversible, US 36 - downtown Denver) | beside: I-25 Central Express Lanes (reversible, US 36 - downtown Denver), southbound | the southbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I25C-02 | I-25 Central Express Lanes (reversible, US 36 - downtown Denver) | beside: I-25 Central Express Lanes (reversible, US 36 - downtown Denver), northbound | the northbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I70M-01 | I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire) | beside: I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I70M-02 | I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire) | beside: I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I70M-03 | I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire) | beside: I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire), eastbound | the eastbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
CO-EL-I70M-04 | I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire) | beside: I-70 Mountain Express Lanes (Veterans Memorial Tunnels - Empire), westbound | the westbound general-lane carriageway beside the Express Lane | R3 estimate: a notice point on the general-lane carriageway within the corridor CDOT names |
R1: 5, R2: 3, R2a: 3, R2d: 19, R3: 34, direction: 5, not: 6, optional,: 8, per: 1, plan: 1, position: 1 (all in decisions.csv).
None.
Toll booths / gantries mapped in OpenStreetMap on or near this state's roads that no toll point claims; a route through one lists it under unpriced. After an OSM refresh, look at new ones here (untied_toll_nodes.csv): a new gantry on a priced road means a point is missing.
Run from b100 (never on geo1): python3 ~/apitest/run.py ~/apitest/site/cases.json. Every trip must come back OK; a changed amount is either a rate change (update the expected amount from the operator's own source) or a fault.
| trip | expected |
|---|---|
| CO E-470 Plaza A only, ExpressToll (account_co) car ($2.60) | $2.60 |
| CO E-470 Plaza A only, License Plate Toll car ($4.20) | $4.20 |
| CO Pikes Peak Highway to the summit, cash car (driver, $18) | $18.00 |
| CO US 36 Express Lanes beside the route: told, not charged ($0) | $0.00 |
| CO E-470 Jordan Rd on + Gartrell Rd off (northbound), ExpressToll car ($1.25 + $1.25) | $2.50 |
| CO Northwest Parkway US 36 -> I-25 (mainline), ExpressToll car, 10:30 ET | $8.75 |
| CO Northwest Parkway US 36 -> I-25 (mainline), plate car, 02:00 ET (night) | $6.90 |
| CO E-470 on at exit 22 (38th Ave) northbound -> off at exit 28 (Pena Blvd), ExpressToll car | $1.25 |
| CO E-470 northbound off at exit 36 (Sable Blvd), ExpressToll car | $2.50 |