Repository navigation
refactor(#270): E4 band 3a -- fram, settings and rtc leave src.ino as units - #275
Merged
Merged
Conversation
… units
Three units, each taking its state with it, each including the previous:
src/fram.{h,cpp} fram, framHeader, framAvailable; FRAMHeader,
FRAMBatteryEntry, FRAMSettings; the 17 FRAM_* layout
defines; framReadHeader, framWriteHeader, framFormat,
initFRAM
src/settings.{h,cpp} the nine user/display settings, tzPresets and TZPreset,
the four timeout preset tables with their counts,
settingsLoadedFromSD; framSettingsChecksum (static),
saveSettingsToFRAM, loadSettingsFromFRAM, applyTimezone,
mktimeUTC, formatTimeStr, loadSettings, saveSettings,
factoryReset, findTimeoutIndex
src/rtc.{h,cpp} rtc, rtcAvailable; initRTC, syncRTCFromSystemTime
src/fc_config.h + FRAM_CS, TFT_BL (fram.cpp and factoryReset need them)
Twelve of the 34 cut-set variables leave src.ino. framFlushToSD stays: it
flushes the battery and weather buffers, two domains not yet published.
Harness (scripts/extract_unit.py), five fixes found by this band: bare include
names are wrapped; --header-lines is emitted before the externs that need its
types; a multi-line table initialiser is carried whole; forward extern
declarations of published variables are dropped; the comment that introduced a
removed declaration is swept when only a blank follows it.
Verified by scripts/verify_extraction.py, PASS: 584 -> 585 symbols (fram.cpp's
static initialiser, 41 bytes; src.ino's shrank 34), 38 relocated, 2 linkage
changes both declared, 26 size deltas net +22 all attributed, unexplained none.
.flash.text +64 = deltas +22, initialiser +41, alignment +1; .flash.rodata +56
and .dram0.bss +16 with no data symbol changing size (packing across three new
objects). Flash 1,856,026 -> 1,856,146. RAM 103,232 -> 103,248. src.ino
7,986 -> 7,483. Both toolchains build. 58 tests pass. Record: section 10 of
docs/god-object-inventory.md.
Owner
Author
|
Merged autonomously under the owner's standing grant of 2026-09-07. Gate: Set aside for the owner's review, listed in the PR body: the band-3 split into #270–#274 with web last, the timeout tables living in |
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
E4 band 3a, task #270 under #264 and Epic #212. Opened autonomously under the owner's standing grant of 2026-09-07.
What moved
Three units, each taking its state with it, each including the previous:
framfram,framHeader,framAvailable;FRAMHeader,FRAMBatteryEntry,FRAMSettings; the 17FRAM_*layout definesframReadHeader,framWriteHeader,framFormat,initFRAMsettingstzPresets/TZPreset, the four timeout preset tables and their counts,settingsLoadedFromSDframSettingsChecksum(static),saveSettingsToFRAM,loadSettingsFromFRAM,applyTimezone,mktimeUTC,formatTimeStr,loadSettings,saveSettings,factoryReset,findTimeoutIndexrtcrtc,rtcAvailableinitRTC,syncRTCFromSystemTimeTwelve of the 34 remaining cut-set variables leave
src.ino(7,986 → 7,483 lines).FRAM_CSandTFT_BLjoinfc_config.h.Calls made under the grant — please review
findTimeoutIndexwent tosettings, not display: they define what the sleep settings may be, and the unit that persists them owns them.framFlushToSDstays insrc.inountil the weather child (E4-5c (band 3): weather and geocache units #272); it flushes two buffers whose domains are not yet published.Harness
Five fixes to
scripts/extract_unit.py, each found by this band: bare include names wrapped;--header-linesemitted before the externs that need its types; multi-line table initialisers carried whole; forwardexterndeclarations of published variables dropped; orphaned introductory comments swept (this also removed the two band 2 left behind).Proof
scripts/verify_extraction.pyPASS; full output indocs/god-object-inventory.md§10: