Governed multisensor acquisition, association, tracking, fusion and evidence platform for falsification-first anomaly research.
Containment means containing uncertain observations inside an auditable measurement and evidence process. This project does not intercept, interfere with, disable, engage, identify the origin of, or make extraordinary claims about anything in flight.
Release v0.3.0, Operational Sensor Mesh. Source available for noncommercial evaluation under LICENSE. Commercial, operational, technology-transfer and IP rights require a separate written agreement with Bryce Lovell.
v0.2.0 started after another system had already produced calibrated bearings and required the caller to say which observations belonged together. v0.3.0 adds the missing operational software layers:
- Live acquisition boundary: synchronous UDP JSON ingest for bench/live adapters, plus deterministic JSONL replay.
- Authenticated field envelopes: Ed25519 station signatures, public-key fingerprints, sensor/station binding and monotonic sequence replay protection can be enforced before packets enter the operational runtime.
- Neutral sensor contract: optical, thermal, radar and RF-bearing packets with signal quality, source hash, angle uncertainty, clock uncertainty, optional range, range uncertainty, radial velocity and advisory classification probabilities.
- Calibration and time correction: surveyed station position, sensor orientation, azimuth/elevation bias, calibration validity interval, clock offset and drift correction, clock-model fitting and reference-angle bias fitting.
- Multimodal measurement fusion: uncertainty-aware bearing-only and range-bearing position fusion. Classification evidence is fused separately so a classifier cannot force geometric agreement.
- Automatic association: track hypotheses are built from independent sensors without caller-supplied event IDs. Existing tracks are gated against predictions. Ambiguous alternatives are retained in evidence.
- Confirmation before assertion: a one-frame intersection creates only a tentative track. The default requires three independent epochs before a track can become
confirmed. - Acceleration-aware kinematics: constant-acceleration fitting closes the specific v0.2.0 failure in which accelerating motion could bias a constant-velocity estimate while still looking geometrically plausible.
- Falsification-first model tournament: constant-velocity and constant-acceleration explanations are compared with an explicit complexity penalty. A preferred kinematic model is not treated as an identity or origin claim.
- Fail-closed health and authority: missing calibration, expired calibration, weak signal, excessive clock uncertainty, backward sensor time and other health failures quarantine packets before association.
- Tamper-evident operational receipts: packet health, normalization, association and track-authority decisions are recorded in a SHA-256 chained ledger that can be replayed and independently verified.
- Pattern-of-life / drift monitoring: a transparent feature baseline can flag large distribution shifts without labeling them extraordinary.
- Deterministic fault injection: packet loss, bearing bias, clock jumps and signal degradation can be exercised in HIL and regression campaigns.
- Active sensing recommendation: a D-optimal geometry advisor can recommend which additional observing station would add the most localization information. A second counterfactual advisor ranks observers by how strongly they would separate competing position/model/association hypotheses. Both have zero hardware authority.
- Finite behavioral equivalence: policy/configuration variants can be collapsed by their complete observable behavior over an explicit finite scenario battery, adapting the semantic-equivalence idea from IX-BlackBox to runtime assurance.
v0.3.0 is an operational sensing software architecture and reference implementation, not a field-proven sensor suite. The repository now supplies live/replay adapters, calibration models, association, tracking, fusion, health gates, evidence, HIL fault injection and a field integration specification. It does not include a purchased radar, thermal imager, RF direction-finding array, surveyed deployment, weather-qualified enclosure, vendor camera SDK, or months of known-target field data.
Therefore:
- It does not claim GREMLIN parity or superiority in physical detection range, sensitivity, uptime, environmental tolerance, latency, false-alarm rate or field maturity.
- It does not claim an unidentified track is exotic, nonhuman, hostile or beyond known physics.
- It does not treat missing ADS-B/reference data as proof of anomaly.
- It does not allow software confidence to substitute for calibration or independent truth data.
See OPERATIONAL_PLATFORM.md, FIELD_OPERATIONS_RUNBOOK.md, FIELD_VALIDATION_PLAN.md, GREMLIN_COMPARISON.md and the full BOM.md.
Python 3.11+:
python -m pip install -e '.[crypto]'
python -m unittest discover -s tests -v
python -m ix_acg demo --out demo-output
python -m ix_acg verify demo-output/evidence.jsonv0.3.0 operational demonstrations:
python -m ix_acg operational-replay examples/operational/sensor-packets.jsonl examples/operational/calibrations.json --out demo-operational
python -m ix_acg verify-ledger demo-operational/operational-ledger.jsonl
python -m ix_acg acceleration examples/operational/synthetic-acceleration-input.json --out demo-operational/acceleration.json
python -m ix_acg model-tournament examples/operational/synthetic-acceleration-input.json --out demo-operational/model-tournament.json
python -m ix_acg tasking examples/operational/tasking-input.json --out demo-operational/tasking.json
python -m ix_acg discriminate examples/operational/counterfactual-tasking-input.json --out demo-operational/discrimination.json
python -m ix_acg association-nulls --trials 100 --out demo-operational/association-nulls.jsonThe included operational packet stream and acceleration case are synthetic. They prove deterministic software behavior, not real-world sensor performance.
ix_acg.ingest.UDPJsonIngest accepts one neutral JSON sensor packet per UDP datagram. It is intentionally small so a vendor-specific process can sit beside it and translate camera, radar, thermal or RF products into the published schema at schemas/sensor-packet.schema.json.
Raw UDP itself is not a secure transport. v0.3.0 therefore also provides ix_acg.transport: each neutral packet can be wrapped in an Ed25519-signed station envelope with a public-key fingerprint, monotonic station sequence and optional sensor-to-station binding. OperationalRuntime.process_authenticated_epoch() verifies these envelopes before health/fusion/association. This provides application-level authenticity, integrity and replay rejection, but not confidentiality, delivery guarantees or key ownership. A real deployment still needs network segmentation, credential provisioning and appropriate protected transport. The source media or vendor-native product should be retained separately, hashed, and referenced through raw_sha256.
Calibration profiles use schemas/calibration-profile.schema.json. They include station position, sensor orientation, constant angular bias, clock offset/drift and a validity interval. A packet with no active calibration is quarantined.
The default runtime can make only two kinds of consequential software decisions:
- whether a measurement is healthy enough to enter the fusion/association pipeline;
- whether a track is still provisional or has met the configured evidence gates to be reported as a track.
It has no physical actuation authority. The active sensing module emits recommendations only.
This separation is intentional. Measurement software should never silently convert an uncertain inference into authority over physical systems.
The six supplied IX repositories were treated as design donors, not pasted together. v0.3.0 cleanly reimplements compatible ideas inside ACG:
- IX-BlackFox: fail-closed authority, explicit policy gates, chained receipts, replayable evidence, authenticated station identity and the rule that evidence does not automatically become authority.
- IX-Autonomy-Assurance-Case-Runtime: lifecycle monitoring, drift/revalidation concepts and explicit claim boundaries.
- IX-HapticSight: hardware/interface separation, signal-health gating, HIL thinking, recovery-first runtime structure and multimodal perception boundaries.
- IX-Sally: reality-coupled hypothesis competition and active information-seeking, constrained here to recommendation-only geometry and counterfactual-discrimination tasking.
- SynapDrive-AI: uncertainty-aware fusion, signal drift, replay, fault injection and governed-runtime patterns.
- IX-BlackBox: finite behavioral equivalence and smallest/clearest representative behavior over an explicit test universe.
See DONOR_INTEGRATION.md for the mapping and exclusions.
A low residual does not prove identity. A confirmed track does not prove origin. A strong acceleration fit does not establish propulsion. A pattern-of-life outlier does not establish an anomaly in the colloquial sense. A cryptographic signature proves possession of a signing key, not the identity of the key holder unless key ownership is established elsewhere.
The strongest claim this repository is designed to support is narrower and testable:
Given retained source evidence, active calibration records, timing assumptions and configured gates, these measurements were processed by this deterministic pipeline, these competing hypotheses were considered, these observations were associated into this track, and these are the evidence and limitations supporting that result.