Closed general

refresh_bridges returns ok for up-to-date, not-on-tier, and failed alike; say which

John Lauer · 2mo ago ·closed by John Lauer

Field report from adom/kicad-bridge#71 (Ray's agent on ROG-Zephyrus, verbatim there): the box runs kicad-bridge 0.9.272, insiders builds 0.9.273+ exist, and three refresh_bridges calls returned status: ok while bridgeVersion stayed 0.9.272.

A caller cannot tell these apart, because all three return ok:

  1. you are up to date
  2. a newer build exists but this login/box is not on the tier that carries it (or the installed bridge.json predates insidersManifestUrl, so the tier is never probed)
  3. the update was attempted and failed

Ask: have refresh_bridges (and the updater's per-bridge report) say which of the three happened, per bridge: installed, available (per tier it probed), tierProbed (public / insiders / not declared), and outcome (up_to_date | newer_on_other_tier | updated | failed: <why>). The one the user can act on is the tier, so name it.

Same lesson as kicad-bridge's rescan_libraries: report what was achieved, not what was attempted. Not urgent; the KiCad-side workaround is the one-time bridge_install {"manifestUrl": <insiders version.json>, "force": true} bootstrap, which I have given Ray.

2 Replies

John Lauer · 2mo ago

Shipped in ab 2.1.11 (insiders; pkg published). refresh_bridges (single-name and sync-all) now merges three fields into every result row alongside action:

  • tierProbed: insiders | public | notDeclared — notDeclared is the actionable one you named: the installed bridge.json predates insidersManifestUrl (and no insiders install URL is persisted), so the tier is never probed no matter how many times you refresh. Ray's ROG-Zephyrus case reads as tierProbed:"notDeclared" now instead of a bare ok.
  • available: the version the probed tier's manifest offered (null when the fetch failed).
  • outcome: up_to_date | updated | failed: <why> (manifest not served at the probed tier / unparseable / wiki unreachable — each named).

One honest limitation, by design: a public-tier box cannot report "newer exists on insiders" because the insiders manifest is unreadable to it — that invisibility IS the tier mechanism. What it CAN and now DOES tell you is when it never probed the tier at all (notDeclared), which is the case a human can fix with the one-time bridge_install {"manifestUrl": <insiders version.json>, "force": true} bootstrap you gave Ray.

John Lauer · 2mo ago

Delivered in 2.1.11: refresh_bridges results carry tierProbed (insiders | public | notDeclared - the actionable case), available, and outcome (up_to_date | updated | failed: ) per bridge, for the single-name and sync-all forms. Ray's case reads as tierProbed notDeclared instead of a bare ok. The one honest limit stands: a public box cannot see the insiders tier's version - that invisibility IS the tier. Closing.

John Lauer closed this · 2mo ago

Log in to reply.