Commit Graph

59 Commits

Author SHA1 Message Date
LittleSam129
3c31bac0da CLOCK-001: validate independent-clock QPSK receiver 2026-09-17 15:05:44 +03:00
LittleSam129
6df5f8aa39 VIDEO-005: add full offline QPSK IQ video receiver 2026-09-17 13:34:58 +03:00
LittleSam129
95f664076a Complete VIDEO-001 through VIDEO-004 software video studies 2026-09-16 18:27:35 +03:00
LittleSam129
af7c05f2da Lab067: localize remaining PHY header failures 2026-09-15 17:45:38 +03:00
LittleSam129
b27a5cf00e Lab066: validate 500 ksymbol/s full-packet OTA reception 2026-09-15 15:51:57 +03:00
LittleSam129
dacf04f2d0 Lab065: validate OTA gain improvement at TX VGA 20 dB 2026-09-15 13:42:08 +03:00
LittleSam129
cff226e0bf Lab064: measure OTA level linearity at TX VGA 10 dB 2026-09-15 12:03:48 +03:00
LittleSam129
4437917465 Lab063: localize Lab062 RF quality degradation offline 2026-09-14 15:11:46 +03:00
LittleSam129
f8ae6c6bfc Lab062: record invalidated 500 ksymbol/s RF packet trial 2026-09-14 13:58:42 +03:00
LittleSam129
25cc89f0c7 Lab061: integrate T2 into the strict receiver 2026-09-14 11:07:40 +03:00
LittleSam129
92b0e0f8dd Lab060: validate decision-directed carrier tracking 2026-09-11 14:13:51 +03:00
LittleSam129
e16ec23fdb Lab059: establish limits of preamble-only carrier estimation 2026-09-11 13:08:32 +03:00
LittleSam129
82f17499ac Lab058: characterize symbol quality in controlled ABAB recording 2026-09-11 11:49:48 +03:00
LittleSam129
5773136ebf Lab057: diagnose Lab054 symbol synchronization failures offline 2026-09-10 16:10:17 +03:00
LittleSam129
92477a4632 Lab056: compare 20 and 500 ksymbol/s in controlled RF session 2026-09-10 13:58:11 +03:00
LittleSam129
5add95ecb8 Lab055: audit received signal energy across symbol rates 2026-09-09 15:07:11 +03:00
LittleSam129
0368c6d3e9 Lab053: achieve real-time 5 fps software video receiver 2026-09-09 10:26:55 +03:00
LittleSam129
cc38900cae Lab052: suppress false preamble candidates 2026-09-08 17:29:52 +03:00
LittleSam129
9f33607d3a Lab051: accelerate 500 ksymbol/s streaming receiver 2026-09-08 16:04:09 +03:00
LittleSam129
60691a09f1 Lab050: model fresh-frame SDR video stream 2026-09-08 14:15:36 +03:00
LittleSam129
cdf5396e80 Lab049: define ELRS control and SDR video architecture 2026-09-08 13:26:06 +03:00
LittleSam129
ac6cc792b8 Lab048: accelerate BPSK receiver to real-time 2026-09-03 14:42:02 +03:00
LittleSam129
6fb7e4ec54 Lab047: transmit JPEG over real RF link 2026-09-03 13:13:23 +03:00
LittleSam129
d985030f04 Lab046C: recover short 1400 MHz capture offline 2026-09-02 12:23:14 +03:00
LittleSam129
9b906c622d Lab046C: analyze weak RF capture offline 2026-09-01 17:09:27 +03:00
LittleSam129
b6654671b4 Lab046C: record first continuous RF object attempt 2026-09-01 15:42:00 +03:00
LittleSam129
39fa4b139d Lab046B: validate continuous raw IQ frame reception 2026-09-01 14:36:51 +03:00
LittleSam129
e8d85ae4b7 Lab046A: validate continuous soft-symbol frame scanning 2026-09-01 13:18:42 +03:00
LittleSam129
1027eef53d Lab046: validate fragmented BPSK object transport 2026-09-01 11:39:45 +03:00
LittleSam129
62a376c811 Lab045: demonstrate real RF BPSK error correction
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-01 10:49:00 +03:00
LittleSam129
72f933a32b Lab044: validate arbitrary BPSK packet reception
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-31 14:39:12 +03:00
LittleSam129
4cee6e9b96 Lab043: establish reproducible HackRF BPSK working point 2026-08-31 12:18:44 +03:00
LittleSam129
42b0120eea Lab043: add hardware diagnostics and HackRF comparison tools 2026-08-21 17:33:57 +03:00
LittleSam129
f0fa7e8a46 Lab043: validate pilot-aided short BPSK link 2026-08-19 18:14:13 +03:00
LittleSam129
fa2e473c6d Lab042: validate Pluto image hardware loopback 2026-08-17 18:30:16 +03:00
LittleSam129
92289bdf7c Cover control messages and session state; record the RF decision
Two more suites, 69 checks, bringing the fast tests to 125 in 0.3 s.

test_control_messages: roundtrip for all ten message types, a guard that
fails if a type is added without a test, wrong version, unknown type,
truncation, the control-state range rules including negative and
non-finite speed, and sequence comparison across the 32-bit wrap and the
ambiguous 2^31 boundary.

test_session_state: the safety properties that previously only ran inside
Lab041. Safe boot on both sides, status and authorization not being a
movement command, a new operator command being required, stale session,
boot and epoch identifiers, replay, sequence wrap, ambiguity, persisted
emergency intent surviving a restart, acknowledgement not clearing it,
ordinary commands not releasing the latch, idempotent reset, and reset
not restoring the previous command.

Two of these were literal zeros in the Lab041 report and measured
nothing: negative speed and speed above the limit are now genuinely
exercised against the encoder.

PROJECT_LOG entry 018 records the RF architecture decision: 200-250 MHz
with frequency hopping, a directional ground antenna and spread spectrum
for the command channel, with the rejected alternatives and why.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 15:29:47 +03:00
LittleSam129
2da80d0908 Add the first real test suite for protocol/
56 fast checks, 0.2 s, covering packet.py and the new bpsk_radio.py.

test_bpsk_radio exists mainly to prove the extraction changed nothing. It
loads the original function definitions out of Lab018, Lab019 and Lab023
in isolation, compiling only the wanted AST nodes so the labs' module
level file writing never runs, then compares outputs: bit conversion,
modulation, shaping filter, frame marker and the carrier estimator over
random phase and frequency offsets.

It also covers the frame functions written fresh for the module:
roundtrip at four payload sizes, size and type rejection, broken sync
word, truncation, carrying a real CRC32 packet, and a shaped-signal
search that recovers the packet through matched filtering.

test_packet covers roundtrip across all four message types and five
payload sizes, sync word, length arithmetic, sequence range, truncation,
oversized payload, and single-bit corruption at six positions, which is
the property CRC32 is there to provide.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 14:38:12 +03:00
LittleSam129
c486039053 Split experiments from tests
The tests/ directory held 50 laboratory programs and no tests. They model
channels, run hundreds of repetitions and write CSV, PNG and reports;
calling that a test suite blocked introducing a real one, because any
pytest run would have collected the labs and re-executed every
experiment.

- move all 50 lab programs to experiments/ with git mv, preserving history
- rewrite the 38 cross-imports between labs from tests.labNNN to
  experiments.labNNN
- leave tests/ empty for actual fast checks of protocol/
- point quick_gate and the hook at the new layout and add experiments/ to
  the syntax sweep
- update the paths quoted in the Lab042 specification and the verifier
  agent definition

This also defuses the import-time work finding without touching 41 files:
the labs still create directories and write files on import, but nothing
imports them now except the gate, which does so deliberately.

Gate passes: syntax clean, protocol imports, 15 lab modules import, 2
functional suites run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 14:34:58 +03:00
LittleSam129
7d122b53ed Lab041: remove non-modelled metrics and cite value sources
Audit found seven numbers in simulate_trial that were neither modelled by
Lab041 nor traceable to their claimed source. Video fraction 0.910 did not
match Lab040 (0.9603); base queue length 31 did not match Lab040 (36-38).

- drop video/telemetry/control delivered fractions and queue length: these
  belong to Lab037 and Lab040 and are not modelled here
- drop lab041_traffic_impact.png, which plotted only those metrics
- drop negative_speed_cases and speed_limit_exceeded_cases, never computed,
  along with the tautological asserts that checked them
- bind braking parameters to the Lab039 nominal profile via named constants
  instead of the literals 0.250 and the divisor 6.0
- cite Lab038 as the source of the transferred video and telemetry loads
- rewrite the invariants section: nine architecture-derived properties now
  carry functional-check references, five unmeasurable ones move to their
  own section
- extend check 04 with negative speed and the 15 m/s boundary
- state explicitly what the matrix rolls, what the architecture fixes and
  what is not modelled at all

Regenerated: 180 combinations, 24/24 checks, five CSV and seven PNG.
Six columns removed, no retained value changed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 17:32:51 +03:00
LittleSam129
e18200225b Lab041: correct generated Git status wording 2026-08-07 10:50:42 +03:00
LittleSam129
f26d7d74ef Lab041: add session and restart safety 2026-08-05 14:14:24 +03:00
LittleSam129
88addff5b6 Lab040: add persistent emergency intent and safe reset 2026-08-05 13:12:49 +03:00
LittleSam129
b3ebe1637f Lab039: model two-stage failsafe braking 2026-08-05 11:44:43 +03:00
LittleSam129
23cfdf581b Lab038: add control failsafe and emergency acknowledgement 2026-08-04 14:06:50 +03:00
LittleSam129
50e45ca611 Lab037: evaluate control repetition on lossy link 2026-08-04 13:18:49 +03:00
LittleSam129
3e0ef5666e Lab036: validate long-duration video scheduling 2026-08-03 17:10:17 +03:00
LittleSam129
22c2eeab8c Lab035: add proactive video frame admission 2026-08-03 15:42:16 +03:00
LittleSam129
b63e36abdb Lab034: evaluate stale video frame dropping 2026-08-03 13:17:55 +03:00
LittleSam129
21751f41dd Lab033: add priority link scheduler 2026-08-03 12:21:49 +03:00
LittleSam129
3dbb7afa83 Lab032: evaluate FEC block parameters 2026-07-29 12:47:10 +03:00