Context
Config-call args today can be literals or {DeployID}.address refs. The long-deferred item (from the 2026-06-30 config-steps design) is referencing a value read from a deployed contract (e.g. token.decimals()) as an argument to another config call. It was deferred because it complicates deploy-order analysis — but core's resolver mechanism (PR #122) now provides a typed way to defer evaluation to deploy time, which may make this tractable without new ordering machinery.
Scope
- Design first: decide whether this is (a) sugar over
kind: "resolver" with an auto-generated on-chain read, or (b) a first-class { kind: "read", deployId, function, args } arg kind in the config spec. Either way, the referenced contract must be deployed (and relevantly configured) before the reading step runs — define how ordering is derived or constrained (e.g. restrict to orderedSteps, or extend dependency analysis).
- core/config: implement the chosen mechanism + validation (unknown deployId, non-view function, type mismatch).
- studio: in the config-call arg editor, allow picking a source contract + view function alongside the existing literal/address-ref options.
Acceptance
- A config step can pass e.g.
otherContract.someView() as an argument, works on real Anvil deploys including partial/resume, and fails validation cleanly when the read target isn't deployable before the step.
Primary modules when activated: module:config (+ module:core if resolver plumbing changes) + module:studio.
Context
Config-call args today can be literals or
{DeployID}.addressrefs. The long-deferred item (from the 2026-06-30 config-steps design) is referencing a value read from a deployed contract (e.g.token.decimals()) as an argument to another config call. It was deferred because it complicates deploy-order analysis — but core's resolver mechanism (PR #122) now provides a typed way to defer evaluation to deploy time, which may make this tractable without new ordering machinery.Scope
kind: "resolver"with an auto-generated on-chain read, or (b) a first-class{ kind: "read", deployId, function, args }arg kind in the config spec. Either way, the referenced contract must be deployed (and relevantly configured) before the reading step runs — define how ordering is derived or constrained (e.g. restrict toorderedSteps, or extend dependency analysis).Acceptance
otherContract.someView()as an argument, works on real Anvil deploys including partial/resume, and fails validation cleanly when the read target isn't deployable before the step.Primary modules when activated:
module:config(+module:coreif resolver plumbing changes) +module:studio.