feat(seitask): WS-C — rpc scenario templates → SeiNode + provision-node RBAC#420
Conversation
…de RBAC
- runner/rbac.yaml: grant seitask-runner `seinodes` create (provision-node's
first act is c.Create(SeiNode); without it every rpc-fleet step 403s) +
seinodes/status get (forward-compat, matches the /status pattern).
- scenarios/{load-test,release-test}/rpc.yaml.tmpl: rewrite from a dead second
`kind: SeiNetwork` (replicas:2) to a single `kind: SeiNode` fullNode follower;
name/ns/ownerRef/labels/peers stamped by provision-node at runtime.
Pairs with platform WS-C (chaos workflows → provision-node) and consumes the
merged provision-node (#419) + SeiNode.status.endpoint (#418).
HARD GATE before merge: dry-run the rendered SeiNode template against the
DEPLOYED CRD (`seictl node apply … --dry-run`) — envtest only covers the
repo CRD, not the live one.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PR SummaryMedium Risk Overview Runner RBAC grants Tests split bundled-template coverage: Reviewed by Cursor Bugbot for commit 1985129. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c72d84c. Configure here.
The WS-C rewrite of scenarios/{load-test,release-test}/rpc.yaml.tmpl from
kind: SeiNetwork to kind: SeiNode broke provisionsnd's
TestBundledTemplates_RenderClean, which strict-unmarshals every bundled
template as a SeiNetwork (rendered SeiNode has top-level spec.chainId, an
unknown field on SeiNetworkSpec).
- provisionsnd test: drop the rpc.yaml.tmpl case — it only owns the
SeiNetwork genesis/validator templates now.
- provisionnode test: add TestBundledTemplates_RenderClean covering both
rpc.yaml.tmpl, asserting they render + strict-unmarshal as a SeiNode
(spec.chainId set, spec.fullNode present).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

What
Controller-side half of WS-C (the platform nightly migration):
runner/rbac.yaml: grant theseitask-runnerRoleseinodescreate (provision-node's first act isc.Create(SeiNode)— without it every rpc-fleet step 403s) +seinodes/statusget (forward-compat, matches the existing/statuspattern).scenarios/{load-test,release-test}/rpc.yaml.tmpl: rewrite from a dead secondkind: SeiNetwork(replicas: 2) to a singlekind: SeiNodefullNodefollower. name/ns/ownerRef/labels/peers are stamped byprovision-nodeat runtime.Why
Pairs with the platform WS-C PR (chaos workflows →
provision-node) and consumes the already-mergedprovision-node(#419) +SeiNode.status.endpoint(#418). The oldrpc.yaml.tmplrendered a second genesis pool, not followers.The new
kind: SeiNodetemplate has never been applied against the deployed CRD.make build/lint/manifestsare clean and strict-unmarshal passes, but that only covers the repo-bundled CRD. Before merge, run server-side validation against the target cluster:A clean dry-run (no
Invalid/unknown-field/missing-required) closes it. Specifically verify the deployed CRD doesn't enforce apeers/CEL constraint onfullNodethat the repo CRD doesn't (followers getpeersstamped post-render).Sequence
This PR (+ its seitask image build) lands before the platform PR, which bumps to the resulting image. RBAC should merge first/standalone.
🤖 Generated with Claude Code