land: view-missing-payload-heal

Merged
AF
6d ago
+1908-84

Accepted agent delivery; branch-keyed search descriptor included.


Summary by cubic

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.

RetriggerView in GreptileConfidence 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

Reviews (2) · Last reviewed commit: "mason: heal only the missing plane, keep..." · Reviewed by Greptile