Skip to content

refactor: deferred follow-ups (proxy interface tidy, ethnode discovery, CLI cancellation)#117

Open
samcm wants to merge 3 commits into
preship-refactorsfrom
preship-followups
Open

refactor: deferred follow-ups (proxy interface tidy, ethnode discovery, CLI cancellation)#117
samcm wants to merge 3 commits into
preship-refactorsfrom
preship-followups

Conversation

@samcm
Copy link
Copy Markdown
Member

@samcm samcm commented Jun 3, 2026

Builds on #115 with the deferred follow-ups: routes the ClickHouse schema client through a typed proxy.Service.ClickHouseQuery instead of hand-rolled proxy HTTP, collapses the proxy's dual DatasourcesResponse to a single []DatasourceInfo, moves the GitHub trigger global budget onto the proxy's shared RateLimiter, gives ethnode real discovery (network completion sourced from cartographoor instead of Dora, a list-datasources command, and non-nil DatasourceInfo), and makes the CLI cancel in-flight work on Ctrl+C. The ethnode <instance> selector stays free-text since the proxy can't enumerate node instances, and the per-workflow GitHub cooldown stays a local map since a 2-minute cooldown isn't expressible as the limiter's integer requests-per-minute.

Stacked on #115 (base preship-refactors); rebase down the stack as the lower PRs merge.

samcm added 3 commits June 3, 2026 18:47
…hared github rate limit (PR3)

- add proxy.Service.ClickHouseQuery so the clickhouse schema client routes
  through the interface instead of hand-rolling proxy HTTP and importing
  pkg/proxy/handlers
- collapse DatasourcesResponse to a single []types.DatasourceInfo (the legacy
  name-only JSON keys are preserved via custom marshalling); the authorizer no
  longer hand-aligns parallel name/info slices
- move the GitHub trigger global budget onto the proxy's generic RateLimiter
  (the per-workflow 2m cooldown stays local; it is not expressible as an integer
  requests-per-minute rate)
…PR3)

- ethnode tab-completion now sources networks from cartographoor's active
  networks instead of Dora's filtered subset; the free-text <instance> segment
  (a DNS label the proxy can't enumerate) no longer offers misleading completion
- add `panda ethnode list-datasources` plus the backing ethnode.list_datasources
  and ethnode.list_networks server operations, emitting the unified list shape
- ethnode module DatasourceInfo() now returns the discovered datasources
  (refresh-safe) instead of nil; Python SDK gains list_datasources/list_networks
- establish a signal-aware root context (signal.NotifyContext on SIGINT/SIGTERM)
  and run via ExecuteContext, so Ctrl+C cancels the context cobra threads into
  every command
- thread cmd.Context() through the server-operation helpers and command bodies
  so HTTP calls to the server observe cancellation; best-effort cleanup, the
  detached update check, and the binary self-update download stay non-cancellable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant