Skip to content

E4-6 (band 4): move the consumers and screens last #265

Closed

Description

@Strycher

Epic: #212

The functions that read across every domain (updateSettingsData touches 29 of the 97 variables, handleWebDiags 23, updateGeocacheData 20, loop 19 variables and 21 calls, gcApplyFilters 15) and the screen builders (Appendix E). They move last because they have nothing to own; they consume what bands 2 and 3 published.

Residue left in src/src.ino is setup, loop, button handling and sleep, roughly the 567 lines the original plan estimated, now to be re-measured.

Acceptance

  • src/src.ino contains no function touching more than a handful of external-linkage variables; measured, not estimated
  • python scripts/symbol-inventory.py on the remaining src.ino.cpp.o shows the residue only
  • Full hardware verification, every screen and every peripheral, before merge
  • Epic Epic E4: break src.ino into translation units #212's integration test (to be created at grooming, per CLAUDE-BASE) depends on this

Evidence: docs/god-object-inventory.md. Regenerate the figures with python scripts/reference-graph.py --appendix.

Activity

  1. added
    board:testingBoard sync: Testing column
    and removed
    board:todoBoard sync: Todo column
    on Sep 7, 2026
  2. Strycher commented on Sep 8, 2026

    @Strycher
    OwnerAuthor

    Band 4 is done and proven, and this issue's merge gate is now yours: PR #280 on fc/212-e4-screens (four commits, compile-gate green, both toolchains build) is open and deliberately not merged, because the acceptance above requires full hardware verification, every screen and every peripheral, and nothing in E4 was flashed.

    The acceptance, measured on the branch:

    • src/src.ino: 750 lines — setup, loop, initLVGL, initSD, scanI2C, handleButtons and its two helpers; 6 file-scope variables. The estimate in this issue was "roughly 567 lines"; 750 is the number.
    • python scripts/symbol-inventory.py on src.ino.cpp.o: 8 functions, 6 variables — the residue only.
    • python scripts/reference-graph.py: 7 of 8 functions touch no shared state of the file, the eighth only its own three; cut set 0, largest cluster 1.
    • Proofs: docs/e4-proofs/verify-265{a,b,c}-*.txt (on the docs PR); record: docs/god-object-inventory.md §15 (on refactor(#265): E4 band 4 -- the screens leave src.ino; hardware verification before merge #280).

    Two composition calls for you to review, both in the PR body and §15: initLVGL stays in src.ino as the composition root, and the five screens plus navigation moved in one commit because they reference each other through headers. The Epic's integration test (CLAUDE-BASE) still needs creating.

  3. added a commit that references this issue on Sep 8, 2026
  4. Strycher commented on Sep 8, 2026

    @Strycher
    OwnerAuthor

    Band 4 hardware verification: see the comment on PR #280 and PR #288. Every screen unit ran on um_feather on 2026-09-08 with TFT, touch, OLED, SD, FRAM, RTC, GPS and all sensors up; no band-4 regression found.

  5. added 4 commits that reference this issue on Sep 8, 2026
  6. Strycher commented on Sep 8, 2026

    @Strycher
    OwnerAuthor

    Closed on the owner's word 2026-09-08: band 4 merged as PR #280 (25c8bb8) after every screen unit ran on the UM FeatherS3D with TFT, touch, OLED, SD, FRAM, RTC, GPS and all sensors up (evidence on PR #280 and PR #288).

  7. added
    board:doneBoard sync: Done column
    and removed
    board:testingBoard sync: Testing column
    on Sep 8, 2026
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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions