every.channel/evolution/proposals/ECP-0112-op-deployer-intent-nested-chain-compat.md

1.8 KiB

ECP-0112: Match Nested OP Deployer Intent Schema

Status: Draft

Problem / context

ecp-forge OP Stack bootstrap failed with missing key id even though /var/lib/every-channel/op-stack/deployer/.deployer/intent.toml contained an id field. After that was repaired, bootstrap also found a placeholder state.json whose deployment fields were still null. The current op-deployer intent format writes chain and role values under nested TOML sections, while the bootstrap helper only matched keys at the start of a line and treated any state.json as completed state.

Decision

Update the OP Stack bootstrap helper to replace TOML keys after optional indentation, preserve that indentation when writing the replacement value, and run op-deployer apply unless the state file has non-null applied deployment fields.

Consequences

  • The existing op-deployer/v0.6.0-rc.3 intent file can be repaired in place.
  • The bootstrap service can generate sequencer, batcher, proposer, challenger, and dispute monitor runtime config from the existing deployment state.
  • Placeholder state.json files no longer block the apply step.
  • The change stays compatible with flat TOML keys if op-deployer changes the layout again.

Alternatives considered

  • Regenerate the deployment state from scratch. Rejected because a surgical config repair is safer for an already deployed OP Stack root.
  • Keep matching only top-level keys. Rejected because it does not match the live op-deployer schema on ecp-forge.

Rollout / teardown

Deploy the updated bootstrap helper, restart every-channel-op-stack-bootstrap.service, and then restart the dependent OP Stack containers. Teardown is reverting this helper change and regenerating the OP Stack root with a known-flat intent schema.