Archived: the classic site (v1), frozen 29 Oct 2026. Kept for reference only: its data stopped updating and some functions may not work. Go to the current site →
ROGER WILCO IMAGERYpre-alpha
New interface

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.0
commit 6799f2e
Frontend
v0.17.0
built 29 Oct 2026 00:26 MDT (06:26 UTC)

Pipeline

Data collection, analysis and reporting.

v0.8.0
  • 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.py and 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 a bases profile (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.
v0.7.0
  • 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 the tracks branch; detections are matched to these for identities.
  • Pilot sites flagged detect: true: Halifax, Esquimalt, Norfolk, Trenton, Winnipeg, Barksdale.
v0.6.0
  • 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 program field.
  • 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).
v0.5.0
  • 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.
v0.4.2
  • 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.
v0.4.1
  • Every site tagged with a geographic region, US combatant command (area of responsibility) and a list of countries, for filtering.
v0.4.0
  • Every watchlist site now carries an added timestamp (backfilled from git history).
  • SITREP register (reports/index.yaml) for numbered reports; frontend builds from it.
  • SITREP 002 issued; shared report styles.
v0.3.1
  • Southern Lebanon box extended north to cover the Nabatieh area.
  • Gaza box flagged: rectangle includes Israeli territory; polygon support pending.
v0.3.0
  • 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.
v0.2.0
  • 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.
v0.1.0
  • 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.

v0.17.0
  • 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-yaml prints the site's statuses for the pipeline's reports/lead-status.yaml; php accounts.php outcomes lists reports waiting for review.
v0.16.1
  • 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.
v0.16.0
  • Preview of the new analyst interface at /v2/, built alongside the classic site (nothing in it changes).
v0.15.1
  • 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.
v0.15.0
  • 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.
v0.14.0
  • 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.
v0.13.0
  • 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.
v0.12.0
  • 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).
v0.11.0
  • 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.
v0.10.2
  • Privacy page (draft placeholder, PIPEDA / Alberta PIPA) rendered from docs/PRIVACY.md and linked in the footer.
v0.10.1
  • 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).
v0.10.0
  • 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.
v0.9.4
  • 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.
v0.9.3
  • Wilco Watch is now filed under DOGINT (type label "DOGINT · neighbourhood watch", page kicker). Small DOGGOINT easter egg in the page footer.
v0.9.2
  • 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.
v0.9.1
  • 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.
v0.9.0
  • 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.
v0.8.1
  • SITREPs page shows each report's plates as thumbnails that open the full image.
v0.8.0
  • 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.
v0.7.0
  • Place names and site IDs anywhere on the site (thermal watch, signals, SITREP list, roadmap, site pages) now link to that place's page.
v0.6.0
  • 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).
v0.5.2
  • Method page corrected: SITREPs are LLM-generated and automated (not analyst-written); Analyses are human and signed.
v0.5.1
  • 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.
v0.5.0
  • 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.
v0.4.1
  • All timestamps shown in Calgary time (MST/MDT) with UTC in brackets after.
v0.4.0
  • 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.
v0.3.0
  • 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.
v0.2.0
  • 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.
v0.1.1
  • Dark mode is now the default, with a light/dark toggle in the header (remembered per browser).
v0.1.0
  • 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.

CommitWhenMessage
6799f2e28 Oct 2026 19:40 MDT (01:40 UTC, 29 Oct)tracks 2026-10-29T01:40Z
a418ddf28 Oct 2026 19:04 MDT (01:04 UTC, 29 Oct)Alerts 20261029T0104Z
69af1f628 Oct 2026 19:02 MDT (01:02 UTC, 29 Oct)FIRMS watch 2026-10-29T01:02Z
6b6c23e28 Oct 2026 18:00 MDT (00:00 UTC, 29 Oct)Ship watch 2026-10-29T00:00Z
83c0b7028 Oct 2026 17:50 MDT (23:50 UTC)FIRMS area pull 2026-10-28T23:50Z
9d0f56928 Oct 2026 17:47 MDT (23:47 UTC)FIRMS area pull: Gagetown 60 days
6add55428 Oct 2026 17:37 MDT (23:37 UTC)Area Watch 2026-10-28
b437aca28 Oct 2026 17:37 MDT (23:37 UTC)Wilco Watch 2026-10-28
83caa5e28 Oct 2026 16:56 MDT (22:56 UTC)Provenance 20261028T2256Z
593ab3828 Oct 2026 16:54 MDT (22:54 UTC)Provenance 20261028T2254Z
ac8a36828 Oct 2026 16:52 MDT (22:52 UTC)Provenance 20261028T2252Z
591e8a128 Oct 2026 16:51 MDT (22:51 UTC)BRIEF-004 (C-146A movements, Al-Watiya Dec 2015) and BRIEF-005 (militia activity all-sources pass)
cb1ad6b28 Oct 2026 16:49 MDT (22:49 UTC)BRIEF-004 draft (C-146A movements) and BRIEF-005 fire plate (work in progress)
69318d328 Oct 2026 15:57 MDT (21:57 UTC)Detections 20261028T2157Z
f1b850c28 Oct 2026 15:53 MDT (21:53 UTC)tracks 2026-10-28T21:53Z
394e4af28 Oct 2026 14:48 MDT (20:48 UTC)Provenance 20261028T2048Z
dec606d28 Oct 2026 14:34 MDT (20:34 UTC)HC-003-P2 rev 2: Libyan Air Force photos vs imagery (G1, G2); sunrise corrected to 08:05 local
4e8796328 Oct 2026 14:24 MDT (20:24 UTC)Alerts 20261028T2024Z
f230e0628 Oct 2026 14:22 MDT (20:22 UTC)FIRMS watch 2026-10-28T20:22Z
fbef26028 Oct 2026 13:47 MDT (19:47 UTC)Night lights 20261028T194722Z
18f5a7d28 Oct 2026 13:38 MDT (19:38 UTC)Ship watch 2026-10-28T19:38Z
5221dd128 Oct 2026 13:05 MDT (19:05 UTC)Pickup 20261028T1905Z (24h window )
603290728 Oct 2026 10:53 MDT (16:53 UTC)tracks 2026-10-28T16:53Z
7ed98d228 Oct 2026 07:37 MDT (13:37 UTC)Provenance 20261028T1337Z
9f73c4d28 Oct 2026 07:37 MDT (13:37 UTC)Ship watch 2026-10-28T13:37Z
cf66c3628 Oct 2026 05:44 MDT (11:44 UTC)Provenance 20261028T1144Z
e6d5bf028 Oct 2026 05:42 MDT (11:42 UTC)HC-003 part 2: Al-Watiya, whole of December 2015 (plates M1–M6, PDF, register)
6bdf7b828 Oct 2026 05:37 MDT (11:37 UTC)FIRMS area pull 2026-10-28T11:37Z
dcc3ee328 Oct 2026 05:35 MDT (11:35 UTC)History pull 2026-10-28T11:35Z
0f981f828 Oct 2026 04:56 MDT (10:56 UTC)Al-Watiya December 2015, whole month: history pull (imagery, MODIS, weather, fire, night lights, perimeter) and FIRMS area pull
4f16b4628 Oct 2026 04:51 MDT (10:51 UTC)Provenance 20261028T1051Z
f2418bd28 Oct 2026 04:49 MDT (10:49 UTC)RWI-BRIEF-003: the Wainwright paratroopers, full file (what doesn't add up + BRIEF-002 + HC-004 + raw 130339 positions); BRIEF-002 plate P4 corrected (older burn south of the lakes)
054117328 Oct 2026 03:54 MDT (09:54 UTC)Provenance 20261028T0954Z
832269e28 Oct 2026 03:52 MDT (09:52 UTC)BRIEF-002 follow-up 1: best-guess Range 15 / pairs range road head (52.7692 N, 110.8990 W) from the 14:49 MDT fire front and the post-fire burn; clean imagery; P4 correction noted
71007d428 Oct 2026 03:47 MDT (09:47 UTC)Provenance 20261028T0947Z
815748328 Oct 2026 03:45 MDT (09:45 UTC)RWI-HC-004: the RCAF on the night of the Wainwright fire — every Canadian military aircraft transmitting, who can parachute medics (SAR units compared), air traffic over the drop zone; 3 leads
5f90db428 Oct 2026 03:39 MDT (09:39 UTC)Provenance 20261028T0939Z
f5c95a828 Oct 2026 03:38 MDT (09:38 UTC)RWI-HC-004 (in progress): plate H1 — RCAF aircraft transmitting during the Wainwright response, and SAR bases with distances
db2bdfa28 Oct 2026 03:01 MDT (09:01 UTC)Provenance 20261028T0901Z
fcc396a28 Oct 2026 03:00 MDT (09:00 UTC)tracks 2026-10-28T09:00Z
f9de41128 Oct 2026 03:00 MDT (09:00 UTC)RWI-BRIEF-002: the Wainwright SAR parachute drop — CC-130H 130339 from the open flight archive, plates (route, Winnipeg legs, drop zone, fire and town, Lloydminster)
78a0ac628 Oct 2026 02:21 MDT (08:21 UTC)ADS-B history 2026-10-17
e9ba84b28 Oct 2026 02:19 MDT (08:19 UTC)ADS-B history 2026-10-18
f25863a28 Oct 2026 02:19 MDT (08:19 UTC)Libya landing watch 2026-10-28T08:19Z
c415e7d28 Oct 2026 02:17 MDT (08:17 UTC)ADS-B history 2026-10-27
f05719c28 Oct 2026 02:17 MDT (08:17 UTC)Area Watch 2026-10-28
983104f28 Oct 2026 02:15 MDT (08:15 UTC)ADS-B history 2026-10-26
541598828 Oct 2026 02:11 MDT (08:11 UTC)rcaf profile: also business jets and PIA/LADD (hidden registration) aircraft within 600 km of Wainwright (Falcon 7X, 18 Oct)
382d40928 Oct 2026 02:08 MDT (08:08 UTC)rcaf profile: only measure distance for military traces
ac5c41928 Oct 2026 02:08 MDT (08:08 UTC)ADS-B history: rcaf profile (every Canadian military aircraft, whole-day traces) for the Wainwright parachute drop, 17–18 Oct
379418028 Oct 2026 01:59 MDT (07:59 UTC)Fire watch: a detection inside a site's own box belongs to that site only (padding no longer labels the Douda dump as Chabelley / Camp Lemonnier); 8 mis-attributed rows removed. Area Watch: redo an issue whose flight archive was not out yet
d0e2e4728 Oct 2026 00:25 MDT (06:25 UTC)Ship watch 2026-10-28T06:25Z
62eb0cf28 Oct 2026 00:22 MDT (06:22 UTC)Provenance 20261028T0622Z
1a1ea0328 Oct 2026 00:17 MDT (06:17 UTC)Watches: readable notable lines (civil / country military; no empty type)
f04b39c27 Oct 2026 23:51 MDT (05:51 UTC, 28 Oct)Alerts 20261028T0551Z
b6ec1ad27 Oct 2026 23:49 MDT (05:49 UTC, 28 Oct)FIRMS watch 2026-10-28T05:49Z
3f810b627 Oct 2026 23:33 MDT (05:33 UTC, 28 Oct)Provenance 20261028T0533Z
68ec2af27 Oct 2026 23:31 MDT (05:31 UTC, 28 Oct)Provenance 20261028T0531Z
2564f9327 Oct 2026 23:30 MDT (05:30 UTC, 28 Oct)Register: quote SITREP 016 title (YAML)
f5bafcc27 Oct 2026 23:30 MDT (05:30 UTC, 28 Oct)SITREP 016 (evening 27–28 Oct): Djibouti — no heat at the PLA base in 180 days; the alerts were the Douda dump; recurring burns beside Chabelley (lead). Djibouti box split into PLA base, Doraleh, Camp Lemonnier, Chabelley, Douda dump; Miramar and Port of LA flares marked routine