diff --git a/README.md b/README.md index a7446c7..d72ca78 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ streams. > **Release candidate:** `0.1.0rc3` is a USB-first research SDK for firmware > 0.9.10 or newer with CONFIG schema 6. The current golden firmware for new flashes -> is 0.9.11; deployed 0.9.10 gloves remain supported. Older firmware is rejected +> is 0.9.12; deployed 0.9.10 and 0.9.11 gloves remain supported. Older firmware is rejected > for both live connections and replay. BLE is experimental and not release-qualified. This public repository is the sole canonical source for the SDK. Development, @@ -57,7 +57,7 @@ oglo doctor `doctor` measures the attached device and host rather than assuming the nominal rates. Resolve any reported identity, firmware, loss, or throughput failure before recording data. Upgrade any live glove that reports firmware older than 0.9.10 or -anything other than schema 6. New flashes should use the current 0.9.11 golden image. +anything other than schema 6. New flashes should use the current 0.9.12 golden image. ## Read one glove diff --git a/docs/01_quickstart.md b/docs/01_quickstart.md index 1c9416f..fff80b5 100644 --- a/docs/01_quickstart.md +++ b/docs/01_quickstart.md @@ -17,8 +17,8 @@ python3 -m pip install \ ``` Python 3.10 or newer is required. Supported live gloves run firmware 0.9.10 or -newer with schema 6. The current golden firmware for new flashes is 0.9.11; -deployed 0.9.10 gloves remain supported. `0.1.0rc3` rejects older firmware in both +newer with schema 6. The current golden firmware for new flashes is 0.9.12; +deployed 0.9.10 and 0.9.11 gloves remain supported. `0.1.0rc3` rejects older firmware in both live connections and recorded episodes. ## Diagnose before collecting data diff --git a/docs/02_data_reference.md b/docs/02_data_reference.md index 0054d79..ecf4b71 100644 --- a/docs/02_data_reference.md +++ b/docs/02_data_reference.md @@ -22,8 +22,8 @@ accelerometer/gyroscope at 200 Hz but polls/emits its latest value on a nominal schedule, so adjacent 500-packet/s records may contain the same physical measurement. The supported contract is firmware 0.9.10 or newer with schema 6. The current -golden firmware for new flashes is 0.9.11, while deployed 0.9.10 gloves remain -supported. `0.1.0rc3` rejects older firmware in live connections, vector capture, +golden firmware for new flashes is 0.9.12, while deployed 0.9.10 and 0.9.11 gloves +remain supported. `0.1.0rc3` rejects older firmware in live connections, vector capture, and replay instead of selecting a best-effort decoder. ## Identity and side @@ -169,7 +169,8 @@ others cannot. ## Integrity limit of supported firmware The supported tagged USB frame has a magic and length but no checksum/CRC. Firmware -0.9.11 bounds TinyUSB writes so a stopped host cannot hold the TX path forever, but +0.9.11 and newer bound TinyUSB writes so a stopped host cannot hold the TX path +forever, but that deadline is not payload integrity. The SDK cannot mathematically prove that every plausible payload bit is intact. A future protocol needs framed CRC protection for that guarantee. diff --git a/docs/06_compatibility.md b/docs/06_compatibility.md index d3810b2..5200765 100644 --- a/docs/06_compatibility.md +++ b/docs/06_compatibility.md @@ -9,16 +9,18 @@ physical gloves. They are different claims. | --- | --- | | Python | 3.10 or newer | | Minimum supported firmware | 0.9.10 | -| Current golden firmware for new flashes | 0.9.11 | +| Current golden firmware for new flashes | 0.9.12 | | CONFIG schema | exactly 6 | | USB tagged stream | supported and hardware-validated | | BLE schema-6 notifications | experimental; parser-tested, not release-qualified | | Firmware older than 0.9.10 | rejected for connect, replay, and vector capture | `0.1.0rc3` has one firmware floor: 0.9.10. Live devices, checked-in vectors, and -recorded episodes below that floor fail closed. Firmware 0.9.11 keeps schema 6 and -the same SDK wire contract while adding a bounded TinyUSB write path; it is the -current image for new flashes. Deployed 0.9.10 gloves remain compatible. +recorded episodes below that floor fail closed. Firmware 0.9.11 added a bounded +TinyUSB write path and 0.9.12 preserves it while adding signed USB application +update; both keep schema 6 and the identical SDK wire contract, so the SDK has no +upper firmware bound. 0.9.12 is the current image for new flashes. Deployed +0.9.10 and 0.9.11 gloves remain compatible. ## Physical validation for this release candidate diff --git a/src/oglo/_wire.py b/src/oglo/_wire.py index 92cbff2..e4aeb53 100644 --- a/src/oglo/_wire.py +++ b/src/oglo/_wire.py @@ -6,7 +6,7 @@ The public contract is documented in `docs/02_data_reference.md` and locked by the captured vectors under `spec/vectors/`. The implementation was also read back from -the current firmware source (`oglo_rdr02_tia.ino`, FW 0.9.11) rather than inferred +the current firmware source (`oglo_rdr02_tia.ino`, FW 0.9.12) rather than inferred from prose alone. There is one supported wire contract: firmware 0.9.10+, schema 6. USB is the tagged diff --git a/tests/test_documentation.py b/tests/test_documentation.py index 24dc51d..e614577 100644 --- a/tests/test_documentation.py +++ b/tests/test_documentation.py @@ -27,7 +27,7 @@ def test_current_docs_match_the_release_and_firmware_floor(): assert "pair_id" not in text assert "allow_unpaired" not in text assert "allow-unpaired" not in text - assert "0.9.11" in text + assert "0.9.12" in text assert "oglo-0.1.0rc3-py3-none-any.whl" in text assert "@v0.1.0rc3" in text