- Workflows free about 20 GB of unused runner toolchains (dotnet, Android, GHC, CodeQL, Boost) before checking out the repo. The 29 Oct daily pickup failed with "No space left on device": the checkout is now about 8 GB of data, too much for the runner's free space once the pickup's downloads are added. Longer term, raw chips and logs need to move out of git.
Version history
Every change to the Roger Wilco Imagery pipeline and this site, numbered and dated. Versions follow semantic versioning while the project is pre-alpha (0.x).
Pipeline
v0.8.4
commit
1737a35Frontend
v0.20.0
built 30 Oct 2026 04:30 MDT (10:30 UTC)
Pipeline
Data collection, analysis and reporting.
- Cloud mask v2 everywhere Sentinel-2 is read.
incident_pull.py(baseline must pass it; dNBR compares only pixels both masks call clear; cloudmask.mask(min_area=…): extra-test cloud patches smaller than this are left alone.detect.pyuses 200 px (aircraft are at most 60 px) and- Heat sources (roadmap
flare-vs-fire, step 1).scripts/heat_sources.pylearns which hot spots burn all the time from FIRMS history (a incident_pull.py: VIIRS near-real-time granules (*_NRT, from LANCE) failed with "file signature not found" since 27 Oct: requests droppedtask.py: the imagery step passed--bbox W,S,E,Nas two arguments, so a western-hemisphere box (leading minus) failed with "expected one- *Incident pull* workflow: no longer reports failure when trigger line 2 (GOES) is empty.
- Tasking (custom runs), phase 1.
sources.yamllists what can be tasked: Sentinel-2, Sentinel-1, Landsat, VIIRS granules, FIRMS, incident_pull.py: Sentinel-1 scenes that only have HH/HV (most Canadian and Arctic SDH acquisitions) are read as HH instead of
- Cloud mask v2 for the daily pickup (
scripts/cloudmask.py). SCL let fair-weather cumulus and haze through as clear: Rzeszów on 27 Oct scored - Sentinel-2 raw chips gain a sixth layer, B11 (SWIR 1.6 µm), used for snow vs cloud.
- On the 103 saved passes with a baseline (
tools/cloudmask_eval.py): Rzeszów 27 Oct 09:36 1.00 → 0.46 clear (no longer usable), 09:46 change - Not yet:
detect.py,incident_pull.pyandwilco_analysis.pystill use SCL alone.
- Lead differentiation test (journalist hold). SITREPs 014 and 015 were built as a test of differentiated leads: the full report (with
- Lead status register (
reports/lead-status.yaml). - NASA FIRMS map key:
scripts/firms_area.pyand the *FIRMS area pull* workflow (any box, any dates, every satellite). Two keys as named - Tracks end as closed or aborted and stay in the Track archive; TRK-001–007 ended.
- ADS-B archive scanner:
--hex(whole-day traces) and abasesprofile (aircraft using each detect site); commit step keeps any scripts/identify_counts.py: names for ship and aircraft counts from transponders (roadmap item ship-air-counts; first run pending).- Reports: SITREP 014 (Israel election day), SITREP 015 (four zones, 21–27 Oct); Wainwright airlift whole-route plate.
- Ship counts from Sentinel-1 radar (CFAR detector on a JRC surface-water mask) and transient-aircraft counts from Sentinel-2 (change vs a multi-scene median on OpenStreetMap aprons), with size classes and annotated plates (
scripts/detect.py). - ADS-B logging of military-flagged aircraft near watchlist sites every 20 minutes (adsb.lol, no key) and optional AIS logging (aisstream.io, needs
AISSTREAM_API_KEY), stored on thetracksbranch; detections are matched to these for identities. - Pilot sites flagged
detect: true: Halifax, Esquimalt, Norfolk, Trenton, Winnipeg, Barksdale.
- Added 65 radar sites: the full North Warning System (45 in Canada, 6 on Alaska's North Slope) and 14 Alaska Radar System (NORAD) long-range radars. New
programfield. - Added 12 Canadian installations and detachments abroad: operational support hubs (Kuwait, Germany, Senegal, Jamaica), Formation Europe/SHAPE, NATO Geilenkirchen, Stavanger, Lille, Izmir, and NORAD sites in Colorado Springs and Alaska.
- Watchlist now 164 sites (160 active).
- Added 38 Canadian military installations (all CAF bases, wings, support bases and stations on DND's footprint list, plus major training areas, Ottawa HQ sites, and northern forward operating locations). Canada now has 43 sites; watchlist 87.
- Added Taman Peninsula (Crimean energy-bridge substation area) and a coarse peninsula-wide Crimea box after the 23–24 Oct blackout strike. Watchlist now 49 sites.
- Every site tagged with a geographic region, US combatant command (area of responsibility) and a list of countries, for filtering.
- Every watchlist site now carries an
addedtimestamp (backfilled from git history). - SITREP register (
reports/index.yaml) for numbered reports; frontend builds from it. - SITREP 002 issued; shared report styles.
- Southern Lebanon box extended north to cover the Nabatieh area.
- Gaza box flagged: rectangle includes Israeli territory; polygon support pending.
- Quicklook-only mode with georeference sidecars for long look-back windows.
- 7-day pull; weekly SITREP 001 (7 d / 72 h / 24 h) with annotated plates and news correlation.
- Watchlist expanded to 47 sites: +10 bases, +3 conflict zones, +10 infrastructure sites.
- 3-hourly FIRMS thermal watch with persistent-site baselines, seeded with 7 days.
- First watchlist (18 bases, 6 zones), daily pickup of Sentinel-2, Sentinel-1, Landsat 8/9 and FIRMS.
- First 48-hour run and analyst SITREP.
Frontend
This website.
- The v2 interface is the site. Its pages now live at the root, so the address bar shows
/,place/…,report/…andmap.htmlinstead of/v2/…. - The classic site is archived at
/v1/: the last build that still had it (29 Oct 2026, 06:26 UTC), frozen bytools/make_v1_archive.pyinarchive/v1/. tests/hold_leak_test.pychecks the root pages.
- A carried-forward lead now stays held until the lead it repeats is released. SITREP 017's L4 repeats SITREP 016's L1 word for word; under a live hold it would have published 016's lead early. The deploy's hold-leak test caught it and blocked every build since the pipeline published SITREP 017.
- Build: blobless pipeline checkout, and runner disk freed before checkout (deploys had been failing with "no space left on device").
- Tasking, phase 1 (admins only): a Task page (v2/task.html, "Task" in the rail, "Task a pass" on every place page) to order a custom run of all sources, a preset (imagery, fire, air) or a hand-picked set, for one to ten targets (a watchlist site, a point and radius, or a box) over a date range.
- Fixed: the full-screen Map was 2 px tall (a 0.16.1 rule for the map's fallback message overrode its layout), so on phones it showed no map at all.
- Map on phones: the Layers and time panel folds to one line at the top of the map; tap it to open.
- The CSS and JS links carry a hash of their content (
v2.css?v=…), so phones and browsers pick up a new deploy instead of an old cached stylesheet (the stray "▶ More" over the phone tab bar).
- The classic site is retired. Every page now uses the v2 interface:
- Place pages now carry everything the classic site page had: every pass, every heat detection, resolution and status.
- Fixed: links from place-page timelines to Thermal watch and Tracks pointed inside v2/ (broken since 0.16.1); Watch reports' links to files in the day folder; the Roadmap status filter showed only "All" (the lead status labels had replaced the roadmap's); Thermal watch's feed list showed a raw Python dict.
- Removed the classic page builders that are now redirects.
- Thermal watch and Tracks have native v2 pages:
- Signals, MILAIR and Wilco Watch have native v2 pages too:
- The home page is now the v2 analyst interface. The classic Overview moved to overview.html; "Classic site" in v2 and "New interface" on the classic site switch between them, and the home page remembers the choice. No other URL changed.
- Watches in v2: a Watches page (latest day of each Area Watch, with plates, plus Wilco Watch) and a page per Watch with every day and the full report. Today links there.
- Signed-in accounts keep their starred places and last visit on the account (account/prefs.php), so they follow you between devices; stars made before signing in are kept.
- Lead status from the site (account/lead-status.php): admins (config.php
admin_emails) set a lead's status on the Leads board or a report page; approved journalists report an outcome (confirmed, story published…) with a link and note, which an admin accepts or dismisses on the Leads page. Status shows live on v2 and in leads.php.php accounts.php lead-status-yamlprints the site's statuses for the pipeline's reports/lead-status.yaml;php accounts.php outcomeslists reports waiting for review.
- v2 respects the journalist hold: held leads never appear on Today, Leads, report pages or in search. Report pages show "N new leads held for journalists until …" and fill in from leads.php for approved journalists, or once the hold ends.
- The build now refuses to publish if any held lead's text is in a public file (anything outside desk/ and account/), and the deploy runs a simulated-hold leak test first.
- Today: routine heat (flares, refineries, known sources) is folded into one line per day; Watches with nothing notable are folded into one "Nothing out of pattern on N Watches" line, so every Watch is counted.
- Plain satellite names (VIIRS (NOAA-21), MODIS) instead of feed codes; times just ahead of the clock read "just now".
- Maps render again: CARTO now answers keyless requests with an "API KEY REQUIRED" image, so v2 uses keyless Esri grey basemaps (light or dark with the theme) with a Map / Satellite switch, falls back to OpenStreetMap, and says so if no tiles load. Leaflet 1.9.4 is bundled in assets/vendor instead of loaded from unpkg.
- Phone filter rows fade at the edge to show they scroll.
- Preview of the new analyst interface at /v2/, built alongside the classic site (nothing in it changes).
- Leads page and journalist desk say when the 24-hour journalist hold is paused (read from the pipeline's HOLD_PAUSED_UNTIL), instead of promising an exclusive that is not running. The usual wording returns on its own when the pause ends.
- New Watches page (Reports → Watches): the latest day of every Area Watch (Vegas, Mojave, San Diego, Central Coast, LA, NorCal) with its notable items, flight and heat counts and new satellite plates, plus Wilco Watch. Each Watch has its own page (watch/<area>.html) with every day on record and the full report.
- New MILAIR page (Monitor → MILAIR): military, state, contractor and police aircraft over 18 Canadian cities, with the daily CSVs.
- Menu: the "Watch" group is now "Monitor", so it no longer clashes with the Watch reports; Wilco Watch moved under Reports.
- Capabilities: each card links to where you can see it, and shows one filled status badge (Live / Testing / Paused) with a separate New badge.
- Header: one row on every device. The 15 links are grouped into Overview · Reports (SITREPs, Hindcasts, Briefs) · Leads · Watch (Sites, Tracks, Thermal watch, Signals, Wilco Watch) · About (Method, Capabilities, Proofs, Benchmarking, Versions, Roadmap); every page keeps its URL. Phones and tablets get a Menu button that lists every page under its group.
- Header stays pinned while scrolling again (the 0.12 account widget had turned that off); links to a SITREP or lead ID land below it.
- The two sign-in buttons are now one Sign in menu; once signed in it shows your name, with the desk and account links.
- Overview banner is shorter, from the brand pack's website header, so the latest report shows on the first screen.
- Journalist hold: a report's new leads are exclusive to approved journalists for 24 hours. Public pages and PDFs show a "held" notice; leads.php, report.php and plate.php release them on the minute, without a rebuild. Full PDFs, lead data and held plates sit in desk/_data and desk/_files, which the web server refuses.
- New public Leads tab: every lead after its hold, with status and links back to its report.
- Journalist desk is now a lead dashboard: permanent lead IDs (<report>-L<n>), desk exclusives with countdowns, status (open / confirmed / killed / stale / story published), lineage (carried from / carried into), filters.
- Accounts: separate journalist and corporate sign-in (PHP; own tables, cookies and approval queues). Sign-in buttons top right on every page.
- Journalist desk (/desk/), gated to approved journalist accounts: every reporter lead from SITREPs, hindcasts and briefs in one searchable list, newest reports, live tracks, and how to credit RWI. Press styling (Sky / Mountain Blue accent).
- SITREPs: reporter leads (things in our data that no reporting explains yet) shown first on each report, with a lead count tag, a revision tag, and a "Leads only" filter (?leads=1). Leads are searchable.
- New SITREP type: Intra-day.
- Privacy page (draft placeholder, PIPEDA / Alberta PIPA) rendered from docs/PRIVACY.md and linked in the footer.
- Terms of Use page, rendered from the pipeline's docs/TERMS.md, with a draft banner while it is not in force; linked from the footer of every page (private and public sites).
- SITREPs page: strictly newest first (by issue time), with search and filters for type (daily, weekly, special…), place and month, plus an oldest-first toggle. Filters are kept in the URL so a filtered view can be shared. Each SITREP shows its type and the places it covers.
- Overview "Latest report" now picks the most recently issued SITREP.
- Wilco Watch: each day now carries an automated daily read (optical and radar change with labelled patches, snow, weather, night lights, thermal) and a change plate.
- Wilco Watch is now filed under DOGINT (type label "DOGINT · neighbourhood watch", page kicker). Small DOGGOINT easter egg in the page footer.
- Wilco Watch page now reads from the wilco-watch archive repo when it is available (falls back to the pipeline's copy). Only the marked images are published; the unmarked chips stay in the archive.
- SITREP imagery is now collapsed behind an expandable "Imagery — N plates" toggle.
- Deploy fix: the staging branch now keeps a normal history so Hostinger's Git redeploy can pull it; HTML/JSON are served no-cache so a redeploy shows at once.
- New Wilco Watch page: daily Killarney-to-Beltline look (newest and latest clear Sentinel-2 pass, newest Sentinel-1 radar, 24 h thermal count), house marked as Wilco HQ. No address is published.
- SITREPs page shows each report's plates as thumbnails that open the full image.
- New Benchmarking section: graded evaluations of RWI output against Prime Rogue's published analysis and other coverage (BENCH-001 self-evaluation #1, BENCH-002 Global News coverage benchmark), bylined Roger Wilco Imagery.
- Place names and site IDs anywhere on the site (thermal watch, signals, SITREP list, roadmap, site pages) now link to that place's page.
- Sites: new Visual change column and filter — latest clear Sentinel-2 pass vs baseline, graded No change / Minor / Undetermined change / Change + heat / Scene-wide (season, snow).
- Method page corrected: SITREPs are LLM-generated and automated (not analyst-written); Analyses are human and signed.
- Disclosure on the SITREPs and Method pages and in every footer: SITREPs are LLM-generated and automated; Analyses are human-written and signed by their author.
- Footer links Prime Rogue Inc. to primerogueinc.com.
- Roger Wilco brand (tentative): Wilco mark and wordmark in the header, brand palette in dark and light modes, Wilco hero on the overview, Wilco favicon/home-screen icon, footer motto.
- All timestamps shown in Calgary time (MST/MDT) with UTC in brackets after.
- Signals page: night-lights flags (VIIRS) and dark-ship candidates (radar ships with no AIS).
- Proofs page: SHA-256 manifest of every SITREP and data drop, with its OpenTimestamps anchor.
- Markdown tables (thermal watch, signals) now render with proper headers.
- Roadmap page: releases 0.8–0.11 with every planned item's purpose, sources, method, outputs, done-when, risks and dependencies; filter by status. Built from the pipeline's
roadmap.yaml.
- Site register: separate filters for geographic region, US combatant command and country (plus type and search), with counts; filters are kept in the page link so a filtered view can be shared.
- Region and combatant command shown in the register and on each site page.
- Dark mode is now the default, with a light/dark toggle in the header (remembered per browser).
- First build: overview, site register with dates added and map, per-site history pages (imagery + thermal detections), numbered SITREP archive, thermal watch, method page.
- Version history page shared by the private site and a standalone public build.
- Static output (
dist/private,dist/public) for Hostinger; daily rebuild via GitHub Actions with optional SFTP deploy.
Pipeline commit log private
Latest 60 commits, including automated pickups.
| Commit | When | Message |
|---|---|---|
1737a35 | 30 Oct 2026 04:16 MDT (10:16 UTC) | FIRMS watch 2026-10-30T10:16Z |
5ee2ae3 | 30 Oct 2026 01:57 MDT (07:57 UTC) | tracks 2026-10-30T07:57Z |
c0e40dc | 30 Oct 2026 00:39 MDT (06:39 UTC) | Ship watch 2026-10-30T06:39Z |
22d75e9 | 30 Oct 2026 00:38 MDT (06:38 UTC) | Provenance 20261030T0638Z |
e21a3a4 | 29 Oct 2026 19:46 MDT (01:46 UTC, 30 Oct) | tracks 2026-10-30T01:46Z |
6cc439e | 29 Oct 2026 19:11 MDT (01:11 UTC, 30 Oct) | Provenance 20261030T0111Z |
98f9a07 | 29 Oct 2026 19:04 MDT (01:04 UTC, 30 Oct) | SITREP 019 — daily 29–30 Oct: LNG Canada daytime heat pair (lead), Gagetown quieter with no burn image yet, Arctic radar-site changes are snow |
03db444 | 29 Oct 2026 19:01 MDT (01:01 UTC, 30 Oct) | Alerts 20261030T0101Z |
bbdd97d | 29 Oct 2026 18:52 MDT (00:52 UTC, 30 Oct) | FIRMS watch 2026-10-30T00:51Z |
81af651 | 29 Oct 2026 18:43 MDT (00:43 UTC, 30 Oct) | Pickup 20261030T0043Z (36h window ) |
339ec25 | 29 Oct 2026 18:20 MDT (00:20 UTC, 30 Oct) | Area Watch 2026-10-30 |
ab12dbb | 29 Oct 2026 18:15 MDT (00:15 UTC, 30 Oct) | Night lights 20261030T001511Z |
72ac32b | 29 Oct 2026 18:09 MDT (00:09 UTC, 30 Oct) | Daily pickup, 36 h (covers the failed 29 Oct run) for the daily SITREP |
325c9c5 | 29 Oct 2026 18:08 MDT (00:08 UTC, 30 Oct) | Merge pull request #5 from primerogueinc/ci/free-disk |
41b098f | 29 Oct 2026 18:06 MDT (00:06 UTC, 30 Oct) | Ship watch 2026-10-30T00:06Z |
80d8338 | 29 Oct 2026 17:56 MDT (23:56 UTC) | Incident pull 20261029T235635Z |
eebc94b | 29 Oct 2026 17:51 MDT (23:51 UTC) | Area Watch 2026-10-29 |
0869711 | 29 Oct 2026 17:41 MDT (23:41 UTC) | Wilco Watch 2026-10-29 |
5c7c102 | 29 Oct 2026 17:04 MDT (23:04 UTC) | Provenance 20261029T2304Z |
27234e8 | 29 Oct 2026 16:51 MDT (22:51 UTC) | Provenance 20261029T2251Z |
4771e13 | 29 Oct 2026 16:46 MDT (22:46 UTC) | SITREP 018 — 29 Oct daytime: Gagetown day 2, cause confirmed (artillery into Lawfield Impact Area); SITREP 017 L1 confirmed; Tunisian C-130J at St. John's |
53dda64 | 29 Oct 2026 16:46 MDT (22:46 UTC) | Drop SITREP 018 plates swept into the 0.8.4 commit by mistake (they go to main with the SITREP) |
56f0caf | 29 Oct 2026 16:36 MDT (22:36 UTC) | 0.8.4: free runner disk before checkout in every full-checkout workflow (daily pickup failed: no space left on device) |
137ed0f | 29 Oct 2026 16:23 MDT (22:23 UTC) | Detections 20261029T2222Z |
40ec626 | 29 Oct 2026 16:22 MDT (22:22 UTC) | Roadmap: lead-to-story tracking (0.9.0) — confirm stories that follow our leads and record our lead time; 3-hourly news agent |
157ee30 | 29 Oct 2026 16:14 MDT (22:14 UTC) | Heat sources 2026-10-29T22:14Z |
bc54262 | 29 Oct 2026 15:56 MDT (21:56 UTC) | Incident pull: Gagetown VIIRS granules 28–29 Oct (checks the 0.8.3 near-real-time login fix) |
f3da8dc | 29 Oct 2026 15:54 MDT (21:54 UTC) | Merge pull request #4 from primerogueinc/cloudmask-everywhere |
59f460e | 29 Oct 2026 15:09 MDT (21:09 UTC) | tracks 2026-10-29T21:09Z |
9cab197 | 29 Oct 2026 14:50 MDT (20:50 UTC) | Incident pull 20261029T205018Z |
0e5485b | 29 Oct 2026 14:41 MDT (20:41 UTC) | Task trigger/task.json |
144e2a8 | 29 Oct 2026 14:38 MDT (20:38 UTC) | Gagetown re-run 28–29 Oct: task (FIRMS, GOES) + incident pull (S2, Landsat, S1, VIIRS) |
509f4e8 | 29 Oct 2026 13:49 MDT (19:49 UTC) | Night lights 20261029T194903Z |
7dc2932 | 29 Oct 2026 13:46 MDT (19:46 UTC) | Ship watch 2026-10-29T19:46Z |
ada1668 | 29 Oct 2026 12:42 MDT (18:42 UTC) | Alerts 20261029T1842Z |
0944198 | 29 Oct 2026 12:36 MDT (18:36 UTC) | FIRMS watch 2026-10-29T18:36Z |
36c03fa | 29 Oct 2026 10:51 MDT (16:51 UTC) | Libya landing watch 2026-10-29T16:51Z |
84e5456 | 29 Oct 2026 10:43 MDT (16:43 UTC) | ADS-B history 2026-10-28 |
4732f95 | 29 Oct 2026 09:06 MDT (15:06 UTC) | tracks 2026-10-29T15:06Z |
1e2d94b | 29 Oct 2026 08:16 MDT (14:16 UTC) | History pull 2026-10-29T14:16Z |
dc71100 | 29 Oct 2026 08:11 MDT (14:11 UTC) | History pull: ERA5 weather at Wainwright Health Centre, 17–18 Oct (SAR jump) |
1687336 | 29 Oct 2026 07:52 MDT (13:52 UTC) | Provenance 20261029T1352Z |
f876fd3 | 29 Oct 2026 07:46 MDT (13:46 UTC) | Ship watch 2026-10-29T13:46Z |
a956de8 | 29 Oct 2026 06:50 MDT (12:50 UTC) | Provenance 20261029T1250Z |
b887771 | 29 Oct 2026 06:45 MDT (12:45 UTC) | SITREP 017 — 28–29 Oct 2026 (the CFB Gagetown fire): GOES/VIIRS timeline, Djibouti and Zawiya plates, 5 leads |
a15b4ef | 29 Oct 2026 06:36 MDT (12:36 UTC) | 0.8.3: cloud mask v2 in every Sentinel-2 reader; heat-source catalogue (flare-vs-fire step 1); VIIRS NRT token fix; task --bbox fix |
fd7300c | 29 Oct 2026 06:13 MDT (12:13 UTC) | Incident pull 20261029T121345Z |
a38616f | 29 Oct 2026 06:08 MDT (12:08 UTC) | Incident pull: CFB Gagetown post-fire imagery 28–29 Oct (S2, Landsat, S1) |
fc51747 | 29 Oct 2026 06:07 MDT (12:07 UTC) | Task trigger/task.json |
985e1ec | 29 Oct 2026 06:06 MDT (12:06 UTC) | Task: post-fire imagery check, CFB Gagetown 28–29 Oct (S2, S1, Landsat, FIRMS) |
5a17169 | 29 Oct 2026 06:05 MDT (12:05 UTC) | Task trigger/task.json |
250f2d2 | 29 Oct 2026 06:03 MDT (12:03 UTC) | Merge pull request #3 from primerogueinc/tasking-phase1 |
9d04bf1 | 29 Oct 2026 05:53 MDT (11:53 UTC) | 0.8.2: tasking phase 1 — sources.yaml, scripts/task.py, Task workflow; incident_pull reads HH-only Sentinel-1 scenes, --out/--name, ad hoc boxes |
7177ca8 | 29 Oct 2026 05:46 MDT (11:46 UTC) | Pickup 20261029T1146Z (12h window --out data/adhoc/2026-10-29-overnight) |
c61c173 | 29 Oct 2026 05:35 MDT (11:35 UTC) | Incident pull 20261029T113553Z |
d3666ea | 29 Oct 2026 05:31 MDT (11:31 UTC) | GOES fire series over CFB Gagetown, 28 Oct 12:00 – 29 Oct 06:00 UTC (bbox arg fixed) |
ff02aae | 29 Oct 2026 05:30 MDT (11:30 UTC) | Incident pull 20261029T113038Z |
3695fb1 | 29 Oct 2026 05:24 MDT (11:24 UTC) | Overnight pickup (12h) — ad hoc, data/adhoc/2026-10-29-overnight |
e994681 | 29 Oct 2026 05:23 MDT (11:23 UTC) | Incident pull: CFB Gagetown 21–29 Oct (FIRMS flag 28 Oct) + GOES fire series 28–29 Oct |
3cd8449 | 29 Oct 2026 05:22 MDT (11:22 UTC) | 0.8.1: cloud mask v2 for the daily pickup (#2) |