Skip to content

PakarController complete production acceptance and donor parity #2

Open

Description

@atomicdeploy

PakarController production acceptance

This checklist is the full user-requested release scope. A checked source/test
checkpoint is not a checked physical acceptance item. Keep the GitHub master
issue open until every applicable acceptance item has linked evidence. Any
exclusion needs a concrete donor path, reason and hardware/business scope;
"equivalent soul" and content-hash screening are not integration proof.

Master tracking issue: #2

Current delivered checkpoint

Source20a242b · actual recovery and limitations. Diagnostic recovery, not production acceptance.

  • Corrected S3 image2193760B/SHA256 cb1f18f16c62e369e52120ec0986bd30d1b5d38e71204216c47aded721a6de0f installed by actual ROM-MAC/selection-guarded USB application-only recovery. VALID app0/0x10000, new boot ff6da73b47d6fd790fc1eb36c491d6ef, all34 running-image ranges/full SHA and same-peer WebSocket49ms verified. Rollback app1, bootloader/partitions/otadata and AVR memory/fuses untouched by recovery.
  • First LAN candidate ec2d497... was actually uploaded/verified but failed stability when MQTT exposed loopTask stack-canary panics. Original failure/COM22 panic capture retained; exact-ELF decode located nested telemetry/status stack exhaustion. Corrected compiled frames: loop2976→592B, submit1488→48B, publishTelemetry1408→80B; no SDK stack increase or second effects engine.
  • Actual RMT/GDMA refill IRQ measured source71/core1/vector27/level3. Periodic filesystem telemetry scans removed in favor of boot-cached age/known/null observation; fresh update admission retained. Same renderer advances between cloud writes.
  • Final16.418s normal-MQTT observation: same boot/all26 samples connected, publishes10→13,775 transmitted-frame increments, failed0, no zero-frame sample intervals; longest sampled gap516ms versus1086ms baseline. This is bounded runtime/counter evidence, not physical waveform or all80-cell proof. Startup TLS still reached2166ms; individual synchronous socket calls remain a limitation.
  • Actual ASUS wire observations: mDNS A, DNS-SD PTR/SRV/TXT, SSDP root/basic, MNDP identity/MAC/IP, NB name/full121B NBSTAT. Windows nbtstat reports LEDBOARD<00>/sameMAC from ASUS wired and Wi-Fi interfaces. ESP remains Wi-Fi+AP; W5500 runtime is DISABLED.
  • Focused LED worker/concurrent producer, actual-IDF ring, IRQ guard, both-platform cloud wire-format, filesystem, Ethernet/LLDP, network and settings fixtures; actual S3 SDK build; source ledger240/4673 hash-bound comparisons. Native and Flutter addressing packages built, NOT deployed in this pass. Zero open PRs at fresh listing; latest CI asynchronous, not claimed all-green.
  • Human confirms all80 cells/480 pixels and no periodic optical pause. Current user-selected rainbow is preserved; older output-disabled text below is historical.
  • Autonomous NTP after cold boot: clock remained unset; explicit ASUS UTC setting enabled the final TLS/MQTT test. Do not claim standalone NTP or USB-disconnect readiness from this pass.
  • Original Internet image job20/TLS allocation failure remains preserved; remote image-fetch/apply completion, external-power restart and long RF/coexistence soak still open.
  • Actual W5500 wiring/link/Ethernet-only Internet/local APIs/LLDP and router IGD acceptance. Router probes returned no IGD descriptor; no router login/mapping/firewall changes made.
  • Authoritative installed native/mobile acceptance: SSH session0 native IPC unavailable (not proof the interactive app is unhealthy); no GUI replacement or phone deployment this pass. Complete donor parity/peripheral/physical gates remain below.

Ledger:240 comparisons,4433 pending,197 known parity gaps. Keep this master issue OPEN.

Previous service recovery: LED all-off and ASUS app

Current ESP recovery source: 4e6a6f0; exact deployment and remaining limits. Version0.2.7; native/Android build14. This is a diagnostic recovery, not production acceptance.

  • The physical all-off failure is recorded: user still saw lit pixels after an accepted80-cell Off batch, all1440 published RGB bytes zero and gpio-static transmissions/error0. Those counters were NOT treated as optical success. Output disabled; no further colored tests.
  • Explicit RMT-DMA recovery uses1440 internal wire bytes, bounded SDK ring, immutable full frames and300us LOW latch. Fresh post-UART render time bypasses the obsolete SoftwareSerial lease on buffered S3. Static remains separately selectable, not silently removed.
  • One local OTA failed after5556ms: operation3 ABORTED42460/2046320. Independent reads established unchanged ca1acf boot/old image before USB recovery; no blind upload replay.
  • Fresh CRC-valid OTA19/20, COM22 bridge and same MAC selected app1/0x340000. USB wrote only that application range in31.7s and verified its hash. No bootloader/partition table/OTA selection data/filesystem/AVR writes in this ESP recovery.
  • Full actual running-image SHA d46b74b74d3471215fff3ac85cc4777287a7f9718f42cfd504804e195628f88f,2046320bytes; VALID selected/running app1 and new boot730642a9a16509512ec9365ec42b1f0b independently verified.
  • Actual RMT ready, submitted2/transmitted3/failed0/error0;80 saved Off states/output disabled. Auth disabled/BLE unstarted/Wi-Fi awake/AP+STA/MQTT observed. These are observations, not physical black or cloud-command round-trip proof.
  • Native PID15928/build14 reconnected Wi-Fi/WS to that exact boot:80 mappings/80Off, AVR online/TM ACKtrue, resting OFF raw masks, no pending maintenance or active incidents. Recovery timeouts remain in inactive history.
  • Four complete cached-address reads: status529ms/panel479ms/Web223213bytes in1336ms/SSDP XML661ms. Same-peer WS upgrade110ms+status36ms. One image-export read required the bounded read-only retry; no clean-soak claim.
  • Semantic TM policy and separate requested/observed WS+USB events in174da58; custom notice receipt/updater validation fixes infae96a6. Actual AVR Urboot backup/program jobs1/2 verified full flash and preserved EEPROM, without bootloader/EEPROM/fuse writes. Native14 deployed; Android14 exact APK staged on ASUS, NOT phone-installed.
  • Focused panel/LED pipeline and8 worker-double cases plus actual S3 SDK build passed. Canonical ledgers/hash guards checked; newest exact-head CI not awaited or declared green.
  • User confirms the new RMT startup/clear made ALL480 pixels physically dark.
  • Verify actual white/red/per-cell mapping, RF/refill/coexistence and fault recovery after all-black succeeds.
  • Repair and reverify current OTA ingress; this deployment required USB.
  • Complete nonblocking single-owner cloud I/O: synchronous service reached2044ms, and coalesced display flush still timestamps before a possibly stalled publish.
  • Physical TM notice readability/blink/menu priority and all peripheral/audio/input gates.
  • External-power/USB-removed restart, BLE/TLS/OTA coexistence, Android on-device/signing, native clipping/per-pixel preview, W5500/TFT and full donor parity.

Source provenance remains232/4673 hash-bound comparisons,4441 pending/190 parity gaps. Production remains OPEN. Historical successful Wi-Fi OTA/discovery and older images are retained in commissioning; they do not certify this current recovery. No secrets published.

Existing source/test checkpoints (not release acceptance)

  • Web's fixed 25 FPS timer replaced with explicit 60/default and 0/uncapped
    client pacing, bounded latest-frame buffering and peer/socket cancellation.
    5212914:
    quality/ESP compile, exact donor mappings and limits in WEB-STREAMING.md.
    Physical refresh, queued-frame fencing, multi-client arbitration and full
    mobile streaming/preferences parity remain open.

  • Embedded Web HTTP ownership in 5b54e4d: all Web mutations preflight and pin board/boot headers; settings/batches keep one owner, false cell ACKs stop, stale replies/drafts are revoked, bounded cancellation/deadlines and no 401/redirect replay. Full quality and ESP8266 busy-wire compile pass; exact module is present in image. GUI/Flutter/other transports, S3/DMA and physical acceptance remain open. docs/HTTP-PEER-FENCING.md.

  • HTTP board/boot fencing in b3e9d19: TUI requires valid advertised identity, pins all mutating HTTP requests, and ESP rejects stale/partial headers before dispatch and both uploads. 151 native tests, C++ validation, full quality, ESP8266 busy-wire compile, Release and staged CLI guards pass. GUI/Web/mobile/other transports, AVR-only reset, S3 integration and physical reboot acceptance remain open. docs/HTTP-PEER-FENCING.md.

  • Interactive terminal checkpoint in d450866: contextual pages, native shared Find/selection, explicit guarded bulk white/red/off and shared CLI command palette. 147 native tests and first built-CLI/ConPTY checks pass; rich editors/transport/mapping/full physical acceptance remain open. Final clean-head Release/stage, redirected guard/cause-chain and real Windows ConPTY smoke passed; not full GUI/hardware acceptance. docs/TERMINAL-UI.md.

  • Native/Web incident deduplication preserves distinct causes/routes/ports and explicit failures; native67948be live stable8rows/repeat counts and screenshot proof. Prior source60d8668 full CI38140468478 succeeds.

  • Buffered AVR build profile for S3 preparation in5d02b07; hardware Serial, A4/A5 TM1637 and busy/poll modes preserved. Actual shared transport tests/all3 AVR compiles pass. Source/build only, not deployed S3/AVR or physical zero-loss acceptance; docs/UART-FLOW-MIGRATION.md.

  • One integrated ESP firmware contains API/WebSocket, LED engine, cloud,
    storage, self-OTA and AVR ISP; no separate programmer firmware is required.

  • Busy-wire and polling build flags exist on both boards; AVR busy input uses
    INPUT_PULLUP; busy-wire is the current source default.

  • Pealayer-derived native shell, Phosphor assets, dock panels, preferences,
    dialogs, notifications, tray, native icons and single-instance IPC exist with
    explicit source mappings in PEALAYER-DESKTOP-FOUNDATION.md.

  • Half-cell odd-column stagger, alternating native column backgrounds,
    logical-number search, row-major IDs and physical/name mapping exist.

  • PCController-compatible one-shot/loop/interval display text and actual
    segment readback are implemented; production AVR presentation tests pass.

  • Actual PU850 firmware transfer source and real async web transport are
    integrated; persistent auth editing and USB recovery have source tests.

  • Persistent hostname editing via API/CLI/TUI/Web/native/Telnet/USB exists;
    no suffix is added; 0.2.3 builds and source tests pass locally.

  • Actual PU850 Telnet negotiation and bounded line editor are adapted;
    hidden password input, cursor editing and no truncated-command execution tested.

  • ESP busy-high explicitly uses INPUT_PULLUP; receive-ready preloads LOW;
    polling builds avoid that GPIO. Production source tested; live acceptance open.

  • Production AVR tone player preserves 530 ms donor welcome deadlines under
    delayed service and rollover; register-double tests pass, audible gate open.

  • Expanded 1,868-file donor inventory exposes missing sparse paths; manual
    reviews are hash-bound. Strict release gate rejects unresolved rows.

  • Existing Flutter source preserved and hardened: secure credential migration,
    no mutation replay, exact logical search and Once text default; source tests
    and analyzer pass. Phone/tablet and production-signing acceptance remain open.

  • All fourteen current catalog cues are exercised by production source tests;
    Puzzles 530 ms, PuzzleBoard 520 ms and 40LED 590 ms variants remain distinct.
    Native/Web/mobile expose only known AVR-advertised cues; USB carries catalog.

  • Native Wi-Fi+USB commands/network changes choose one route before dispatch;
    no dual application and no replay on uncertain failure. Serial status expires.

  • Broker TLS and anonymous rejection verified; exact ledboard topic ACL added
    without resetting credentials or unrelated tenant rules. ESP cloud gate open.

  • Native streaming target is configurable (60 FPS default, 0 uncapped) for
    rainbow and sampling; hidden 25/8 FPS delays removed. Sent rate is explicitly
    host-write evidence, not LED refresh. Pacing and table-footer tests pass.

  • Native network observations carry endpoint/credential identity; serial
    observations and queued writes carry port identity. Late other-peer events
    are rejected, and destination changes clear old displayed state.

  • Normal ESP/AVR handshake no longer queues a false update-success cue over
    the AVR welcome. Actual OTA/ISP cues remain; source regression passes.

  • Native sampler uses only a complete validated board-advertised physical
    map and the odd-column half-stagger; missing/duplicate maps disable it.
    Remapped cells and bounds pass tests; live and monitor/region gates stay open.

Donor completeness and provenance

  • Refresh exact refs and dirty state for Pealayer, canonical and legacy
    PCController, ControllerBoardMini/Puzzles, PuzzleBoard, 40LED and PU850/ASA0002E.
  • Inventory every source/tool/asset/test file, including sparse-checkout and
    missing files; bind manual decisions to source hashes/revisions.
  • Manually read every applicable donor source file; assign imported/adapted,
    verified superior replacement, business-only exclusion or hardware exclusion.
  • Import useful Puzzles code/features, including input/menu/display/audio/
    configuration behavior; retain PuzzleBoard's A4/DIO, A5/CLK pin mapping.
  • Reconcile every applicable PCController feature and protocol operation;
    no hardware-mismatched LCD/I2C page is falsely advertised.
  • Complete all useful PU850 features, including actual shell/editor,
    Telnet negotiation, discovery metadata/MNDP, diagnostics, file tooling,
    uploaders and CI/dependency/deployment scripts; document each exclusion.
  • Give each custom Pealayer UI element a donor file, target implementation,
    invocation path, tests and real rendered screenshot evidence.
  • Add an automated release gate for unresolved applicable ledger rows;
    distinguish screening from manual read and from runtime acceptance.

Electrical, timing and integrated firmware

  • Measure actual AVR VCC and crystal/clock/fuses against its exact part's
    datasheet speed grade. User-reported 3.3 V plus the current 16 MHz build profile
    needs confirmation; do not alter fuses or raise supply blindly with ESP wired.
  • Confirm busy-wire pull-ups and boot-safe GPIO0 behavior on actual hardware;
    retain configurable polling mode and select default using measured loss/latency.
  • Verify AVR hardware UART and ESP SoftwareSerial bidirectionally with CRC,
    error counters, reboot, lost-link recovery and LED/stream/update contention.
  • Verify TM1637 ACK, brightness, actual segments and correct connector pins.
  • Compare/import every donor melody, expose cue selection, test exact welcome
    timing and transitions; physically hear correct melody without clicks/jitter.
  • Verify all 74HC165 inputs, 74HC595 outputs and ADC6 ninth input/debounce.
  • Verify front-panel menus for ESP/AVR/device settings, actual parameters,
    game modes and logic; save/readback with truthful validation.
  • Verify meaningful seven-segment cell/winner/config/update/error values,
    imported perimeter animation and progress; no permanent nuisance marquee.
  • Verify full-brightness rainbow and deterministic effects with UART active;
    measure frame rate rather than adding an arbitrary 20fps cap.
  • Test live ESP self-OTA (including abort/bad hash/parallel clients) with cues.
  • Test live AVR ISP update/verify/recovery with Prog latch while full ESP
    services remain installed; prove reset/ISP/UART electrical ownership.
  • Store/retrieve verified AVR+Urboot and EEPROM backups; test filesystem-full,
    interrupted writes and restore without erasing configuration.

Business and streaming

  • Validate 80 logical row-major cells, six LEDs per cell, half-cell stagger,
    alternating backgrounds, number highlighting, rename and physical remap on all UIs.
  • Verify initial white table and per-cell red/off/effect changes via API,
    physical keypad/front panel, CLI/TUI, Web, desktop and mobile.
  • Verify nine-button first-wins logic, ties/reset/debounce and matching
    shift-register and strip outputs.
  • Complete snake example: input/control, reset, collision/game-over and
    consistent table mapping on all requested surfaces.
  • Complete real screen sampler: monitor/region selection, geometry mapping,
    controls and measured Wi-Fi streaming; no mpv dependency.
  • Validate configurable/uncapped streaming with backpressure and measured
    rendered LED throughput; compare host sent rate to actual board frame commits.
  • Verify Wi-Fi/WebSocket/UDP streaming framing, bounds, frame commit and
    disconnect recovery; define the AVR strip decision without duplicating engines.
  • Verify multi-client control and simultaneous Wi-Fi plus USB host transport
    without double-applying commands or presenting inferred hardware state.

Network, authentication and cloud

  • Deploy and verify this board as ledboard.local; API readback and reboot
    persistence; hostname-first clients with current-address recovery only.
  • Scan actual SSIDs; join DRS Tether using the latest privately supplied
    credentials; test reconnect and AP recovery without logging secrets.
  • Verify station/AP/AP+station selection and persistence through all menus.
  • Verify mDNS, SSDP, NetBIOS and all retained donor discovery on both PCs;
    verify advertisements refer to the same hardware UUID and configured name.
  • Verify NTP sync, offline/reconnect behavior and displayed time state.
  • Verify configured Basic/session authentication, clear sign-in UI, credential
    rotation, expiry, restart, USB recovery and access to protected WebSockets.
  • Test mqtt.digitalogic.ir round-trip, TLS/auth/ACLs and disconnect/reconnect;
    coordinate only scoped credentials/service changes on office.digitalogic.ir.
  • Verify configurable outbound WebSocket endpoint and round-trip/reconnect.
  • Expose safe network/cloud/device configuration across applicable API,
    CLI/TUI/Web/native/mobile/front-panel surfaces with secrets write-only.

Applications and visual acceptance

  • Complete native Pealayer-derived UX parity: modals, preferences, themes,
    palettes, icon vocabulary, actions/events, workspace/tray/single instance,
    shortcuts, seven-segment mirror and hardware monitor; exclude media/timeline/cue.
  • Inspect real Pakar and Pealayer screenshots in light/dark themes and narrow
    layouts; fix alignment, overflow, focus, empty/error/stale/pending states.
  • Build a proper interactive table TUI with per-cell effects, search/mapping,
    business modes and device configuration, not only a command prompt.
  • Complete Web UI parity with contextual panels, table controls, configuration,
    progress and hardware monitor; no fixed architecture narration or fake status.
  • Audit/preserve/finish the existing Flutter Android/tablet work; analyze/test/
    APK build, adaptive UI, secure settings, discovery and live board round-trips.
  • Install/run identical verified desktop packages on both PCs and open Web UI
    on David-ASUS; verify same authoritative board state across clients.

