Heals views whose call-graph or semantic payload rows disappear from the family blob store, so a checkout keeps following edits instead of freezing. A corrupt store was already moved aside and recreated empty when opened, and a store can be deleted while the daemon is stopped; the served generation kept naming the deleted payloads, and every publication retry failed on the same missing keys.
Bug Fixes
Probes the keys a publication would reuse in one indexed batch per plane (no payload reads) and extracts missing call-graph payloads again from the working tree, under the file's current key when it changed.
A missing call-graph payload keeps the file's stored semantic key unless that payload is also missing; changed content still takes the caller's semantic key, as an edit would.
Leaves a file whose payload cannot be rebuilt (unreadable, or a synthetic entry) out of the generation and marks it failed, instead of failing the whole publication.
The bind-time check runs in the configure tail after the bind is answered, within a 1 s budget; an exhausted budget is reported incomplete and repaired by the next publication.
A failing publication streak is reported in view health with a typed reason and logged once per minute with the retries left unlogged.
Confidence Score: 5/5
The PR appears safe to merge; the latest change fixes the earlier semantic-data loss without introducing a new defect.
Summary
This PR repairs views after stored payloads disappear and reports repeated publication failures in health.
Checkout views rebuild payloads that have gone missing.
View health shows why publication retries keep failing.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Probe reused payload keys] --> B{Callgraph payload missing?}
B -- Yes --> C[Read current file and rebuild]
C --> D{Content unchanged and semantic payload present?}
D -- Yes --> E[Keep semantic key unless caller replaced it]
D -- No --> F[Use only caller-supplied semantic key]
E --> G[Check required resources and publish]
F --> G
B -- No --> G