Repository navigation
refactor(#272): E4 band 3c -- weather and geocache leave src.ino as units - #277
Merged
Merged
Conversation
…nits
Two units, the data domains that consume the sensors:
src/weather.{h,cpp} weatherHistory, weatherHistoryCount, weatherHistoryHead,
lastWeatherLog, weatherTrend (WeatherTrend), the weather
log counters, lastFramFlush; WeatherReading; WEATHER_*;
getCurrentTimestamp, getWeatherFilename, add/getWeather*,
logWeatherToFRAM, logWeatherReading, loadWeatherHistory,
calculateWeatherTrend, getTrendArrow, calculateForecast,
updateWeatherLogStats, and framFlushToSD (as #272
proposed: both rings it flushes are now reachable
through battery.h and fram.h)
src/geocache.{h,cpp} cacheList (GeocacheEntry), cacheListCount, the seven
filter/sort settings, the cached distances and filtered
indices, listHighlightIndex; MAX_CACHES and the file
defines; saveCacheFoundStatus, loadCacheFoundStatus,
decodeROT13, extractXMLField, extractXMLFloat,
parseGPXFromString, gcUpdateDistances, gcApplyFilters,
loadGeocachesFromSD
Four cut-set variables leave src.ino (6,598 -> 5,808 lines).
Verifier: every moved function is now checked by its reference set (a
reference may vanish from the intra-object graph only because its target
lives in another object now; nothing may appear). All 21 pass, references
identical. Harness: default arguments stripped from a moved definition;
blank-line runs collapsed. Eight empty banners from bands 1-3b removed.
Verified by scripts/verify_extraction.py, PASS: 589 -> 589 symbols, 46
relocated, 2 linkage changes declared, 18 size deltas net +43 all attributed,
unexplained none. .flash.text +116 (inputs +115), .flash.rodata +68 (inputs
+188, merged), RAM unchanged. Flash 1,856,406 -> 1,856,590. Both toolchains
build. 58 tests pass. Record: section 12 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, in the PR body: |
4 tasks
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 3c, task #272 under #264 and Epic #212. Opened autonomously under the owner's standing grant of 2026-09-07.
What moved
weather(12 functions, includingframFlushToSD) andgeocache(9 functions) with their state and types; four cut-set variables leavesrc.ino(6,598 → 5,808 lines). Full composition indocs/god-object-inventory.md§12.Calls made under the grant — please review
framFlushToSDlives inweather, as E4-5c (band 3): weather and geocache units #272's text proposed. It flushes the battery ring and the weather ring; after 3b both are reachable throughbattery.handfram.h, andweatheris the higher of the two domains, so it reaches nothing it should not.lastFramFlushwent with it, published forloop.selectedCacheIndexandlistScrollOffsetstayed insrc.ino: list-UI state touched only by screen callbacks and buttons (band 4).The proof got stronger
Until now the verifier attributed a moved function's size change with the single word "moved". It now compares every moved function's reference set before and after — a reference may disappear from the intra-object graph only because its target lives in a different object now, and nothing may appear. All 21 functions of this band pass with every reference kept.
Proof
scripts/verify_extraction.pyPASS; full output in §12: