feat: sidecar committed height surfaced on SeiNode status (spec 007, PLT-1220) - #549
feat: sidecar committed height surfaced on SeiNode status (spec 007, PLT-1220)#549bdchatham wants to merge 1 commit into
Conversation
… (PLT-1220) The sidecar's /v0/status carries committedHeight, read from the co-located CometBFT /status at request time and omitted when unreadable. The node controller reads it alongside the SidecarReady probe on Running nodes and stamps status.committedHeight / committedHeightReadTime; a failed read leaves the prior reading in place so its read time ages into stale. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
PR SummaryMedium Risk Overview The sidecar On the controller, Reviewed by Cursor Bugbot for commit d42fb72. Bugbot is set up for automated code reviews on this repo. Configure here. |
|
Punting on spec 007 for now per Brandon; closing. |
|
This review did not complete. It reached no verdict, so there is no review of this change to act on. This review produced no decision that could be read mechanically. the run deadline expired before the turn replied The agent's own reply is not published: a reply this driver cannot attribute to its own turn is one it must not repeat here. This run's log names the session that produced it. Read this run for the rest: https://github.com/sei-protocol/sei-k8s-controller/actions/runs/34544697512 |
Summary
First of three spec-007 PRs (PLT-1220). Puts a real block-production signal on the wire so PLT-1221 can gate
SeiNetworkReadyon it instead of on pods beingRunning.Sidecar / contract —
StatusResponsegains an optional field:Engine.Status(ctx)fills it from a newEngine.CommittedHeight func(ctx) (int64, error)hook, wired inserve.gotorpc.NewStatusClient("", nil).LatestHeight(CometBFT/status, 500ms timeout). Nil hook or an error leaves the field off the response, so an older sidecar image and a down seid both read as unreadable rather than as a fleet-wide height of zero.sidecarapi/clientregenerated viago generate.Controller —
task.SidecarClientgainsStatus(ctx).NodeResolver.ResolvePlannow callsobserveCommittedHeightnext to the existingprobeSidecarHealthon Running nodes:A failed read (or a sidecar that omits the field) leaves both untouched, so the read time ages — that is how the network controller in PLT-1221 tells "unreadable" (stale read time) from "stalled" (fresh read time, flat height), per spec R2.
Deploy note: image-first, as usual for sidecar contract changes — the new controller tolerates the old image (field absent → no stamp).
Verified:
make manifests generate,make test(all three modules),make lintadds nothing over main,gofmtclean.Link to Devin session: https://app.devin.ai/sessions/5ea4c524ec89449bb913b4e4c93f8084
Open in Devin Desktop: https://app.devin.ai/desktop/session/5ea4c524ec89449bb913b4e4c93f8084?variant=devin
Requested by: @bdchatham