Skip to content

feat: add ethereum validator reward provider#7

Merged
intel352 merged 2 commits into
mainfrom
codex/eth-validator-reward-provider
Jun 24, 2026
Merged

feat: add ethereum validator reward provider#7
intel352 merged 2 commits into
mainfrom
codex/eth-validator-reward-provider

Conversation

@intel352

Copy link
Copy Markdown
Contributor

Summary

  • Adds a workflow-plugin-crypto Ethereum testnet validator reward provider role/profile.
  • Adds provider-owned evidence validation, operation schemas, contract metadata, and runtime packaging for provider://workflow-plugin-crypto/ethereum/validator-reward-runner.
  • Adds a Go runner with --probe, explicit fixture mode, live beacon balance observation, blocker artifacts, and secret-field rejection.

Boundaries

  • Testnet-only; no mainnet staking, deposits, value-bearing signing keys, custody, or live-money settlement.
  • Generic validator/protocol-reward mainnet roles remain deferred.
  • Downstream workflow-compute should consume the public catalog/contract rather than copy evidence schemas.

Verification

GOWORK=off go test ./...
GOWORK=off go build ./...
GOWORK=off go vet ./...
wfctl plugin validate-contract .
/Users/jon/.codex/plugins/cache/autodev-marketplace/autodev/6.5.9/tests/plan-scope-check.sh --verify-lock /Users/jon/.config/autodev/worktrees/workflow-compute/eth-validator-reward-plan/docs/plans/2026-06-24-ethereum-validator-reward-proof.md

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Ethereum testnet-only “validator reward proof” provider to the public crypto catalog, including schemas/contracts, evidence validation, a runnable Go-based provider runner, and release packaging (binary + GHCR runtime image).

Changes:

  • Introduces provider/operation JSON Schemas and a provider contract for ethereum-testnet-validator-reward.
  • Extends the catalog evidence model + validation to include ethereum_testnet_validator_reward operational evidence.
  • Adds a Go runner (with --probe, fixture mode, live Beacon API balance delta observation) plus tests and release pipeline updates (GoReleaser + runtime image build/push).

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
schemas/ethereum-validator-reward-provider.schema.json Provider runtime config schema for the validator reward provider.
schemas/ethereum-validator-reward-operation-input.schema.json Operation input schema (includes fixture + live observation inputs).
schemas/ethereum-validator-reward-operation-output.schema.json Operation output schema for produced artifacts.
contracts/ethereum-validator-reward-provider.json Provider contract artifact wiring schemas, digests, operation, and runtime profile.
plugin.json Exposes the new contract in the plugin manifest.
plugin.contracts.json Exposes the new contract in the contracts manifest.
README.md Documents the new provider role/evidence and the runtime component identifier.
catalog/crypto.go Adds the new role/profile, bounded-work plumbing, digests, and contract/product generation updates.
catalog/evidence.go Adds evidence struct/constants + validator for testnet validator reward evidence; extends raw-secret field detection.
catalog/evidence_test.go Adds coverage for validator reward evidence validation and secret-field rejection behavior.
internal/validatorreward/provider.go New runner implementation (probe, envelope parsing, fixture/live observe, evidence generation, blocker artifact).
internal/validatorreward/provider_test.go Tests dynamic envelope fixture mode, live Beacon API observation, and mainnet rejection + blocker artifact.
internal/validatorreward/contract_test.go Verifies contract artifact aligns with catalog output and schema digests; checks manifests expose contract refs.
cmd/ethereum-validator-reward-runner/main.go Entrypoint binary for the validator reward runner.
docker/ethereum-validator-reward/Dockerfile Distroless runtime image for the runner binary.
internal/plugin_test.go Updates stable manifest expectations to include the new role/evidence contract ordering and digest.
.goreleaser.yaml Adds a new build target and archives the new contract + schema artifacts.
.github/workflows/release.yml Adds GHCR runtime image build/push job for the runner image.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread internal/validatorreward/provider.go
Comment on lines +367 to +369
if base.Scheme != "https" && base.Scheme != "http" {
return liveObservation{}, errors.New("beacon_api_url must use http or https")
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in ae7321f.

Comment on lines +302 to +306
window := workload.ObservationWindowSeconds
if window <= 0 {
window = defaultObservationWindow
}
observation, err := observe(workload, window)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in ae7321f.

Comment on lines +80 to +84
"required": [
"chain",
"network",
"validator_client_identity_ref",
"signer_mode_ref",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in ae7321f.

Comment thread .github/workflows/release.yml Outdated
@intel352
intel352 marked this pull request as ready for review June 24, 2026 07:36
@intel352
intel352 merged commit 7f3389d into main Jun 24, 2026
5 checks passed
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.

2 participants