Freshness says which answer it is, and the self row keeps what it built
"Nothing was flagged as out of date" could not be answered from the phone, because the card drew every way of not knowing as nothing at all: a component this server had never built looked exactly like one whose build was current. Freshness now names the state. behind, neverBuilt and otherMode are measured and have something to do about them; uncommitted, notBuiltHere, noCheckout and parked are the ways of not knowing, and each says so in the row -- in the ordinary text colour, because "we could not check" is a difference in kind from "there is something here", and a colour cannot carry that. Only the measured three make a card read as out of date, sit above the "Up to date" heading, or light up Update. Saying it about something nobody measured is a nag with nothing behind it. And the bug the new words turned up on the first look: reconcile_self rebuilds this server's own row from its declaration at every startup, and built_from/built_mode were not carried across. The commit recorded by the build that produced the new binary was forgotten by the process that build started -- and restarting is how this server takes an update. Its own card had no freshness ever again: never behind, never current, and its Update with nothing to do. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
07639ed14d
commit
f359cd3edf
7 files changed
+290
-39
No files matched your search
@@ -587,6 +587,36 @@ mutable at runtime from the phone.
|
||||
differ in nothing but the label and the old one said "Pulling and
|
||||
building" for all three.
|
||||
|
||||
- **Freshness says *which* answer it is, and only three of them read as
|
||||
out of date.** `Freshness` was `current | behind | unknown`, and the
|
||||
card drew unknown as nothing at all -- so a component this server had
|
||||
never built looked exactly like one whose build was current, and the
|
||||
only difference lived in a config file on the other machine. That
|
||||
silence cost two rounds of "why isn't it flagging anything" that no
|
||||
amount of looking at the phone could answer. It now names the state:
|
||||
`behind`, `neverBuilt` and `otherMode` are measured and have something
|
||||
to do about them; `uncommitted`, `notBuiltHere`, `noCheckout` and
|
||||
`parked` are the ways of not knowing, and each says so in the row in
|
||||
the ordinary text colour -- words, not a colour, because "we could not
|
||||
check" is a difference in kind from "there is something here".
|
||||
`ProjectComponent.isStale` is the one place the division is written
|
||||
down, and it decides all three of: whether the row says "out of date",
|
||||
whether the card sits above the "Up to date" heading, and whether
|
||||
Update is pressable. Iris's rule for it, 2026-09-02: "it should not do
|
||||
that until things actually can be updated."
|
||||
|
||||
- **What a build recorded is carried across the self row being
|
||||
re-derived, like the settings beside it.** `reconcile_self` rebuilds
|
||||
this server's own row from its declaration at every startup, and
|
||||
`built_from`/`built_mode` were not among the things carried -- so the
|
||||
commit written down by the build that produced the new binary was
|
||||
forgotten by the process that build started, and restarting is how this
|
||||
server takes an update. Its own card then had no freshness ever again:
|
||||
never behind, never current, and its Update with nothing to do, since
|
||||
both readings need a commit to compare against. `built_records` /
|
||||
`restore_built` carry it, keyed by name *and* directory like every
|
||||
other carry-across here.
|
||||
|
||||
- **One predicate decides both the "Up to date" heading and whether
|
||||
Update can be pressed** (`hasWorkWaiting` in `UpdaterScreen.kt`): they
|
||||
are the same question, since Update is the button that clears
|
||||
|
||||
Reference in new issue
Block a user