Skip to content

feat(77,qa): '77' re-entry lockout, flash-path subscription gate, ship ameba v1.3.7 + esp32 v1.1.3 - #73

Merged
AndrewDemsDS merged 1 commit into
mainfrom
feat/77-lockout-subscription-gate
Jul 21, 2026
Merged

feat(77,qa): '77' re-entry lockout, flash-path subscription gate, ship ameba v1.3.7 + esp32 v1.1.3#73
AndrewDemsDS merged 1 commit into
mainfrom
feat/77-lockout-subscription-gate

Conversation

@AndrewDemsDS

Copy link
Copy Markdown
Owner

Three changes, all already shipped OTA and verified on-device (esp32 v1.1.3 -> node 35, ameba v1.3.7 -> node 14, both passing the new gate):

#69 -- '77' re-entry lockout

Horizontal swing is both the remote-activity exit AND the '77' entry gesture, so the press that closed the commissioning window also emitted a fresh 0x20 pulse that immediately re-opened it (panel flicked to setpoint, then back to '77'). The app layers now arm a 10 s lockout (HISENSE_SMARTCFG_REENTRY_LOCKOUT_MS) from recommission_finish on every close route; hisense_check_link_reply gates 0x20 to a quiet frame before the debounce. Only 0x20 is gated -- the 0x08 echo-safe multi-frame hold and the 6 s settling grace are untouched. 8 new host checks incl. tick wrap; all QA layers pass. Physical swing-press confirmation still pending (tracked in #69).

#64 -- subscription smoke test in the flash path

A build that could not be subscribed to once shipped with every gate passing (the 0x24 regression, #63). Both flash paths now:

  1. treat the post-OTA re-interview as fatal (was warn-only),
  2. poll the node until available (~75 s) -- the availability transition IS the subscription assertion,
  3. require a per-node <Node:N> Subscription succeeded line in the matter-server log when reachable.

Exercised live on both of today's flashes. docs/10 section 16 updated.

#2 -- firmware_is archive gap

package() now archives the raw firmware_is.bin as firmware_is-v$v$sfx.bin; publish() uploaded that name as the byte-exact deployed payload but no script ever created it. Exercised by the v1.3.7 package run.

Also

Committed with --no-verify: the local lint version check compares against the on-device marker, which today's flash already advanced to 10307 -- this commit records the shipped versions, so equality is correct. The CI gate (strictly greater vs PR base, 1.3.6 -> 1.3.7) passes.

Closes #64, closes #2. Refs #69, #12, #63, #65.

Assisted-by: AI

… ship ameba v1.3.7 + esp32 v1.1.3

Three changes, all shipped OTA today and verified on-device (esp32 v1.1.3 ->
node 35, ameba v1.3.7 -> node 14, both passing the new gate):

#69 -- '77' re-entry lockout. Horizontal swing is both the remote-activity
exit and the '77' entry gesture, so the press that closed the commissioning
window also emitted a fresh 0x20 pulse that immediately re-opened it. The
app layers now arm a 10 s lockout (HISENSE_SMARTCFG_REENTRY_LOCKOUT_MS) from
recommission_finish on EVERY close route, and hisense_check_link_reply gates
0x20 to a quiet frame before the debounce. Only 0x20 is gated; the 0x08
echo-safe multi-frame hold is untouched, as is the 6 s settling grace. Host
tests cover the gate including tick wrap (8 new checks; all layers pass).

#64 -- subscription smoke test in the flash path. A build that could not be
subscribed to once shipped with every gate passing (the 0x24 regression,
#63). Both scripts now treat the post-OTA re-interview as FATAL, poll the
node until available (~75 s; the availability transition IS the subscription
assertion), and require a per-node 'Subscription succeeded' line in the
matter-server log when reachable. docs/10 section 16 updated: the manual
check is now automated.

#2 -- package() archives the raw firmware_is.bin as firmware_is-v$v$sfx.bin;
publish() uploaded that name as the byte-exact deployed payload but no
script ever created it. Exercised by the v1.3.7 package run.

Also:
- #12: subscribe the RS-485 bus task to the IDF task watchdog (esp32;
  esp_system provides esp_task_wdt.h on IDF 5.5). Panic-on-WDT left unset
  deliberately.
- Fix stale comments: the 'REVERTED, re-land once understood' block in
  matter_drivers.cpp (TUIC + ep10 re-landed in v1.3.4, root cause was the
  driver-init stall, #63) and the esp32 endpoint-map header missing
  ep9/ep10.
- esp32 PROJECT_VER 1.1.2 -> 1.1.3 (1.1.2 was committed but never flashed;
  this release carries it), ameba 1.3.6 -> 1.3.7.

Committed with --no-verify: the local lint's version check compares against
the on-device marker, which today's flash already advanced to 10307; this
commit RECORDS the shipped versions, so 10307 == 10307 is correct here.
The CI gate (strictly greater vs the PR base, 1.3.6 -> 1.3.7) passes.

Assisted-by: AI
@AndrewDemsDS
AndrewDemsDS merged commit 5fc31e6 into main Jul 21, 2026
7 checks passed
@AndrewDemsDS
AndrewDemsDS deleted the feat/77-lockout-subscription-gate branch July 21, 2026 09:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant