Skip to content

Integrate pinned portable-shell source without regressing device ownership #29

Open

Description

@atomicdeploy

Requested donor: atomicdeploy/portable-shell branch copilot/organize-readme-into-plan, pinned 67c5dcb8a63f4055cbdaf02e9ff271c53b46410d. Source-only integration; production deployment remains separately gated.

  • Read all 17 tracked entries; record original hashes, exact mappings and concrete dispositions in the existing donor ledger. Preserve all 16 regular files and MIT notice; do not recreate the CodeQL root symlink.
  • Adapt actual command catalogue/lookup and VT100 code into the live shell; add real bounded command/property Tab completion and edit alias to the existing editable TUI.
  • Verify real replacements for serial, Telnet server and parameter editor stubs. Preserve authentication, nonblocking I/O, bounded memory, ownership, secret filtering and validated settings.
  • Complete bundled TCP/stdin client with hostname resolution, fragmented Telnet negotiation, backpressure, deadlines, interactive password handling and terminal restoration; no command replay.
  • Run focused regression coverage, source hash/ledger gates and final ESP32-S3 build.
  • Publish checkpoints 7373e9e and 2a17b8c on PR Fix live controls, correction previews and host presentations #27.
  • Separately authorized live USB/Telnet/device acceptance and deployment. No production device was contacted or changed in this task.

Passed: tools/test-shell.ps1 (including new TCP loopback tests), tools/test-shell-properties.ps1 on ordinary/S3/ESP8266 descriptor profiles, tests/shell_metadata_test.mjs, tests/reuse_preflight_test.ps1, snapshot/ledger gates and comparison check. S3 compile: 2302399 application bytes of 3342336, 138724 static global bytes. Candidate binary SHA256 519a9753d79da66848c734bf35f99e5cd38757e289d2109a397f4dca1099d567. These are source/build/fixture observations, not measured runtime or hardware acceptance.

Raw UDP shell execution is deliberately not exposed: donor UDP reply code is broken and supplies no authenticated ownership contract. Existing UDP discovery is unchanged. Original upstream whitespace is preserved for exact hashes; integration code passes whitespace checking.

Related #2, #3. Full disposition guide: third_party/portable-shell/README.md; authoritative file comparisons: docs/file-comparison-evidence.json. CI results remain separate from local verification.

Canonical component consolidation, 2026-10-28

  • Compare current Pakar implementations at b09650e with PortableShell 12bfe710; move reusable event editor, Telnet/terminal primitives and snapshot/action TUI upstream with MIT attribution and regression cases.
  • Merge PortableShell PR File-by-file donor parity, exact mappings and justified omissions #3 as a829784; all 11 Windows/Linux/macOS/profile/ARM checks passed. Canonical component pin is 52c5f7f94581806109e30f5c1ffd6c74ff5bff40.
  • Replace Pakar implementation copies with thin adapters on PR Replace local terminal forks with canonical PortableShell components #34, retaining product commands/authentication, USB/SSH/transfer ownership and hardware routing. Preserve original Git history and all 17 historical reference entries; add four exact current components to the same ledger (21 total).
  • Pass tools/test-shell.ps1 and canonical-source hash gates in an isolated worktree, including authentication/session/USB/TUI and TCP/UDP loopbacks. Red rounded frames, magenta selection, secret drafts and diagnostic guards are retained upstream.
  • Complete Pakar PR Replace local terminal forks with canonical PortableShell components #34 and its parent Fix live controls, correction previews and host presentations #27 merge/CI gates. Parent merged as e47b230; canonical consumer merged as da12fde. All final-head firmware/resource, Windows, Android, repository/tooling and CodeQL gates passed; main has the same source tree as tested CI merge 56d18d4.
  • Live device and human acceptance remain open. No production board was contacted, flashed or changed during consolidation.