GitHub and release

  • Preserve every local-only source change and relevant semantic ref in GitHub;
    leave unrelated user work intact, and never treat a draft as a release.
  • Pass all exact-head firmware (both flags), native, Web, mobile and ledger
    checks; fix CI failures before merge.
  • Merge ready verified work to main; use semantic branches and no date/random
    suffixes in product/release names.
  • Publish a version-consistent production release with artifacts/hashes,
    donor licenses, migration/recovery instructions and actual deployment receipts.
  • Close the master issue only after applicable acceptance boxes have evidence;
    leave any blocked/untested requirement visibly open with its next action.

Immediate continuation order

  1. Bind this checklist to the GitHub master issue/PR and fix exact-head CI.
  2. Audit Puzzles/audio/busy wiring and full donor inventories; import/test omissions.
  3. Complete interactive TUI, richer Web/native menus and retained PU850 services.
  4. Audit and preserve Flutter sources; integrate mobile CI and builds.
  5. Restore ASUS reachability for live Wi-Fi, both firmware deployments, all
    physical tests, cloud round-trip and multi-client verification.
  6. Merge/release only after the evidence gates above are actually satisfied.

Activity

  1. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    PakarController 0.2.4 source checkpoint

    Refs #2.
    This is not the completed production acceptance or a hardware deployment.

    Implemented and locally verified

    • ESP busy HIGH explicitly uses INPUT_PULLUP; receive-ready preloads LOW
      before output enable. Polling builds never touch that GPIO. AVR input
      INPUT_PULLUP remains enabled. Both macro variants build.
    • Production AVR TonePlayer keeps the donor's musical deadlines instead of
      accumulating loop delays. The welcome is exactly 530 ms in the source
      schedule; late steps, wraparound, hardware divider, queue capacity, mute,
      resume and idle readback are covered by register-double tests. Hardware
      OC1A output remains on D9; these tests are not an audible recording.
    • Actual PU850 Telnet IAC/subnegotiation parser and insert/shift editor are
      adapted, with acknowledgements that avoid negotiation loops. CSI/SS3,
      arrows/home/end/delete/backspace, Ctrl-C/Ctrl-L, split CR LF/NUL, password
      non-echo, scrubbing, overflow rejection and independent state are tested.
      A 96-byte service budget and login/idle expiry bound shell loop work.
    • All 14 Puzzles LocalLib files and its complete sketch have been manually
      read, with individual source hashes and honest remaining decisions. The
      broader donor inventory contains 1,868 files, 63 missing sparse paths and
      1,863 unresolved manual/integration decisions. Hash screening is not full
      review. The strict release gate intentionally blocks this scope.
    • Existing Android/Flutter source is preserved in GitHub, version 0.2.4,
      with platform-encrypted credential storage and safe legacy migration,
      identity-checked read-only discovery for renamed hosts, no mutation replay,
      Once text default, half-stagger table, alternating columns and exact logical
      search/highlighting. Analyze and 12 tests pass; the release-mode preview
      APK builds. Production signing/physical mobile/full parity stay open.
    • Firmware/native/mobile source versions agree; local Windows release build,
      23 Rust tests, ten C++ suites, Web tests, CLI loopback and ledger tests pass.
      GitHub jobs additionally test/build Android preview and version/ledger gates.

    Actual native screenshots

    The 0.2.4 process was launched on David-PC. A secondary process forwards to
    the same primary PID; live IPC reports single-instance ownership, the dock
    panels, Preferences open and device/WebSocket/serial offline. The screenshot
    helper captures actual app windows, not mock UI. Preferences lives in a separate
    native viewport and was captured by its actual observed window title.

    Actual Pakar workspace with unavailable board state

    Actual Pealayer-derived Pakar native Preferences

    These receipts establish rendered native workspace/preferences, not complete
    Pealayer parity, light/narrow acceptance, hardware animation or Android visual
    acceptance. Those gates remain in PRODUCTION-ACCEPTANCE.md.

    Current external gate

    ASUS SSH at localhost:1022 refuses connections. ledboard.local is unresolved
    here and the former board IP times out. No current firmware upload, persistent
    device rename, Wi-Fi password change, TM1637/audio/strip verification, cloud
    round-trip or ASUS application launch is claimed. The newest user-provided
    station password will be used only during deployment; it is not put in GitHub.
    Restore ASUS/tunnel reachability to resume physical acceptance. Offline donor,
    TUI/Web/menu and parity work remains explicitly open in issue #2.

    The Android preview is still debug-signed; no production-signed mobile release
    is published. The master issue must not be closed by merging this checkpoint.

  2. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    PakarController 0.2.5 source checkpoint

    Refs #2.
    This is not the completed production acceptance or a hardware deployment.

    Implemented and locally verified

    • Fourteen catalog cues now run through the actual production player. The
      separately imported root PuzzleBoard 520 ms and 40LED setup 590 ms variations
      do not replace the default Puzzles 530 ms welcome. Native/Web/mobile require
      advertised AVR cues, based on a versioned HELLO; USB includes the catalog.
    • Wi-Fi+USB mode selects one route before each native action/network change;
      it no longer duplicates mutations. Explicit transport and stale serial
      observations are respected. Lost responses do not cause cross-route replay.
    • The existing MQTT broker's TLS identity and anonymous rejection passed.
      An exact ledboard ACL alias was staged/validated and hot-reloaded without
      changing passwords or other tenants. This is not ESP cloud round-trip proof.
      See deployment/mqtt/README.md for hashes and the server recovery copy.
    • ESP busy HIGH explicitly uses INPUT_PULLUP; receive-ready preloads LOW
      before output enable. Polling builds never touch that GPIO. AVR input
      INPUT_PULLUP remains enabled. Both macro variants build.
    • Production AVR TonePlayer keeps the donor's musical deadlines instead of
      accumulating loop delays. The welcome is exactly 530 ms in the source
      schedule; late steps, wraparound, hardware divider, queue capacity, mute,
      resume and idle readback are covered by register-double tests. Hardware
      OC1A output remains on D9; these tests are not an audible recording.
    • Actual PU850 Telnet IAC/subnegotiation parser and insert/shift editor are
      adapted, with acknowledgements that avoid negotiation loops. CSI/SS3,
      arrows/home/end/delete/backspace, Ctrl-C/Ctrl-L, split CR LF/NUL, password
      non-echo, scrubbing, overflow rejection and independent state are tested.
      A 96-byte service budget and login/idle expiry bound shell loop work.
    • All 14 Puzzles LocalLib files and its complete sketch have been manually
      read, with individual source hashes and honest remaining decisions. The
      broader donor inventory contains 1,868 files, 63 missing sparse paths and
      1,863 unresolved manual/integration decisions. Hash screening is not full
      review. The strict release gate intentionally blocks this scope.
    • Existing Android/Flutter source is preserved in GitHub, version 0.2.5,
      with platform-encrypted credential storage and safe legacy migration,
      identity-checked read-only discovery for renamed hosts, no mutation replay,
      Once text default, half-stagger table, alternating columns and exact logical
      search/highlighting. Analyze and 13 tests pass; the release-mode preview
      APK builds. Production signing/physical mobile/full parity stay open.
    • Firmware/native/mobile source versions agree; local Windows release build,
      25 Rust tests, ten C++ suites, Web tests, CLI loopback and ledger tests pass.
      GitHub jobs additionally test/build Android preview and version/ledger gates.

    Actual native screenshots

    The photographed 0.2.4 process was launched on David-PC. A secondary process forwards to
    the same primary PID; live IPC reports single-instance ownership, the dock
    panels, Preferences open and device/WebSocket/serial offline. The screenshot
    helper captures actual app windows, not mock UI. Preferences lives in a separate
    native viewport and was captured by its actual observed window title.

    Actual Pakar workspace with unavailable board state

    Actual Pealayer-derived Pakar native Preferences

    These receipts establish rendered native workspace/preferences, not complete
    Pealayer parity, light/narrow acceptance, hardware animation or Android visual
    acceptance. Those gates remain in PRODUCTION-ACCEPTANCE.md.
    These screenshots remain explicitly versioned 0.2.4 receipts, not screenshots
    of the additional 0.2.5 cue/routing changes or live board acceptance.

    Current external gate

    ASUS SSH at localhost:1022 refuses connections. ledboard.local is unresolved
    here and the former board IP times out. No current firmware upload, persistent
    device rename, Wi-Fi password change, TM1637/audio/strip verification, cloud
    round-trip or ASUS application launch is claimed. The newest user-provided
    station password will be used only during deployment; it is not put in GitHub.
    Restore ASUS/tunnel reachability to resume physical acceptance. Offline donor,
    TUI/Web/menu and parity work remains explicitly open in issue #2.

    The Android preview is still debug-signed; no production-signed mobile release
    is published. The master issue must not be closed by merging this checkpoint.

  3. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    PakarController 0.2.5 source checkpoint

    Refs #2.
    This is not the completed production acceptance or a hardware deployment.

    Implemented and locally verified

    • Fourteen catalog cues now run through the actual production player. The
      separately imported root PuzzleBoard 520 ms and 40LED setup 590 ms variations
      do not replace the default Puzzles 530 ms welcome. Native/Web/mobile require
      advertised AVR cues, based on a versioned HELLO; USB includes the catalog.
    • Wi-Fi+USB mode selects one route before each native action/network change;
      it no longer duplicates mutations. Explicit transport and stale serial
      observations are respected. Lost responses do not cause cross-route replay.
    • Late HTTP/WebSocket observations are bound to their requested endpoint and
      credentials; serial observations and queued commands are bound to the port.
      Changing a destination clears old state rather than refreshing it with a
      previous peer's delayed reply. Regression tests cover endpoint/credential/port.
    • Native rainbow and primary-screen sampling share a configurable target rate:
      60 FPS default, 0 uncapped, up to 240 requested. The hidden 25 FPS rainbow and
      8 FPS sampler delays are gone. Frame capture/write time is deducted from the
      pacing budget; no catch-up frame queue. Sent-rate UI is not LED-refresh proof.
    • Primary-screen sampling now uses the complete board-advertised physical map
      instead of guessing the old serpentine order, and samples one-based odd
      columns with the +0.5-row geometry. Missing/duplicate/out-of-range maps disable
      sampling; bounds and swapped physical cells are tested. Monitor/region
      selection and live sampler acceptance still remain open.
    • Normal first AVR handshake no longer replaces its welcome with an ESP
      update-success cue. Explicit successful OTA/ISP paths retain audible cues.
      The source boot-routing regression passes; audible acceptance remains open.
    • The table footer no longer overlaps the lowest half-staggered row; egui
      geometry regression covers multiple cell sizes, followed by actual capture.
    • The existing MQTT broker's TLS identity and anonymous rejection passed.
      An exact ledboard ACL alias was staged/validated and hot-reloaded without
      changing passwords or other tenants. This is not ESP cloud round-trip proof.
      See deployment/mqtt/README.md for hashes and the server recovery copy.
      Its served chain also validates using only the exact CA embedded in the ESP,
      with PC default stores disabled. This is not an ESP BearSSL handshake test.
    • ESP busy HIGH explicitly uses INPUT_PULLUP; receive-ready preloads LOW
      before output enable. Polling builds never touch that GPIO. AVR input
      INPUT_PULLUP remains enabled. Both macro variants build.
    • Production AVR TonePlayer keeps the donor's musical deadlines instead of
      accumulating loop delays. The welcome is exactly 530 ms in the source
      schedule; late steps, wraparound, hardware divider, queue capacity, mute,
      resume and idle readback are covered by register-double tests. Hardware
      OC1A output remains on D9; these tests are not an audible recording.
    • Actual PU850 Telnet IAC/subnegotiation parser and insert/shift editor are
      adapted, with acknowledgements that avoid negotiation loops. CSI/SS3,
      arrows/home/end/delete/backspace, Ctrl-C/Ctrl-L, split CR LF/NUL, password
      non-echo, scrubbing, overflow rejection and independent state are tested.
      A 96-byte service budget and login/idle expiry bound shell loop work.
    • All 14 Puzzles LocalLib files and its complete sketch have been manually
      read, with individual source hashes and honest remaining decisions. The
      broader donor inventory contains 1,868 files, 63 missing sparse paths and
      1,863 unresolved manual/integration decisions. Hash screening is not full
      review. The strict release gate intentionally blocks this scope.
    • Existing Android/Flutter source is preserved in GitHub, version 0.2.5,
      with platform-encrypted credential storage and safe legacy migration,
      identity-checked read-only discovery for renamed hosts, no mutation replay,
      Once text default, half-stagger table, alternating columns and exact logical
      search/highlighting. Analyze and 13 tests pass; the release-mode preview
      APK builds. Production signing/physical mobile/full parity stay open.
    • Firmware/native/mobile source versions agree; local Windows release build,
      30 Rust tests, ten C++ suites, Web/boot-routing tests, CLI loopback and ledger tests pass.
      GitHub jobs additionally test/build Android preview and version/ledger gates.

    Actual native screenshots

    The photographed 0.2.5 process was launched on David-PC. A secondary process forwards to
    the same primary PID; live IPC reports single-instance ownership, the dock
    panels, Preferences open and device/WebSocket/serial offline. The screenshot
    helper captures actual app windows, not mock UI. Preferences lives in a separate
    native viewport and was captured by its actual observed window title.
    Live IPC reports the saved client endpoint http://ledboard.local, PID 73508
    and version 0.2.5. That client preference is not a deployed board rename.

    Actual Pakar workspace with unavailable board state

    Actual Pealayer-derived Pakar native Preferences

    Actual configurable native stream rate and truthful offline controls

    These receipts establish rendered native workspace/preferences, not complete
    Pealayer parity, light/narrow acceptance, hardware animation or Android visual
    acceptance. Those gates remain in PRODUCTION-ACCEPTANCE.md.
    These are updated 0.2.5 receipts. The previous 0.2.4 screenshots remain in Git
    history at 76bf399; neither set establishes live board acceptance.

    Current external gate

    ASUS SSH at localhost:1022 refuses connections. ledboard.local is unresolved
    here and the former board IP times out. No current firmware upload, persistent
    device rename, Wi-Fi password change, TM1637/audio/strip verification, cloud
    round-trip or ASUS application launch is claimed. The newest user-provided
    station password will be used only during deployment; it is not put in GitHub.
    Restore ASUS/tunnel reachability to resume physical acceptance. Offline donor,
    TUI/Web/menu and parity work remains explicitly open in issue #2.

    The Android preview is still debug-signed; no production-signed mobile release
    is published. The master issue must not be closed by merging this checkpoint.

    Exact checkpoint receipts

    Latest source: f190c9c. Local: 30 native tests/release build, 10 C++ suites, Web and boot-routing tests, CLI loopback, both firmware builds, version and ledger checks pass. Strict production donor gate still fails with 1863 unresolved rows, correctly.

    Previous 695a91f exact-head CI succeeded on both push and PR (all three jobs). Latest-head CI is running/queued; not yet a green claim. Keep this PR draft until that source checkpoint is verified. Do not close #2 or publish a production release merely because source CI passes.

    Current local app: 0.2.5, PID 65928, saved endpoint http://ledboard.local, single-instance true, Preferences open; board/USB/WebSocket offline. Screenshots above were captured from the 0.2.5 process PID 73508 before the sampler mapping follow-up, so they are visual receipts rather than tests of that follow-up's behavior. ASUS SSH remains connection-refused.

  4. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Published audit checkpoint e4818af: e4818af

    Complete inventory: 1,868 paths. Complete comparative evidence: 26 files (4 byte-identical, 2 behavior-equivalent, 4 scoped improvements, 16 files with gaps). 1,842 remain pending, including sparse files; no unreviewed code is approved for omission. Exact source/target hashes, lines, code omissions and concrete reasons are in docs/FILE-COMPARISON.md, docs/file-comparison.csv and docs/file-comparison-evidence.json. Execution receipts: docs/FILE-COMPARISON-RECEIPTS.md.

    42 native tests, 10 C++ suites, Web/boot/version/audit checks passed locally. Restored actual eleven Pealayer picker tests. Strict comparison gate correctly fails while gaps remain. Added audit checks to CI; this commit's new CI is pending, not yet certified.

    Continuation/checklist: #3; master production acceptance #2 and draft PR #1 remain open. Prior integration pointers were corrected; current TM1637 ACK/recovery, generic Puzzles Tasks/key contracts, native/Web appearance and PU shell/config/event omissions are explicitly actionable. No new live firmware or physical acceptance claim.

  5. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Native device settings checkpoint pushed: 1cf3da0. Implementation/remaining acceptance checkboxes are in issue #4.

    • 60 native tests and the locked release build pass. Existing Web display/access, boot audio, CLI loopback, ledger/comparison and source-version checks pass locally.
    • Actual Pealayer-derived settings center: ten grouped/searchable domains, public network/cloud readback, explicit secret semantics, dirty/conflict/peer/close guards, USB provisioning, integrated guarded ISP/backup/export/program/latch recovery/ESP OTA, single-instance deep links.
    • Exact controls, files, limits and receipts: DEVICE-SETTINGS.md.
    • Inspected actual rendered Wi-Fi and MQTT. These are SIMULATED read-only loopback peer renders, not real-board proof; production CLI/IPC navigation, isolated profile and owned PID were checked.
    • Updated app reopened with the unchanged real user preferences at http://ledboard.local, PID 82564. Exe SHA-256: 433d3340c32d50f085c0a212bed03479c71d37c4014a2fdcca736beab9113d00.
    • ASUS SSH localhost:1022 refused connection; device hostname did not resolve. No board write, physical save/ISP/OTA/audio/electrical acceptance or second-PC deployment is claimed. Firmware artifacts were not replaced or flashed.
    • CI for this exact source is in progress: 38035712949, 38035709761. Prior e4818af runs are green but do not certify this settings commit.
    • Donor audit remains 1868 inventoried, 26 hash-bound comparisons, 1842 pending and 16 known gaps. The unchanged workspace picker call/test was rereviewed and its shell target hash rebound; no pending donor files were silently promoted.

    Remaining Web/mobile/device parameter contracts, narrower/light/embedded interaction acceptance, physical hardware and full donor superiority stay unchecked. Draft PR #1 remains draft; this is not final production certification.

  6. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Exact settings source 1cf3da0 is now fully green in both 38035712949 and 38035709761: Windows native tests/build, both firmware macro variants/protocol tests and Android preview tests/build.

    The local 60-test native suite, inspected simulated-peer renders, binary hash, clean published repo and preserved real-profile runtime are documented in the earlier checkpoint. Native settings implementation/CI boxes are checked in #4. Physical saves, ISP/OTA/reboot/electrical acceptance, ASUS deployment, wider interaction/all-surface parity and the full donor backlog remain unchecked. PR #1 remains draft; green CI is not physical or full production certification.

  7. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Native Windows notifications are restored and running locally in
    4cb874b.
    Seventy Rust tests pass. The final owned-process smoke recorded two accepted
    and two shown Shell notifications, zero failures, unchanged preferences and
    the real ledboard.local profile. Fullscreen toggled and restored in that owner.

    Both exact-commit CI runs passed every Windows, firmware and Android job:
    PR run,
    push run.

    Issue #5 owns the native
    acceptance and remaining desktop checkboxes. The exact file audit
    maps actual donor code and explains omissions. The full ledger now has 31
    complete-file comparisons, 1837 pending and 18 known gap files. Configurable/global
    shortcuts, shared preference/notification surfaces, updater, full icon/window
    integration and remaining diagnostics are still open, not business exclusions.

    ASUS SSH still refuses localhost:1022; the device is offline. No board flash,
    EEPROM or device-setting write occurred. Banner click/hidden-window and complete
    physical acceptance remain unverified. PR #1 remains draft; no full-production
    or whole-repository-superiority claim is made.

  8. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Current-hardware PCController contract checkpoint e75a26a is tracked in #6 with separate source/build and physical/surface acceptance checkboxes. Does not close the broader #3/#4/#5 backlog or certify production completion.

  9. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Current-hardware contracts checkpoint and exact exclusions are tracked in #6, commit 11cf029. Both busy-wire and polling firmware build locally, versions match 0.2.6, and candidate outputs preserve the existing production app. No physical flash/EEPROM or production rollout occurred. This does not close donor-wide parity, future drivers, cross-owner LED macros or all-surface GUI acceptance. Final CI: https://github.com/atomicdeploy/PakarController/actions/runs/38045516420 .

  10. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Remote firmware + telemetry + PU850 route feature checkpoint 01a898e is tracked in #7 with explicit completed/open checkboxes. Existing broader donor/UI/mobile and physical production acceptance are not closed by this feature. Draft PR #1 retains all changes.

  11. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Published ecf882d (ecf882d). This is a durable reuse-process and actual-tool import checkpoint, not full production acceptance. Same source/evidence ledger: 1868 files, 39 compared, 1829 pending, 21 reviewed gaps. Exhaustive lookup exposes all paths; specialist routes miss 1338 (309 Pealayer). Exact omission code/reason/disposition and issue routing now appear directly in lookup/report. Actual Pealayer crate/resource guard runs before native build and in CI. Local routing/hash/gate/adversarial, readonly report, storage-plan and six crate/resource negative tests passed. Canonical Pealayer clean; all 493 live hashes match. No compiler, package copy, cache cleanup, firmware write or app replacement. See docs/REUSE-PREFLIGHT-RECEIPT.md for exact consultation and next-file queue. Master remains open; CI for this new commit has not yet been accepted.

  12. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Checkpoint e0f0839 (draft PR #1), pushed and clean. Actual Pealayer appearance.ts functions and four donor tests imported; shared palette embedding/stale-generation gate, themed browser preferences, fixed geometry/amber highlight, alternate cell surfaces and responsive shrink behavior. Ten appearance plus existing Web/audit tests pass; screenshots are read-only SIMULATED loopback, not the native app or a board. Actual new Pealayer storage summary/equality code imported; build preflight caught concurrent donor drift before compiling, then exact changed sources were reread and hash-bound. 1,869 donor files / 42 compared / 1,827 pending / 23 reviewed gap files; Pealayer 494 / 20 / 474 / 10. App/styles full-read notes do not certify full-file parity. Native/Web/mobile live appearance transport, remaining generic donor tools/UI and physical acceptance remain open. Affected ESP busy-wire compile passed with CI-locked dependency versions; no flash. ASUS SSH refused and ledboard.local did not resolve. Native/Android/AVR/donor builds, running app and private preferences untouched; no blocked cleanup rerouted. Prior ecf882d runs 38059703363/38059700392 passed all jobs, not proof of this new commit. Exact mappings/recovery/limits: docs/WEB-APPEARANCE.md, docs/FILE-COMPARISON-RECEIPTS.md, docs/REUSE-PREFLIGHT-RECEIPT.md.

  13. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Mobile settings/context continuation in 8b32e4b: actual Wi-Fi/cloud/identity/access editors, ACK/readback and captured-owner auth/rename handoffs; 46 passing Flutter tests, inspected phone/tablet simulated renderer, warm preview APK only (debug signing). Full mapping/remaining checklist in #4 and MOBILE-SETTINGS.md. All source quality passes; no CI wait, real-board write, native app replacement or complete production claim. Mobile firmware/localization/appearance/physical/signing and exhaustive donor acceptance remain unchecked.

  14. atomicdeploy commented on Oct 10, 2026

    @atomicdeploy
    OwnerAuthor

    Production progress checkpoint 5f00df3: real mobile firmware/ISP/full backup/document workflows, 73 passing Flutter tests, inspected zero-mutation phone/tablet renderer evidence and compiled preview APK. Exact safety/mapping and remaining acceptance on #7/#4/#3 and docs/MOBILE-FIRMWARE.md. Prior apps/settings/previews/hardware preserved, source versions 0.2.7. No CI wait. Main goal remains unfinished: native runtime, ASUS/LAN/physical flashing/peripheral/power-loss, actual Android/provider/signing, remaining donor and UI parity still require completion.

  15. 110 remaining items

  16. atomicdeploy commented on Oct 19, 2026

    @atomicdeploy
    OwnerAuthor

    Duplex control checkpoint — f9bfe6d

    Source: f9bfe6d
    Contract and limitations: DUPLEX-CONTROL.md.

    • Implement Internet relay WS commands and live typed MQTT event forwarding. Same-ID HTTP recovery shares the original job; conflicts, foreign/ambiguous ACKs, stale boots and uncertain outcomes never replay mutations.
    • Native WS remains responsive during pending USB/network ACKs; exact correlated packet forwarded across network hops, bounded receipt/readback validation, typed event journal and HTTP cursor recovery.
    • Android advanced bridge live owner subscriptions, sanitized telemetry, identity-bound result/availability/LWT fanout over existing MQTT/WS/HTTP surfaces, bounded history and no reflected-command loops. Foreground-only remains explicit.
    • Firmware typed cloud results with board/boot/request identity, immediate coalesced post-connect/post-command readback; independent MQTT errors survive healthy WS reconnect. Active S3 pixel diagnostics publish actual frame/pending state, with bounded read-only commit refresh rather than repeating a mutation.
    • Focused local verification:22 native tests,9 Flutter tests plus clean analyzer,16 relay tests including actual HTTP/WS and a real isolated Mosquitto2.0.22 broker over office SSH tunnel. Both cloud architecture fixtures, WebAccess JSON fragmentation/ownership tests and S3 contract guards pass.
    • Real S3 SDK build: table-selection/buffered/16MB/OPI/rmt-dma/verified-ISP/BLE-disabled/optional-Ethernet. Image2,290,283 bytes; SHA256 fa7571e25215ab93032411a3138dfbadd19d111aac1b287ebd06b643e16c897f. Not flashed.
    • Fresh read-only production LAN HTTP + LAN WS on David-ASUS and office MQTT/TLS status round-trip identify the same board esp32s3-907069eac800 / boot ef80d36d76ff5f6ecc97b7c7c8bb9ef3. No LED/game/output command, reset or flash.
    • Prior-head CI compile failure diagnosed and locally repaired: SDK-faithful HTTP test double now owns fragmented JSON/malloc storage, content type and moves; no production middleware weakening. New-head CI remains asynchronous, not claimed passed.
    • Actual donor complete-read mappings updated: PCController localdevice/events.go, hostbridge peer response/tests, mobile bridge/lifecycle; PU AsyncWebServer source.318/4697 comparisons completed;4379 still pending, not accepted exclusions.
    • Coordinated approved board + relay + installed-client deployment, then production LAN/Internet command readback, reconnect/soak and physical acceptance. Current production cloud ACK lacks new fields; strict relay must not be deployed alone. Production hold remains; no deployment approval inferred from source push or read-only tests.
    • Broker retained-command restriction/upstream retained flag: installed PubSubClient does not expose RETAIN in callback. Clients send non-retained QoS0 without offline queue; board boot/deadline/replay guards are not claimed to replace broker policy.
    • Unattended Android background service, direct native broker configuration and full opaque streaming/PCController RPC parity remain separate work; native Internet control uses the MQTT relay via its existing HTTP/WS client.

    APIs remain unversioned. HTTP uses request/results plus cursor event reads; WS/MQTT are persistent bidirectional transports. n8n/Telegram/Bale can later consume this contract; no bot/token/automation added. Temporary fixture broker/tunnel expired; production broker, relay and LEDs were unchanged. Master production acceptance remains OPEN.

  17. atomicdeploy commented on Oct 19, 2026

    @atomicdeploy
    OwnerAuthor

    Automatic connection and hostname/IP continuity checkpoint

    Source pushed to main: f469e0b. This is source, fixture and SDK-build evidence, not an installed-client or production deployment claim.

    • Flutter and Rust default-on automatic connection preference: previous target first; if unavailable, a completed bounded scan may select exactly one compatible physical board. Verified board IDs deduplicate multiple interfaces. Multiple boards, bridges-only results, unsupported/auth-required peers, scan overflow or incomplete verification do not choose an arbitrary response.
    • Explicit session Disconnect, manual preference, USB/BLE selection, healthy selected target and unsaved editors/maintenance remain authoritative. New automatic targets do not inherit old credentials; mutations are never replayed during recovery.
    • Save hostname plus actual last verified numeric origin, bound to endpoint, physical board, scheme and port. Fresh sessions prefer hostname; saved IP is only a credential-free same-board recovery hint. Connected HTTP/WS reuse the successful numeric route rather than resolving on each call. HTTPS recovery retains original Host/SNI and normal certificate validation. Loopback ASUS forwarding ports and remote DNS aliases are preserved.
    • Verified active renames retain workspace/layout/drafts and refresh durable route metadata. Firmware publishes bounded nonsecret configuration-changed events with board/boot/revision and saved/applied/failed phases through existing event owners. USB uses existing binary status/identity hints. Clients coalesce reads and preserve dirty settings conflicts; native auth/Ethernet/status-RGB refresh is capability-gated.
    • MNDP identity/interface changes request a coalesced announcement after250ms instead of waiting for the normal30-second tick. No credential broadcasting or claim that a UDP advertisement establishes compatibility/command authority.
    • Actual defects found and corrected: native alias recovery incorrectly required configured-label equality; native rename left a retired read slot blocked for24s; Flutter immediate DNS failures escaped asynchronous socket ownership; Flutter startup changed endpoint but stalled before any new status read while cancelling the old WS subscription. Socket retirement now precedes bounded cancellation without resetting fresh HTTP/peer/UI state. Startup widget verifies actual status read and acknowledged UI; a separate silent real-WS fixture verifies replacement.
    • Focused verification:45 distinct native tests,59 Flutter tests and clean analyzer;16 relay tests including real HTTP/WS plus source guards (optional real-broker test skipped this run). Canonical protocol/network/cloud/WebAccess/S3-contract host fixtures pass. No fixture connects to a production board.
    • Real S3 SDK build passed: table-selection/buffered/16MB/OPI/rmt-dma/verified-ISP/BLE-disabled/optional-Ethernet. App image2,293,072 bytes; SHA256 c8018b92d39befa6e2158a935aa0d30274685a63b92cb2d2cf83544cae99c479. Source versions remain coordinated0.2.8. No flash, APK install, desktop replacement, update-feed publication or production contact occurred.
    • Donor-first ledger updated from actual complete PCController discovery/resolver/test reads and PU MNDP reads plus ConfirmSettings section review.319/4697 comparisons;4378 pending and258 known parity gaps remain open. Build/source-hash gates retained; no direct build bypass.
    • Approved installed-client/firmware delivery, real Android/ASUS startup and DHCP/rename/multicast/router acceptance, then reconnect/soak verification. Production hold remains for this unrelated feature; existing LED incident is not marked resolved.
    • MQTT hostname rename still changes the existing topic suffix. A remote gateway pinned to the old exact topic and its broker ACL must be reconfigured; this checkpoint does not widen subscriptions/ACLs or claim transparent Internet-topic migration.

    Contract and limits: https://github.com/atomicdeploy/PakarController/blob/f469e0bf98ae495732b4e940eb9343500f5df82d/docs/CONNECTION-LIFECYCLE.md

    Fresh PR listing is empty. Source push triggers asynchronous CI; no CI wait or all-green claim. Device-deployment opt-in remains absent. Master production issue stays OPEN.

  18. atomicdeploy commented on Oct 19, 2026

    @atomicdeploy
    OwnerAuthor

    USB demand/native OTG checkpoint: implementation 2c1bdc7, final build receipt follows on main.

    • Default-quiet finite USB demand leases. Real visible native panels, bridge/IPC readers and Android foreground/pixel consumers own optional traffic. Pixels require explicit immutable pulls; no unsolicited full-pixel push. HELLO, release, expiry, short TX and observed native disconnect retire demand/captures.
    • Existing unversioned COBS/CRC envelope, correlated replies, boot-fenced pixel diagnostic and exact published 480-pixel verification. No mutation replay or implicit USB-to-WiFi fallback. Observed native disconnect drains RX and resets partial framing without restarting USB hardware.
    • Actual Android UsbManager CDC implementation: explicit selected interface and OS permission, bounded workers/exception settlement, only the owned PakarController Espressif descriptor. No CP210x/CH340 or unknown-device DTR claim. USB table, pixel, melody, display and AVR Silent controls use the existing API owners offline.
    • S3HostTransport uart0(default)/hwcdc/otg, TinyUSB reboot disabled before enumeration, AVR UART1 unchanged. Nondefault outputs separated from default UART0 updater path; one shared compiler cache.
    • 50 distinct native tests, 22 Flutter tests and clean analysis; final production-hold APK60541629 bytes SHA256 4b8ebb1de1cf4fc07294a7759d744ad36185eb6124201ffb8d94c125250ab10d. Host lease, three CDC-init variants, actual SerialLink disconnect, snapshot and ingress fixtures pass. Aggregate protocol invocation stopped at an obsolete exact source guard: strengthened guard, canonical UART-flow rerun and remaining Web-access/task runners pass separately, not a falsely reported green aggregate.
    • Final real S3 OTG SDK rebuild passed: application2352944 bytes, SHA256 4ff8c2ff90c60e04d1f422b28cd3bca95fe4b96e67619bd0e25d70946ee1e943; staticRAM156236/327680. This is OTG output, not a newly compiled UART0 image.
    • Approved physical OTG enumeration/permission/detach/background and safe VBUS/external-supply isolation; real USB/LED command acceptance. No board contact, flash/reset, client installation or production output mutation occurred. Production PBX approval gate remains.
    • Android USB firmware/ISP/storage/network/identity settings, multi-role support, snapshot preemption and full raw USB peripheral mirroring remain explicit follow-up work. USB peer reporting is once per physical session, not a claimed periodic registry refresh.

    Exact donor/target/proof bindings stay in the existing file-comparison ledger, REUSE-PREFLIGHT-RECEIPT.md and docs/USB-OTG.md. Master issue stays open. CI was queued, no open PRs were found, and no CI wait/override was used. The first issue-comment attempt failed TLS before posting; the retry checked for duplicates.

  19. atomicdeploy commented on Oct 19, 2026

    @atomicdeploy
    OwnerAuthor

    Tablet recovery checkpoint: a218814 (main, pushed).

    • Pixel diagnostics accepts its first delayed fresh verified owner, with no automatic adoption of an existing owner's replacement.
    • Added bounded/coalesced read-only Refresh state with visible read errors, pending-action exclusion and disconnect/background/generation fences. No pixel command replay or optimistic success.
    • Fixed startup auto-discovery overriding saved explicit Disconnect, including USB. First-use/default wanted connections still auto-discover; saved Disconnect remains respected across network/USB/Bluetooth.
    • Analyzer clean; 45 focused cases passed: workspace14, automatic-startup7, command-admission real-loopback3, diagnostic transport6, diagnostics UI15. The explicit live-board diagnostic probe was skipped. No new simulated screenshots were generated or substituted for tablet evidence.
    • Canonical BoardProductionHold APK 0.2.8+20 built; apksigner and aapt verified. 60689161 bytes; SHA256 5148fcc293e0e30baf63c24083aefe917ae20c6c9385f72fd71aa4b3d0d20f3e. Debug preview signer, not production signing. Shared client/Web build metadata synchronized; no firmware build or deployment.
    • Exact candidate uploaded to the existing office static APK store; full server-side size/hash and HTTPS200/Content-Length/range support verified. Download maintenance APK. Automatic-update feeds/service policy unchanged.
    • Install/launch and actual tablet read-only UI/lifecycle/network verification: no local authorized ADB device; ASUS localhost8022 repeatedly refuses SSH, including final retry. Office management has no enrolled Android client. Access requested; previous installed-build receipts are not current acceptance.
    • Actual physical pixel/melody and long-soak/human acceptance remain open. No boards contacted, LED/buzzer changes, reset or board-updater jobs in this pass.

    Actual PCController mobile/lib/unified/transport.dart reread through EOF at unchanged SHA5263044d/revision b0111ae0. Existing authoritative file-comparison ledger updated; 319/4697 comparisons is not full donor parity. Initial focused tests exposed the saved-Disconnect regression and now pass after correction. Current-head CI asynchronous; not awaited or claimed green. Production issue remains OPEN.

  20. atomicdeploy commented on Oct 19, 2026

    @atomicdeploy
    OwnerAuthor

    App delivery checkpoint: ca50045 (implementation), 5d46e05 (actual publication receipt), main pushed.

    • One Updates & support workspace: data updates/support first, package/manual/automatic preferences together; no separate normal/automatic menu routes.
    • Default trusted presentation source and WSS app feed. Presentation hints are exact-session/deadline/source bound; HTTP checks coalesce; validated palette bundles persist/activate atomically without APK or ADB. Only palette data is currently supported—not hot Dart/native patches or arbitrary executable assets.
    • Fixed server offers missing the app-update-offer type consumed by Flutter. APK-only consumers opt out of new data notices; same/older package announcements are quiet, while wrong-session offers fail closed. APK peer discovery/push/pull, signer/newer-code checks and Android consent are retained.
    • Authenticated support HTTP/WS now includes read-only board.status, board.mapping and optional assets.check; health/assets.apply/explicit command remain. Token rotation, foreground/15-minute/session/boot/deadline/replay fences and output-command opt-in remain. This is constrained diagnostics/control, not an arbitrary remote shell/debugger.
    • Analyzer clean; 26 focused mobile cases plus 10 service cases passed. Actual PCController app_upgrade.dart/peer_upgrades.dart reread through EOF; authoritative ledger hashes/proofs updated. Not all donor parity or all bugs certified.
    • Office management build21 deployed through guarded script, previous unit/environment and old flat source preserved; existing registry/data/token retained. Apache and dedicated service healthy; PBX/MQTT not restarted.
    • Actual Internet data lane verified: revision1,108bytes,SHA256 af51f425b62330f25b0e83601e418cf7663668c744d0b68af29722c91fb55e45, full HTTPS bytes/hash plus matching session-bound WSS notice.
    • APK 0.2.8+21 published through the real catalog. 60754697 bytes; SHA256 4aff174e7f5ebfa5d59366b81fb4357ca20787628c9c66c9027f87e8822f22f3. apksigner verified existing debug-preview signer; aapt code21/minSDK24/three ABIs. Canonical BoardProductionHold build. Download.
    • Independent full public HTTPS APK download/digest and exact WSS catalog offer verified. The installed app can fetch this catalog without ADB when foreground/online with update policy enabled, but that is not evidence it did. Only the byte-compared temporary root upload copy was removed; registered package/local build retained.
    • Actual tablet install, OS approval, touch/UI, background/radio/long-soak and human acceptance: ASUS localhost8022 repeatedly refuses SSH; local authorized ADB inventory empty; management has no enrolled Android client. Access requested; cannot claim deployment to that tablet. User can use Updates & support → Check now and Android approval without waiting for ADB.
    • Full background Android operation, compiled-code hot-patching runtime and production signing remain outside the implemented data-only/foreground scope. No production board contact, firmware job, reset or LED/buzzer actuation in this pass.

    Current-head CI is asynchronous, not awaited or claimed green. Master acceptance stays OPEN. Useful commands: node tools/verify-client-service.mjs and node tools/verify-presentation-service.mjs (read-only Internet verification). Root-local operator presentation JSON_FILE publishes a validated newer data revision without an APK. Existing source URLs/settings remain configurable and are not silently overwritten.

  21. atomicdeploy commented on Oct 19, 2026

    @atomicdeploy
    OwnerAuthor

    ASUS-first delivery checkpoint from clean main 5d46e05ac3c7bf1e916fdc83f9172cdc35cf2fdf; all source versions remain 0.2.8.

    • Canonical native Release build and GUI-subsystem/package checks passed. ASUS executable replaced with exact SHA256 4bf757cf3d8dd38858de263f29ffe9499820c1c8bdcab06184d36fa9854bd0da, 31,710,208 bytes. Prior executable and preferences were preserved. There was no running owner before replacement. The first startup IPC check was too early and its failure receipt remains preserved; independent same-session observation then confirmed build21/PID18568/ready/single-instance and captured the actual framebuffer. USB selected, not TCP/Wi-Fi. This is desktop runtime evidence, not board actuation proof.
    • Existing verified Android 0.2.8/build21 APK is staged on ASUS and remotely SHA-verified: 4aff174e7f5ebfa5d59366b81fb4357ca20787628c9c66c9027f87e8822f22f3, 60,754,697 bytes. Maintenance production-hold build, existing debug signing identity; not a production-signed Android release. No redundant Flutter rebuild or app-data clearing.
    • Canonical ESP32-S3 buffered/16MB/OPI/RMT-DMA/verified-ISP/BLE-disabled/optional-Ethernet/UART0/table-selection build passed; raw application 2,294,864 bytes, SHA256 76f6e79fa7e37389df2f0ce4b17ca96b54dbd335e4e0b664075e38f0f2a72801. Copied to ASUS prepared-firmware and independently SHA/size verified. No flash.
    • Canonical paired AVR buffered build and structural Urboot chain checks passed; full 32,768-byte application/Urboot image SHA256 3d3488daf97fa9d0bae1637c913b22106ad8f4c8f254ec2433ed78b1c5743f0b, staged/hash-verified on ASUS with application HEX and chain metadata. Flash usage 32,126/32,384 bytes and SRAM 1,478/2,048 bytes remain resource/physical acceptance concerns, not assurances of hardware health.
    • Board connection/physical acceptance: current USB inventory identifies the correct ESP MAC 90:70:69:EA:C8:00 on native USB COM23, while the prepared profile uses UART0 and the desktop selects COM22. User asked to move to the USB-to-UART connector; no native-USB protocol success claimed.
    • Mobile installation/runtime acceptance still awaits the user's mobile connection. Earlier empty ADB inventory is not installed-device evidence.

    No board firmware update, reset, LED command, AVR programming or full repeated test suite was performed. Production hold remains in force; no hardware/master acceptance boxes closed. ASUS tunnel briefly flapped but returned; application owner remained unchanged. One canonical cache per component, no clean or duplicate debug build. Local handoff manifest: outputs/PakarController/verification/prepared-delivery.json; actual desktop runtime receipt/screenshot preserved separately.

  22. atomicdeploy commented on Oct 19, 2026

    @atomicdeploy
    OwnerAuthor

    Actual client delivery/read-only communication checkpoint (no board flash or output change):

    • ASUS build21/PID18568 explicitly reconnected through verified CH343 COM22 using the running application's typed USB IPC. It is online/serial_live, confirms all80 mapping entries from the ESP's immutable USB snapshot, and has zero active diagnostic incidents. Same ESP esp32s3-907069eac800, boot 07f360f9587900304680f2d8287e3cb6; actual snapshot reports AVR0.2.8 online, zero AVR/ESP UART errors and TM1637 ACK. This does not prove optical or audible behavior. The old native-COM23 introduction timeout is retained as resolved history, not a reason to flash or bypass admission.
    • Samsung tablet SM-X906B/R52T60C6V9B: Android0.2.8/build21 installed with -r, exact installed base.apk SHA256 4aff174e7f5ebfa5d59366b81fb4357ca20787628c9c66c9027f87e8822f22f3 verified. Actual app launch and screenshot show acknowledged Pakar Table, all80 cells, live state at ledboard/192.168.1.191, indicators ON and multiselect OFF. It was then replaced on ADB by the phone at the user's request.
    • Samsung phone SM-S908E/R5CT44LZ42K: first install failed due to full internal storage. Reused the user's previously authorized temporary offload transaction and already-retained backups; both exact files were rehashed and immediately byte-compared before unlink, then restored and byte-compared at original paths/mtime. Durable task ran independently of SSH; final manifest is installed-and-restored, both Restored=true, Failure=null and no restoration failures. No uninstall/app-data clearing. Installed base APK matches the same build21 SHA above. Phone is foreground, connected over ledboard AP (192.168.4.3), and its actual screen shows the acknowledged live Pakar Table via ledboard.local. User notified USB may now be disconnected.

    Small local receipts/screenshots: ASUS-prepared-usb-handshake.json, ASUS-both-clients-live.json, tablet-build21-connection.png, phone-build21-connected.png, phone-build21-install-restored.json under outputs/PakarController/verification. Media backups remain preserved on ASUS. These are actual install/runtime/read-only state observations, not simulated UI, output-command acceptance, LED optical proof, a long soak or completion of issue#2. No firmware jobs, resets, LED commands or melodies were started. No rebuild/CI wait needed for these existing hash-verified packages.

  23. atomicdeploy commented on Oct 20, 2026

    @atomicdeploy
    OwnerAuthor

    First-wins incremental checkpoint: 86b88f5 pushed. New keycontroller only (ESP MAC 90:70:69:EA:AF:D0, COM24); existing ledboard untouched. ESP full original 16 MiB flash backed up; new image flashed and esptool hash verified. Live keycontroller.local on DRS Tether, AP+station, advertises first-wins, 9 keys x 2 groups x 12 pixels =216, RGB, RMT/DMA, zero observed TX failures (not optical proof). AVR ISP signature 1E950F, original flash/EEPROM/fuses backed up, new application+Urboot image programmed and readback verified, EEPROM preserved, NO fuse writes. Critical remaining gate: UART recovery failed, zero valid frames, Prog remains armed; button game is NOT accepted operational. Requested exact GPIO17/18 UART check. Desktop build22 deployed on ASUS with graceful IPC replacement, rollback/settings retained, PID6112, WebSocket observed. Android build22 installed, installed APK SHA matched, both temporarily offloaded videos restored without errors, app launched. Builds: ESP/AVR, native Check+Release, Flutter Analyze+APK and six pixel diagnostics tests passed; renderer role test passed. Remaining: live AVR UART/buttons/relay/optical acceptance, configurable game palette/settings, native216-pixel diagnostics, free-position nine-key layout, deeper parity. Package identities are dirty-source build22 subsequently checkpointed at this commit, not embedded-commit attestation. No production checklist closure.

  24. atomicdeploy commented on Oct 20, 2026

    @atomicdeploy
    OwnerAuthor

    Checkpoint 8ce8f29: keycontroller enabled-box settings and configurable idle/winner/other RGB palette.

    • ESP persisted enabled_mask=3; live readback confirms 2 enabled boxes, 48 active pixels, 216 physical capacity. Disabled tail is transmitted black rather than abandoned with stale colors.
    • Native and Flutter provide 2/4/9 presets, individual box enable/disable and separate game color settings; disabled key cards dimmed. ASUS screenshot confirms enabled 1/2 versus dimmed 3/4; full nine-key layout is scrollable.
    • ESP application flashed via COM24 and verified; AVR candidate flashed/readback verified via ISP, EEPROM preserved, no fuse writes.
    • ASUS desktop build23 deployed with rollback/settings preserved; fresh IPC confirms live WebSocket to esp32s3-907069eaafd0 and enabled_mask=3.
    • Android 0.2.8/build23 installed and installed APK SHA256 verified: 19943fe76f399eb9a23cc66683f9ff04aef9cb1abb9b5b29e8b98f0595fbb4ca. Launched; screenshot shows live keycontroller status. Both temporarily offloaded videos restored and verified, no restoration failures.
    • Both role renderer tests, ESP/AVR builds, native release build and Flutter analyze/APK build passed. Donor target hashes rebound; unread donor entries remain pending.
    • Physical button winner/relay acceptance: AVR UART has no frames. User confirmed UART wires were missing and is powering/removing board to connect TX/D1 -> GPIO18, RX/D0 -> GPIO17. Prog is retained until explicit verified UART recovery; no further board operations while wiring.
    • Optical winner/loser colors, mask re-enable physical tests and reboot persistence acceptance.
    • Remaining full acceptance includes free-position key layout, transport/UI parity for settings, active-span diagnostic navigation, notifications/radio/optional effects and donor gaps. Not claimed complete.

    Old production ledboard was not changed. Acceptance issue remains open. User wiring confirmation supersedes the earlier uncertain UART diagnosis.

  25. atomicdeploy commented on Oct 21, 2026

    @atomicdeploy
    OwnerAuthor

    Source-only working-tree checkpoint (not committed/deployed or hardware acceptance): first-wins winner edges now feed the existing native Pealayer-derived message hub and Windows Shell notification backend, retaining optional sound preferences and suppressing duplicate/reconnect announcements. Flutter has persisted foreground winner alerts and optional sound. Both clients render the two actual published 12-pixel groups rather than inventing RGB from palette targets. USB snapshot validation now admits the first-wins 18-group/216-pixel role separately from the 80-cell/480-pixel table, preserving peer identity validation and on-demand pixel requests. Focused canonical native tests: 3 passed (winner policy, winner edges, keycontroller USB snapshot); Flutter analysis clean and 2 focused winner/preview tests passed. Production board was not touched. No live FPS, Windows visibility/audio or on-device acceptance claimed. Remaining user-requested work: subscribed high-rate pixel telemetry/UDP evaluation, table custom RGB/persistence and recent-color picker, neighboring splash/explosion/laser, fully host-owned hidden Snake, deployment and visual verification. Existing white/winner/loser and optional flash/ring-chase firmware implementation was reviewed and retained, not reported as newly physically verified. Existing donor ledger remains open: 329 hash-bound comparisons, 4368 pending, 268 known gaps. No production checkboxes closed.

  26. atomicdeploy commented on Oct 21, 2026

    @atomicdeploy
    OwnerAuthor

    Keycontroller checkpoint: configurable winner/reset melody names (including silent), persisted ESP settings and AVR-applied receipt, capability-gated Rust/Flutter/Web controls, direct round reset in game panel. AVR repeated reset while already ready no longer restarts/cancels melody; won-to-ready retains configured reset cue. AVR ISP update verified with EEPROM preserved. ESP OTA running-image full SHA256 verified: 3c7f2388c8783beb8bc39e9c200988088c185bba65d33889f333d60b96c9ce73. Audio tests, 2 native key-settings tests and 4 Flutter game-settings tests passed; Android analysis clean. ASUS native replacement hash 3a4e6037895c9a30c429ac47abc1f31476d1e0deff56265cc8d20e7c97f25aaa; runtime confirmation pending. Android APK built/transferred but install rejected for insufficient phone storage; old app/data preserved. Separate LED stuck report: GPIO4 capture matched all5184bits/216pixels with zero timing errors; user identified faulty wiring. Not optical acceptance. Web browser reconnect currently times out during wiring work; do not close production acceptance. Existing nine-box settings and station/AP policy preserved. No assertion of complete donor parity or zero remaining bugs.

  27. atomicdeploy commented on Oct 22, 2026

    @atomicdeploy
    OwnerAuthor

    Keycontroller four-box reset regression checkpoint (not full production acceptance): - ESP installed via local Async OTA; complete running-image SHA-256 readback and VALID selected/running slot verified: 868831269524dd13a88d718df10cdae71f062f3fcd67074afdff751c8c27dabb (2,312,704 bytes). Board esp32s3-7ce8b1b06110, boot fcee210a6c6a7dd16b49bfa001d67557; same-peer WebSocket verified. No other board touched. - Runtime hostname keycontroller; four enabled boxes; persistent silent Off; auto-reset 0. This boot automatically recovered the AVR mask/audio admission; GPIO21 observed released. - Source repairs: reset-counter observation must preserve a winner in that same frame; restating the current baked mode is an idempotent ACK across USB/REST/WS/cloud/AVR. No new delayed network-start reset retained. Scene, role renderer, reset/audio guards and radio mock tests passed; actual ESP/AVR builds passed. Worktree remains preserved, with source hashes in the existing evidence ledger; no claim that all dirty concurrent work is a reviewed release commit. - AVR candidate 95ff7cb02d308a03dc3556432ba0ef34228118b8f1e36a89066caff02449db6c built and verified on ASUS. Urboot job 1 stopped at durable Prog admission: write_attempted=false, programmed=false. No AVR application/bootloader programming or fuse write occurred; normal boot-journal and attempted Prog-latch EEPROM activity is distinct. AVR boot count increased during that admission and it reports BORF; a power/wiring cause is not physically proven. Application recovered online/mask-confirmed, Prog clear. - Rainbow was physically confirmed by David before the update; rainbow is selected again on the new image. New-image winner hold, GPIO reset, four physical key order, flash/melody/effects and power integrity remain OPEN. Awaiting a fresh button test; no optical success inferred from TX counters. - Full file-comparison report regeneration encountered unrelated stale desktop/src/bridge_events.rs evidence; it was not silently rehashed as reviewed.

  28. atomicdeploy commented on Oct 22, 2026

    @atomicdeploy
    OwnerAuthor

    Keycontroller presentation checkpoint (source/build only; not deployed): implemented persistent timing and per-group winner/loser color/motion patches across HTTP, WS and fenced USB. Default: two 500 ms winner-button flashes, 250 ms gaps, 750 ms loser fade, shared travelling chase through enabled losing indicator groups. ESP schedules finite winner tones from the flash clock; other named melodies retain their own timing. New AVR-advertised game-press capability uses the normal winner latch and actual AVR ACK. Web, Rust and Flutter controls added; existing native/mobile live pixel preview retained. ESP candidate compiles (2323131 bytes); AVR candidate compiles (31502 flash / 1642 static SRAM, stack margin still requires hardware testing). Flutter analysis clean and 2 focused presentation tests pass; native focused build/test ongoing. Entire comparison-report regeneration remains blocked by an unrelated stale bridge_events.rs evidence entry; no blanket refresh or bypass. Hardware hold: latest 70 ms audible test still incremented AVR boot count with BORF after the reported voltage adjustment; no further audible test or deployment. Production/human acceptance stays open.

  29. atomicdeploy commented on Oct 22, 2026

    @atomicdeploy
    OwnerAuthor

    Follow-up verification: canonical native release-profile focused test build completed; both game_presentation tests pass, including inherited-value bounds before USB narrowing. Existing unrelated warnings remain. Final ESP build and both role renderer fixtures pass; Flutter analyzer and both focused tests pass. No new firmware/client package deployed and no audible/physical acceptance claimed.

  30. atomicdeploy commented on Oct 22, 2026

    @atomicdeploy
    OwnerAuthor

    Actual deployment follow-up: fixed missing network pixel observation in ESP/native/Flutter with on-demand WS pixel-subscribe/pixel-frame, peer-bound samples and no command-clock renewal. Native release + focused test pass; Flutter analyzer + foreground/reconnect test pass; APK built. ASUS staged APK SHA a932b71ad114b08b275a187e5fc97f87ed8dc4fe46fe809248e689a01abbc4e1 and ESP SHA be34c0fec48b88f73ae7c25c0fdadc8b5f91087e9d9d276515b6e42062215a4d verified. AVR Silent was set On and read back via Rust network CLI. OTA attempt aborted after tunnel dropped; running image/boot confirmed unchanged, backup verified. Background updater/downloader launch subsequently blocked by execution policy; no workaround attempted. Old ASUS PID5416 remains, final WS/online false and stale pixels; no claim of completed runtime repair. No authorized Android ADB device. Manual/approved deployment path and Android attachment required; all physical/client acceptance gates remain open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions