Review fixes on top of #1578:
- Exiting Space Missions cancels the layer's own camera flights again (entry,
roster preview, mission focus); only a flight navigation started after
releaseCameraOwnership() runs on.
- A failed first index load says so: "Space Missions unavailable: the
mission index could not load. Try again later." on both the Context and
Data Layers routes, instead of a generic transition toast. Translated.
- Regression tests for both; docs and changelog describe the real feedback.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Street Level: keep the PR's billedPerImage contract note beside main's keyReady, and both sides' layer tests (armed OPEN, failing source) and (keyless default lighting).
Third review pass on #835. No runtime change.
- Controller test: viewport decisions reach the controller's debug log.
- Policy test: a second request for a snapshot still being captured is
logged pointer-already-requested and is not captured twice.
- CURRENT-STATE: pointer-not-fresh also covers a missing snapshot,
already-requested covers an earlier attempt that threw, and the image
step runs when any tool output of the response was sent.
- Changelog: describe what is recorded rather than a fixed miscount.
Second review pass on #835's diagnostics. Behaviour is unchanged.
- Report viewport_context.result as soon as the send returns, so a throw
in the retained-frame bookkeeping cannot log a real send as "error".
- List the decision reasons and when each field is present in
CURRENT-STATE, note that the rate limit can split a pair, and say which
codes are defensive.
- Changelog: the decision is logged when an entity-context answer reaches
the image step, not for every answer.
Review follow-up for #835. What is captured, sent and kept is unchanged.
- Log nothing for tool results other than get_entity_context, so other
tools stop spending the shared debug-log budget.
- Give every decision and outcome the same contextId and image kind, so
overlapping requests pair up.
- Log why a crop decision did not send (stale, off ground, off screen,
expired, pose changed, already requested) instead of leaving a lone
"pointer-ground-crop" that reads as sent.
- Split capture-invalidated into session-reset, superseded, channel-lost
and frame-stale.
- Close the pair with "error" when a step throws, then rethrow.
- Document the events in CURRENT-STATE and reword the changelog fragment.
The data refresh is committed and its provenance (extract, timestamp, MD5,
filter) stays in the dataset README. The script needed osmium-tool and could
only re-verify while Geofabrik still listed that extract, so it goes with its
test.
Wildlife Sightings (#1591) published share token 9, so News takes the
next free token, 00. The token tests read the ledger before both where
they were written against it, and the README counts both layers.
Main's wildlife-sightings layer took share-link token 9, so shipwrecks
takes the next free token, 00. Locale, docs, format-scope and voice
manifest conflicts keep both sides. Ledger and registry tests now model
the ledger before shipwrecks took 00, and layer counts include both
new layers.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Keyless GTFS-Realtime feed published by ZDiTM Szczecin under CC0 1.0.
Speeds are m/s (checked against vehicle movement), the file refreshes about
every 20 s, and the feed carries no route ids, so vehicles take the default
bus mode.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Address samehkhamis's review on #1113:
- show_street_level checks the turn, the camera's owner (navigation stamp,
re-taken where its own flight lands, or a press/wheel on the globe) and
the hiding modes after the flight, the map switch, the layer switch-on and
the lookup; a photo that opened after either is closed again. The hidden
panel is also refused before the flight.
- An open photo closes before a new request arms or looks up, so a place
with no imagery shows its own error.
- The panel posts every view with `fresh`; the inline app opens a billed
photo only for a fresh one.
- A passed-through view's street_level point moves with a new camera
position; revealPanel does nothing above 720px, scrolling included.
- Document that the app's own links do not carry `sl`.
An export is given up on (never published, unreadable, or failing three
times) only while GDELT itself answers: its list of exports read, or
another export of the same round read. An outage that answers 404, or junk,
for everything now gives up on nothing, and a failing file earns one strike
a round rather than three within the first seconds' rounds.
Docs: News's share token is 9; territories without a country code are named
as themselves too; the changelog fragment credits one pull request. Unused
exports dropped from the rules and stale scaffolding from the ledger tests.
DATA_SOURCES, the README's layer and key tables, CURRENT-STATE and the
changelog describe the News layer as it now is: a configured news server,
or Core's own reading of GDELT (no key), Liveuamap (optional) and World
News API (Local, free plan backlink credited). .env.example gives the
download sizes and the daily read budget; KNOWN-ISSUES lists what machine
coding gets wrong and which disputed areas are named as themselves.