Activity

  1. atomicdeploy commented on Oct 27, 2026

    @atomicdeploy
    OwnerAuthor

    Live keycontroller deployment reached ASUS over Wi-Fi, with before/after full firmware readback and matching saved game configuration. Tablet APK and Rust were installed. Runtime verification found three narrow blockers before acceptance: first-wins Output navigation was accidentally table-gated; aggregate telemetry exceeds its 24 KiB budget; native status IPC truncates replies above 64 KiB. Fixes and focused regression checks are in progress on PR #27. No ledcontroller actuation or update is part of this pass. Telnet help and property reads work on the actual board; interactive acceptance remains in progress.

  2. atomicdeploy commented on Oct 27, 2026

    @atomicdeploy
    OwnerAuthor

    Checkpoint e24797a is pushed on PR #27. Fixed the tablet First-Wins Output gate, compacted aggregate telemetry without increasing its 24 KiB allocation, and enlarged bounded native IPC replies to 1 MiB with explicit oversize errors. Canonical builds passed; Flutter analyze + 5 targeted tests and 4 native instance tests passed, plus telemetry/replacement source guards and PU route hash checks. Actual keycontroller OTA is running (boot cf6232cf6458bee3ca872fa8c38c72d3), AVR online, valid 20468-byte telemetry, image MD5 3e914ba8628330c9a0619f168646fcbe. Telnet tested two simultaneous sessions, completion, history and TUI enter/exit with no mutations. Updated tablet APK installation succeeded; Rust replacement receipt confirms PID 22304 and settings/rollback preservation. Remaining: tablet disconnected from ADB and ASUS tunnel now times out during SSH banner exchange. This blocks final screenshots, two-board switching/control checks and follow-up full-image download. ASUS ledcontroller profile is temporarily manual to prevent wrong-AP roaming during OTA; automatic mode must be restored when the host returns. No ledcontroller actuation/update occurred. Full feature/hardware acceptance remains open.

  3. atomicdeploy commented on Oct 27, 2026

    @atomicdeploy
    OwnerAuthor

    Checkpoint 6a8d911 is pushed on PR #27.

    • Extended the actual bounded PU850-derived Telnet parser with NAWS window size, TTYPE and BINARY negotiation; fragmented/escaped/oversize inputs remain bounded. Bundled client sends terminal type and live resizes.
    • Added UTF-8 frame styling, session Terminal settings, viewport-safe form editing and resize draft preservation to the existing device TUI.
    • Added first-wins Game page: enabled/dimmed boxes, winner/readiness, explicit press/reset, and persisted mask/effects/chase/colors/auto-reset/cues through the existing router. Help/completion are role-contextual.
    • Shell pixel commands accept variable group counts with current layout revision and uint8/count/capacity bounds.
    • Canonical shell tests, C++23 TUI tests, 4-profile property fixtures, actual service/metadata/source tests, comparison check and diff whitespace check passed.
    • Final S3 table and keycontroller builds passed. Table flash/static RAM: 2308307/138724 bytes; key: 2309583/125604 bytes. Final key app file 2309728 bytes, SHA256 8eeb6551973ec3a13cbc3423f456e372c66e74ed3beec3402a75486200d06370.
    • Full Unicode text entry, grapheme-width/RTL layout and CHARSET negotiation. UTF-8 framing is not full internationalized editing.
    • Advanced per-group presentation editor and complete graphical-client parity.
    • Installed terminal visual/navigation/resize acceptance and physical game/audio acceptance.

    The first SDK compile caught char8_t literal incompatibility missed by C++17 fixtures; fixed using explicit UTF-8 wire bytes and switched the TUI fixture to C++23. Existing donor sources remain unchanged; reviewed target/proof hashes and limitations are in the same ledger. No production board was contacted, flashed, rebooted or actuated. PR conversations/reviews/thread pagination inspected: two prior status comments, no reviews/threads. Source is pushed and working tree clean; not waiting on CI, not claiming merge or production acceptance. Usage is in docs/TERMINAL-UI.md.

  4. atomicdeploy commented on Oct 27, 2026

    @atomicdeploy
    OwnerAuthor

    Checkpoint c78a402 is pushed on PR #27. Re-read the actual PU850 Shell/Telnet/Commands/RemoteCommand sources at 4311040; the pasted audit predated 6a8d911.

    • Pixel command now uses the same PixelGroupLayout::diagnosticRange as the API/TUI, including custom lengths, used prefix and layout revision. Added pixel group GROUP [RRGGBB]; numeric INDEX remains zero-based and physical GROUP is one-based. No saved board values migrated.
    • Shared role availability for help, completion AND dispatch. Keycontroller watch reports winner/enabled mask, not unrelated table counts.
    • Case-insensitive command/property identifiers and completion; canonical property key before writes. PU upper/noupper input-display/redraw semantics preserve raw case-sensitive values. Whitespace-normalized classification protects secret-setting history.
    • Station/AP enable and auto-switch properties; AP SSID getter matches the 32-character configured prefix. Cloud and S3 Notifications TUI pages expose the complete CURRENT descriptor catalogue; coverage fixture checks both roles.
    • Opt-in public read-only UDP9876 diagnostic listener and client: bounded input, no truncated dispatch, nonce correlation, unicast response, rate limiting, bind backoff/rebind. Default excluded; enabling authentication disables this public endpoint. This is NOT authenticated UDP mutation/control parity.
    • Corrected stale API documentation that said USB had no text shell; the existing boot-fenced framed shell remains shared with Telnet.
    • Canonical shell/property/metadata tests, UDP client loopback, async static-asset fixture, basic-cell fixture, donor comparison and whitespace checks passed.
    • Final S3 first-wins SDK build with UDP included: program 2311887/static RAM 125732 bytes; image SHA256 736d4c9f462730cd5cc7f186dd15ad59aac6ba2291ea43330049651b685d56e7.
    • Final S3 table SDK build with UDP excluded: program 2309735/static RAM 138724 bytes; image SHA256 4dba1664ea561719b25ba381071991b157d233ac34570a2f26a9ff6c3468670b. Last image occupies the canonical reusable cache.
    • Diagnosed prior GitHub repository-health failure in run 40553395778: basic_cells_test still required the replaced direct response call. Its assertion now verifies shared GET/HEAD serving, bounded byte length and validator; behavioral tests pass. No check removed.
    • Independent AP credential/address configuration, fallback-network-list and advanced per-group presentation forms, reviewed restore/reboot lifecycle and complete donor command parity.
    • Full Unicode editing/grapheme/RTL/CHARSET, authenticated UDP command ownership, actual terminal/LAN/USB interoperability and hardware acceptance.

    Existing ledger/receipt contain exact source/consumer/proof hashes and remaining reasons. No production board was contacted, flashed, reset or actuated; settings unchanged. PR conversations/reviews and paginated review-thread state inspected: no reviews or review threads. Source is synchronized and local tree clean. Not waiting on CI; no new CI-green, merge or deployment claim.

  5. atomicdeploy commented on Oct 28, 2026

    @atomicdeploy
    OwnerAuthor

    Checkpoint cb6ff1d is published on PR #27 for the current terminal complaint.

    • Fixed the missing beep catalogue/dispatch entry. Validated finite Hz/ms parsing reuses the shared buzzer/AVR owner; actual-source fixture compiles both branches and asserts exact bytes, rejection, bounds and no replay.
    • Descriptor-only muted inline suggestions, accepted explicitly by Right/End. No hidden-password, argument-value or history suggestions; Tab retains ambiguity/common-prefix behavior.
    • Grouped, wrapped, role-filtered Usage with Unicode/ASCII framing, semantic colors and aligned descriptions. Removed greeting help/tui narration.
    • Human TUI labels without renaming API/property keys. Added Shift-Tab, CSI/SS3 and numeric Home/End/Delete, Page Up/Down, compact 40x16 layout, in-place repaint, and longer fragmented-Escape allowance on Telnet/framed USB.
    • Simon defaults now one round/eight steps. Existing saved settings are not migrated or overwritten.

    Canonical shell/property tests, actual metadata/service and tone fixtures, TCP/UDP loopback, all/excluded-mode game fixtures, living API guard, PU route guard and scoped hash/comparison generation pass. The exact owned staged source projection was tested separately, preserving concurrent SSH/native/mobile work outside the commit. A failed test initially left a locked Windows fixture; automated closure was denied, no alternate kill/build-path workaround was used, and the same canonical test passed after that process exited.

    Guarded S3 keycontroller candidate built: sketch 2357183/3342336 bytes; static RAM127276, 200404 remaining before runtime allocations. Application file2357328 bytes, SHA256 428ba2d09aa21b5d463ce78136c56c26d34fd433ec02941ce80c81ec309fdc0e. Candidate was compiled in the shared dirty checkout with concurrent disabled-SSH plumbing; not an exact clean-commit binary attestation.

    ASUS SSH localhost:8022 still refused the current attempt. No board was flashed/rebooted/actuated and no sound was generated in this pass. Installed terminal visual/navigation, audible playback, full Unicode editing/grapheme/RTL and human acceptance remain open. Not claiming all-command/device parity, CI completion or merge.

  6. atomicdeploy commented on Oct 28, 2026

    @atomicdeploy
    OwnerAuthor

    Source handoff follow-up: PR36 combines original b793233, owner fixes8aa81bd/9721cb and normally merged main335755a without rewritten history. Reviewed canonical PortableShell10b7d294 changes retain Pakar capacities, formatting default and application command/authentication/hardware ownership. Actual shell/editor/TUI/authority/TCP/UDP fixtures and21-file hash gate pass on combined source. Comparison generation caught nine stale integration-README target bindings; the guide and all affected source dispositions were rereviewed, the same bindings/reports refreshed, no guard bypass or unread promotion. Concurrent audit JSON conflicts are reconciled while preserving all814 records and both review scopes. Final candidate224dd2a is published; CodeQL passes, complete Build40765000068 is still required. No board, network, installed app, credential or live shell was contacted; hardware and human gates stay 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