Repository navigation
Conversation
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.
Problem (upstream link)
Opening Android Insights on a day with no native Journal answers silently persists yesterday's Yes/No answers as today's observed evidence. Those unconfirmed rows can enter behavior correlations and personal experiment views. This remains on upstream main at
2a1de760. Original source report: fork PR #58 and Journal integrity ledger #70. PR #58 did not identify a dedicated upstream issue; this PR does not attribute the defect to an unrelated user report.Root cause (file:line at SHA)
At
2a1de7609843b095505274ad6fc811757210be80,android/app/src/main/java/com/noop/ui/InsightsScreen.kt:250-271has a screen-loadLaunchedEffectthat callsvm.repo.upsertJournal(yesterdayAnswers...)when today's native answers are empty. A read of the page becomes a persistent Yes/No write, with no confirmation. It also ignores imported evidence and numeric/hidden question eligibility.Change
Strand/Screens/InsightsView.swiftreads native answers into state without inserting yesterday's rows on page load, so this is an Android-only correction that restores the shared behavior.Supersedes #58. The fork's separate minimal #53 is an alternative no-auto-copy fix; do not merge/promote both blindly.
Tests
Not run. GitHub Actions is disabled on
kvnloo/noop; no CI run or build result is claimed. Nine existing JUnit cases were re-read at this head. Numeric expectations checked manually:{read: true, caffeine: false}, blank today ⇒ suggestion retains both values, with zero writes during load; tomorrow or past-day offsets ⇒ zero suggestions.{read: true, late caffeine: false}pending, current{read: false}⇒ copy only{late caffeine: false}; imported{read: true}likewise blocks an overwrite.Caffeine (mg)=120.0⇒ not copied; visible booleanRead a page?=trueandAvoided screen?=falseretain their values; hidden prompts excluded.Hermes exact-head verification:
Expected upstream check names for these Android+docs paths:
build-and-test(Android CI),check(i18n Coverage),doc-comments(Source Hygiene),linux-capture(Tools Python CI). Swift Packages/App build and Windows capture are not path-triggered.Hardware needed
No physical strap or BLE connection is needed for the pure confirmation/collision tests. Before promotion, Android device QA should verify first-open no-write, tap confirmation, imported-vs-native collision, midnight rollover, screen resume, TalkBack and large text. A real strap is only necessary for a separately scoped live-capture workflow; none was tested here.
Upstream readiness
Draft / HOLD until Hermes runs tests against this exact head, independent review confirms data semantics and locale rendering, #53 is deduplicated, and Kevin explicitly approves upstream promotion. Search of upstream Journal PRs found no exact confirmation-copy successor at time of branch creation; repeat before any upstream post. No upstream writes were made.
Implemented by ChatGPT (mobile app, GitHub connector) for Kevin's NOOP factory.