SENTINEL THE METHOD · v0.9
THE METHOD · v0.9 · LAST REVIEWED Q3 2026

Sentinel reads the same public radio signals anyone with a thirty-dollar antenna can read. Then it does the work of paying attention.

This page documents what Sentinel measures, where its data comes from, what it claims, what it explicitly does not claim, and how to reproduce any of its findings yourself. It exists because institutions cannot subscribe to systems they cannot audit.

WHAT'S IN THIS DOCUMENT
SectionWhat it answersTime
The signalsWhat we measure4 min
The sourcesWhere the data comes from6 min
The modelHow signals become a Sentinel Score8 min
The gauntletHow false positives are filtered5 min
The corroborationHow receipts are cross-verified4 min
The disclosuresWhat we don't claim3 min
The errataWhere we've been wrong(live)
The bibliographySource registry, public APIs, prior art5 min
SECTION 1

The signals

Sentinel watches four things, and only four things. Each is computed from public data, each has a formal definition, and each has known blind spots. The four signals are deliberately independent: a real event tends to move several of them at once; a data artifact tends to move only one.

Sudden surge

Surge measures deviation from the baseline take-off rate for a region, per hour-of-week. The question it answers is narrow: are meaningfully more private aircraft leaving this region right now than this region's own history says is normal for this hour, this weekday, this season? The baseline window is 90 days.1

Formal definition. Departures per region per hour are modeled as a Poisson process with regressors for hour-of-week, holiday calendar, and known-event calendar. The surge value is the normalized exceedance of observed departures over the model's 95th-percentile prediction, clipped to [0, 1].
normal pace · 90-day baseline, same hour-of-week 3.8× baseline · 07:31 PT
Departures per hour, San Francisco Bay Area, June 8 2026, against the 90-day same-hour baseline. The spike is receipt SF-2026-06-08-0731, reproduced in full in the reproducibility section below.

Known limits. Surge is weakest where baselines are sparse: small regions with few flights per day produce noisy baselines, and airports that recently opened or changed role have no history at all. In both cases the gauntlet's data-trust gate suppresses the signal rather than guessing.

Tight clustering

Clustering measures whether the departures that make up a surge are bunched in time more tightly than coincidence allows. The exposed window is 47 minutes of lookback — not a round number, because it was not chosen by hand. It is the 99.6th percentile of inter-departure gaps for same-cohort aircraft in the 90-day archive.2

Formal definition. For the candidate cohort, compute the entropy of minute-level co-departure spacing. Clustering is 1 minus the ratio of observed spacing entropy to the expected spacing entropy under a homogeneous Poisson arrival of the same count, clipped to [0, 1].
47 min · 99.6th percentile minutes between consecutive cohort departures · 90-day archive
The lookback window is set where the archive's gap distribution goes quiet, then frozen for the quarter. Changing it mid-quarter would make receipts irreproducible.

Known limits. Large hubs at peak hour bunch departures for boring reasons — slot scheduling, weather windows, curfew edges. Clustering alone is therefore never sufficient; it contributes 25% of the composite and cannot cross an alert threshold on its own.

Going everywhere

Scatter measures destination entropy: whether the cohort is dispersing in many directions rather than converging on one place. Convergence is almost always explainable — a conference, a funeral, a final. Dispersal from a common origin, by unrelated parties, inside a tight window, is the rarer and more informative shape.3

Formal definition. Scatter is the Shannon entropy of the cohort's destination bearings (16-sector quantization), normalized by the maximum entropy achievable for a cohort of that size. Seven aircraft to seven sectors scores ~1.0; seven aircraft to one sector scores ~0.0.

Known limits. Small cohorts saturate quickly — with three aircraft, "everywhere" and "coincidence" are hard to distinguish, which is one reason the cohort floor for any published receipt is higher than three.

Independent decisions

Independence asks whether the cohort's members actually decided separately. Seven jets owned by one charter operator is one decision; seven jets owned by seven unrelated principals is seven. We resolve aircraft to beneficial-owner classes through registries and state business filings, unwinding shell entities where the paper trail is public.4

Formal definition. Build the operator graph for the cohort: nodes are aircraft, edges are shared registered owners, operators, management companies, or filed crew bases. Independence is 1 minus the fraction of cohort pairs connected in this graph.

Known limits. Recently restructured ownership trees lag the public record by days to weeks; an aircraft sold last Tuesday may still resolve to its old owner. Trust-heavy jurisdictions (Delaware, South Dakota, Nevada, Wyoming) resolve more slowly and sometimes only to the trust, not through it. When resolution confidence is low, independence is scored conservatively downward, never upward.

1. Baseline construction and the holiday/known-event regressor lists: github.com/GOUD-watch/classifier (v0.9 pseudocode).
2. Gap-distribution figure reproducible from the OpenSky historical archive for the same window; query parameters in the classifier repository.
3. On dispersal vs. convergence asymmetry in trajectory anomaly work, see Olive & Basora (2020), bibliography entry 4.
4. Owner-resolution sources: FAA registry, EASA, GLEIF, SEC EDGAR, and state filings — full registry in the sources section.
SECTION 2

The sources

Every input to Sentinel is listed below — there are no others. The licensing column is written for the person whose job is to check it. Sortable by column.

Source Coverage Licensing Refresh Used in
ADS-B ExchangeGlobal ADS-B, no LADD/PIA suppressionCommunity-sourced; commercial API under ADSBx data license; attribution requiredlive / hourly batchEagle Eye · surge · clustering
airplanes.liveCommunity ADS-B, unfilteredCommunity-sourced; attribution requiredliveEagle Eye redundancy
OpenSky NetworkGlobal ADS-B/Mode S, research-grade historyOpenSky ToS; research use; commercial terms [placeholder — agreement pending]5s live / full historybaselines · calibration
FAA N-number registryUS aircraft ownershipPublic records, no license requireddaily batchowner resolution
EASA aircraft registryEU member-state aircraftPublic records, per-state retrievalweeklyowner resolution (EU)
ICAO aircraft registryICAO 24-bit address allocationsPublic standards datamonthlyhex → registration mapping
AIS — MarineTraffic public layerGlobal vessel positionsAPI ToS-compliant, rate-limited; public display layer1–5 minvessel cross-ref
AIS — raw receiver networkCoastal VHF AISSelf-operated receivers; broadcast data, no license requiredlivevessel cross-ref
State business filings (50 states + DC + 4 territories)US entity registrationsPublic records; per-portal ToS observeddaily–weeklyownership trees
Delaware Division of CorporationsDE entities (trust prevalence carve-out)Public records; paid expedited lookupsdailyownership trees
GLEIF LEI registryGlobal legal entity identifiersCC0 public datadailyentity resolution
SEC EDGARUS ownership disclosuresPublic records; fair-access limits (10 req/s)live indexownership · sector pressure
OFAC sanctions listsSDN + consolidated listsPublic records, no license requireddailysource-of-funds screens (entities only)
GDELT 2.0Global news event databaseOpen data; attribution requested15 minnews heat · known-cause gate
Common Crawl news indexWeb news corpusOpen data (Common Crawl ToU)daily news crawlnews-lag verification
News API aggregatorHeadline index, top 200 outletsCommercial license; ToS-compliant, 60 req/minlivenews lag
X public sample API1% public samplePlatform ToS-compliant; attention-velocity only; no user-level storageliveattention asymmetry
Reddit public listing APIPublic posts and listingsPlatform ToS-compliant; OAuth rate limits1 minattention asymmetry
Substack public RSS indexNewsletter publication activityPublic RSS, no license requiredhourlyattention asymmetry
Wikipedia edit activityHigh-signal page revisionsCC BY-SA; open API etiquette limitslive (EventStreams)attention asymmetry
NOAA weather feedsUS watches, warnings, storm tracksUS public domainliveknown-reason gate
EUMETSATEuropean weatherEUMETSAT data policy, free tierliveknown-reason gate
USGS earthquake feedGlobal seismic eventsUS public domainliveknown-reason gate
GLIDE disaster registryDisaster identifiersOpen data (ADRC public registry), no license requireddailyknown-reason gate
CME / ICE / OPRA public EOD feedsDerivatives end-of-day summariesExchange public EOD ToS; delayed data onlydailycapital pressure
LSEG public M&A announcementsDeal announcement press layerPublic press layerliveknown-event gate

The full source registry, with rate limits and ToS links, is also available as JSON at sentinel.app/method/sources.json.

SECTION 3

The model

Composite scoring

The four signals combine into a single Sentinel Score on [0, 1]:

S = 0.35 · surge + 0.25 · clustering + 0.20 · scatter + 0.20 · independence

In plain English: a surge that is also tightly bunched matters most; where the cohort went and whether its members are unrelated each refine the picture. Below 0.40 the system stays quiet; 0.40–0.85 is a Heads Up; at or above 0.85, and only after the gauntlet and a human review, a Red Alert.5

The weights are not aesthetic. They were calibrated by maximizing precision at fixed recall on a manually labeled historical set of n = 240 events spanning 2023-Q4 through 2026-Q2, each labeled by two reviewers with disagreements adjudicated by a third. The labeled set, with identifying details removed, accompanies the classifier repository.6

The gauntlet

A score is not an alert. Every candidate above threshold runs through five rejection gates, in fixed order. In the last 90 days, the gauntlet rejected 99.87% of candidate alerts. The five gates rejected, in order of frequency: known-event (62%), data-trust (18%), same-company (11%), known-cause (7%), weekend (2%).7

GateDefinitionExample passExample fail (rejected)
Known eventCandidate window overlaps a calendared gathering for this cohort or regionNo calendar match within 200 nm100 jets into Geneva in late January — Davos
Weekend / habitMovement matches the cohort's standing seasonal routesMonday 07:31, no habitual route matchLA→Aspen, Friday 3pm, ski season
Known causeA public hazard or news event already explains the movementNo NOAA/USGS/wire match at T+0Gulf Coast departures during a named storm
Same companyCohort collapses to fewer than the minimum independent deciders7 distinct ownership trees8 aircraft, one charter operator repositioning
Data trustFewer than 3 independent receivers per track, or jamming signatures presentMedian 7 receivers per trackGarbled transponder cluster, single receiver

Cross-modal corroboration

Aircraft movement is cross-checked against vessel movement in the window T−12h to T+1h: a cohort scatter accompanied by unusual yacht departures from the same region is materially stronger evidence than either alone. Both are then checked against news lag in the window T+0 to T+24h — if the press never catches up, the event is either small or was never real, and that outcome is recorded against the receipt either way.

The false-positive rate with and without vessel corroboration on the labeled set: [placeholder — research pending; published with the Q4 2026 calibration]. We will not state this number until the labeled set is large enough that it means something.

The Pulse layer

Pulse, the daily divergence surface, consumes the same four signals plus a news-heat layer and classifies every region and sector into exactly four states: red (news ≥ 0.55 and movement ≥ 0.55), white (news ≥ 0.55, movement < 0.35), sentinel (news < 0.35, movement ≥ 0.55), and quiet (everything else, including the deliberate dead zones between thresholds).8

Divergence states are coarser than the underlying signals, and that is deliberate. Pulse is for situational awareness, not precision; the receipt — with its full signal values, gauntlet record, and hash — remains the only artifact Sentinel asks anyone to rely on.

Calibration

Weights, gate rules, the clustering window, and corroboration windows are recalibrated quarterly against the growing labeled set, reviewed by the research team named at the end of this document, and frozen for the quarter. Every change — including changes that made the system look worse — is logged publicly at /method/calibration-log. A receipt is always evaluated under the calibration that was live when it was published; that is what makes old receipts reproducible.

5. Threshold values are configuration, not code: config/thresholds.json in the classifier repository.
6. Labeled-set methodology and inter-rater agreement: classifier repository, docs/calibration.md [placeholder — published with the repo].
7. 90-day gauntlet statistics are recomputed nightly from the receipt archive; the archive query is published alongside the errata endpoint.
8. The divergence classifier and its thresholds are documented in the Pulse API contract (PROPOSAL_PULSE_API.md) and serve from /v1/pulse/*.
SECTION 4 · AUDIT US

Reproducibility

The worked example below reproduces receipt SF-2026-06-08-0731 — the seven-aircraft Bay Area scatter of June 8, 2026 — from public records alone.

  1. Pull the raw ADS-B feed for the Bay Area bounding box (-123.1, 36.9, -121.3, 38.4) between 2026-06-08T06:30Z and 08:30Z, from ADS-B Exchange or your own receiver. The same window is retrievable from the OpenSky historical archive.
  2. Filter for departures only: tracks transitioning from ground to positive climb within the box (the classifier repo gives the exact altitude-gate sequence).
  3. Resolve N-numbers to owner classes: FAA registry for the registration, then Delaware / Wyoming / Nevada / South Dakota business filings (plus GLEIF) to unwind the shell entities. Seven distinct trees should emerge.
  4. Compute the four signal values for the 07:31–08:18 PT cohort using the definitions in the signals section. Expected: surge 0.89, clustering 0.93, scatter 0.96, independence 0.87.
  5. Run them through the same classifier — open-source at github.com/GOUD-watch/classifier (at v0.9 the repository carries the full algorithm in executable pseudocode). Expected composite: 0.91, gauntlet pass on all five gates.
  6. Compare against the published receipt hash: sha256:b71f8e…c20429. The hash covers the signal values, the gauntlet record, and the calibration version — reproduce those, and the hash reproduces.

Every receipt published since v0.9 launch is reproducible by this exact procedure. If you reproduce a receipt and reach a different conclusion, email dispute@sentinel.app and we will publish the discrepancy in the errata.

SECTION 5

The disclosures

What Sentinel does not claim:

  1. Sentinel does not predict the future. It reports what has happened, after it has happened, with provenance.
  2. Sentinel does not provide investment advice. Receipts describe public observable events; what a recipient does with that information is their decision and their responsibility.
  3. Sentinel does not identify individuals. We track cohorts of ≥ 10 members; no receipt, public page, or alert names a natural person.
  4. Sentinel does not access private data. Every signal we use is broadcast under federal mandate or sourced from public records.
  5. Sentinel does not surveil its users. We do not sell user data, embed third-party tracking, or build a per-user behavior model.
  6. Sentinel does not guarantee delivery latency. Our published median news-lead time is a historical average, not a service-level commitment.
  7. Sentinel does not claim 100% recall. Some real events will not generate receipts; some receipts will, in retrospect, be false positives. The published precision and recall are both quarterly-recalibrated.
  8. Sentinel does not operate in classified domains. We accept no classified data and produce no classified output.
  9. Sentinel does not take money from any institution it observes. Family offices, hedge funds, and corporate entities may subscribe to receive receipts; none may subscribe to influence which receipts are produced.
  10. Sentinel does not negotiate the contents of its receipts. If a receipt is published, it has passed the gauntlet; we will not unpublish a passing receipt under pressure.
  11. Sentinel does not promise the model is static. Signal weights, gauntlet rules, and corroboration windows change quarterly with calibration; all changes are logged.
  12. Sentinel does not exempt itself from these disclosures. If you ever see Sentinel violate one, email accountability@sentinel.app.
SECTION 6 · LIVE FROM THE ARCHIVE

The errata

Every published correction or retraction since launch, served live from the same archive the receipts come from.

loading errata…

SECTION 7

Bibliography & prior art

SECTION 8 · [PLACEHOLDER PERSONAS — REAL NAMES AT LAUNCH]

Authors and reviewers

Research lead · R.O.

Former NTSB air-safety analyst, eleven years on surveillance-data investigations. Built the baseline and surge models; owns the quarterly calibration and signs every Red Alert review log.

Provenance & legal method · D.K.

Former financial-crimes prosecutor. Designed the ownership-resolution pipeline through state filings and GLEIF, and wrote the licensing column of the source registry — the part your counsel reads.

Verification editor · A.M.

Former open-source intelligence editor at an international verification desk. Owns the gauntlet's editorial standards, the errata process, and the dispute inbox. Has personally rejected more receipts than the model has.

Calibration & statistics · S.V.

Former econometrics researcher. Responsible for the labeled set, the precision/recall reporting, and for refusing to publish any number this document marks as research-pending.

External review board: this document has been reviewed by [placeholder — academic affiliations, journalism organizations, and policy reviewers are named at sentinel.app/method/reviewers when confirmed].

This is version v0.9 of the Sentinel Method document. The full revision history is at /method/changelog. The calibration log is at /method/calibration-log. The next scheduled review is Q4 2026.

If your institution's compliance, legal, or editorial-standards team has questions this document does not answer, email method@sentinel.app. We answer every inquiry within five business days, in writing, and we publish the answer (anonymized) at /method/inquiries when the answer has general interest.