gate-evm-tools 1.0.28 → 1.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/bin/cli.js +3 -0
- package/bin/delivery.cjs +51 -0
- package/bin/manifest-bootstrap.js +4 -15
- package/bin/workflow.cjs +1 -1
- package/dist/commands/plan/file-store.d.ts.map +1 -0
- package/dist/commands/plan/generate-deployment.d.ts +48 -0
- package/dist/commands/plan/generate-deployment.d.ts.map +1 -0
- package/dist/commands/plan/generate-deployment.js +211 -0
- package/dist/commands/plan/generate-deployment.js.map +1 -0
- package/dist/commands/plan/helpers.d.ts.map +1 -0
- package/dist/commands/plan/index.d.ts +3 -0
- package/dist/commands/plan/index.d.ts.map +1 -0
- package/dist/commands/plan/index.js +88 -0
- package/dist/commands/plan/index.js.map +1 -0
- package/dist/commands/sync.js +1 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/core/BytecodeChecker.d.ts.map +1 -1
- package/dist/core/BytecodeChecker.js +27 -8
- package/dist/core/BytecodeChecker.js.map +1 -1
- package/dist/core/preparation/artifacts.d.ts +2 -0
- package/dist/core/preparation/artifacts.d.ts.map +1 -1
- package/dist/core/preparation/artifacts.js +9 -3
- package/dist/core/preparation/artifacts.js.map +1 -1
- package/dist/core/preparation/evm.d.ts +38 -2
- package/dist/core/preparation/evm.d.ts.map +1 -1
- package/dist/core/preparation/evm.js +104 -32
- package/dist/core/preparation/evm.js.map +1 -1
- package/dist/core/preparation/evmManifestSync.d.ts +63 -0
- package/dist/core/preparation/evmManifestSync.d.ts.map +1 -0
- package/dist/core/preparation/evmManifestSync.js +146 -0
- package/dist/core/preparation/evmManifestSync.js.map +1 -0
- package/dist/core/preparation/index.d.ts +40 -2
- package/dist/core/preparation/index.d.ts.map +1 -1
- package/dist/core/preparation/index.js +3 -3
- package/dist/core/preparation/index.js.map +1 -1
- package/dist/core/preparation/manifest.d.ts +15 -3
- package/dist/core/preparation/manifest.d.ts.map +1 -1
- package/dist/core/preparation/manifest.js +21 -26
- package/dist/core/preparation/manifest.js.map +1 -1
- package/dist/core/preparation/normalize.d.ts.map +1 -1
- package/dist/core/preparation/normalize.js +14 -9
- package/dist/core/preparation/normalize.js.map +1 -1
- package/dist/core/preparation/types.d.ts +7 -2
- package/dist/core/preparation/types.d.ts.map +1 -1
- package/dist/custody/hardhat-runtime.d.ts.map +1 -1
- package/dist/custody/hardhat-runtime.js +2 -0
- package/dist/custody/hardhat-runtime.js.map +1 -1
- package/dist/custody/hardhat.d.ts +1 -0
- package/dist/custody/hardhat.d.ts.map +1 -1
- package/dist/custody/hardhat.js +1 -0
- package/dist/custody/hardhat.js.map +1 -1
- package/dist/custody/index.d.ts +1 -0
- package/dist/custody/index.d.ts.map +1 -1
- package/dist/custody/index.js +1 -0
- package/dist/custody/index.js.map +1 -1
- package/dist/custody/provider-wait.d.ts +13 -0
- package/dist/custody/provider-wait.d.ts.map +1 -0
- package/dist/custody/provider-wait.js +78 -0
- package/dist/custody/provider-wait.js.map +1 -0
- package/dist/delivery/policy.d.ts +6 -0
- package/dist/delivery/policy.d.ts.map +1 -0
- package/dist/delivery/policy.js +24 -0
- package/dist/delivery/policy.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/sync/index.d.ts +15 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +8 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/workflow/index.d.ts +6 -1
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +4 -0
- package/dist/workflow/index.js.map +1 -1
- package/dist-cjs/core/BytecodeChecker.js +526 -0
- package/dist-cjs/core/BytecodeChecker.js.map +1 -0
- package/dist-cjs/core/legacyProxyArtifact.js +42 -0
- package/dist-cjs/core/legacyProxyArtifact.js.map +1 -0
- package/dist-cjs/core/preparation/artifacts.js +11 -4
- package/dist-cjs/core/preparation/artifacts.js.map +1 -1
- package/dist-cjs/core/preparation/evm.js +105 -32
- package/dist-cjs/core/preparation/evm.js.map +1 -1
- package/dist-cjs/core/preparation/evmManifestSync.js +155 -0
- package/dist-cjs/core/preparation/evmManifestSync.js.map +1 -0
- package/dist-cjs/core/preparation/index.js +3 -3
- package/dist-cjs/core/preparation/index.js.map +1 -1
- package/dist-cjs/core/preparation/manifest.js +23 -28
- package/dist-cjs/core/preparation/manifest.js.map +1 -1
- package/dist-cjs/core/preparation/normalize.js +14 -9
- package/dist-cjs/core/preparation/normalize.js.map +1 -1
- package/dist-cjs/custody/hardhat-runtime.js +2 -0
- package/dist-cjs/custody/hardhat-runtime.js.map +1 -1
- package/dist-cjs/custody/hardhat.js +3 -1
- package/dist-cjs/custody/hardhat.js.map +1 -1
- package/dist-cjs/custody/index.js +3 -1
- package/dist-cjs/custody/index.js.map +1 -1
- package/dist-cjs/custody/provider-wait.js +81 -0
- package/dist-cjs/custody/provider-wait.js.map +1 -0
- package/dist-cjs/delivery/policy.js +29 -0
- package/dist-cjs/delivery/policy.js.map +1 -0
- package/dist-cjs/sync/index.js +8 -0
- package/dist-cjs/sync/index.js.map +1 -1
- package/dist-cjs/workflow/index.js +12 -1
- package/dist-cjs/workflow/index.js.map +1 -1
- package/dist-runtime/config/openzeppelin.d.ts +2 -1
- package/dist-runtime/config/openzeppelin.js +2 -19
- package/dist-runtime/config/openzeppelin.js.map +1 -1
- package/dist-runtime/delivery/abi.d.ts +14 -0
- package/dist-runtime/delivery/abi.js +161 -0
- package/dist-runtime/delivery/abi.js.map +1 -0
- package/dist-runtime/delivery/aggregate-bootstrap.d.ts +12 -0
- package/dist-runtime/delivery/aggregate-bootstrap.js +40 -0
- package/dist-runtime/delivery/aggregate-bootstrap.js.map +1 -0
- package/dist-runtime/delivery/aggregate-channel.d.ts +28 -0
- package/dist-runtime/delivery/aggregate-channel.js +155 -0
- package/dist-runtime/delivery/aggregate-channel.js.map +1 -0
- package/dist-runtime/delivery/aggregate-inputs.d.ts +168 -0
- package/dist-runtime/delivery/aggregate-inputs.js +57 -0
- package/dist-runtime/delivery/aggregate-inputs.js.map +1 -0
- package/dist-runtime/delivery/aggregate-source.d.ts +25 -0
- package/dist-runtime/delivery/aggregate-source.js +79 -0
- package/dist-runtime/delivery/aggregate-source.js.map +1 -0
- package/dist-runtime/delivery/aggregate-worker.d.ts +1 -0
- package/dist-runtime/delivery/aggregate-worker.js +191 -0
- package/dist-runtime/delivery/aggregate-worker.js.map +1 -0
- package/dist-runtime/delivery/aggregate.d.ts +51 -0
- package/dist-runtime/delivery/aggregate.js +190 -0
- package/dist-runtime/delivery/aggregate.js.map +1 -0
- package/dist-runtime/delivery/bindings.d.ts +21 -0
- package/dist-runtime/delivery/bindings.js +53 -0
- package/dist-runtime/delivery/bindings.js.map +1 -0
- package/dist-runtime/delivery/check-code.d.ts +19 -0
- package/dist-runtime/delivery/check-code.js +63 -0
- package/dist-runtime/delivery/check-code.js.map +1 -0
- package/dist-runtime/delivery/closure-format.d.ts +77 -0
- package/dist-runtime/delivery/closure-format.js +225 -0
- package/dist-runtime/delivery/closure-format.js.map +1 -0
- package/dist-runtime/delivery/codec-pin.d.ts +2 -0
- package/dist-runtime/delivery/codec-pin.js +7 -0
- package/dist-runtime/delivery/codec-pin.js.map +1 -0
- package/dist-runtime/delivery/codec.d.ts +19 -0
- package/dist-runtime/delivery/codec.js +73 -0
- package/dist-runtime/delivery/codec.js.map +1 -0
- package/dist-runtime/delivery/compiler-dependency-pins.d.ts +7 -0
- package/dist-runtime/delivery/compiler-dependency-pins.js +1689 -0
- package/dist-runtime/delivery/compiler-dependency-pins.js.map +1 -0
- package/dist-runtime/delivery/compiler-files.d.ts +40 -0
- package/dist-runtime/delivery/compiler-files.js +220 -0
- package/dist-runtime/delivery/compiler-files.js.map +1 -0
- package/dist-runtime/delivery/compiler-io.d.ts +2 -0
- package/dist-runtime/delivery/compiler-io.js +13 -0
- package/dist-runtime/delivery/compiler-io.js.map +1 -0
- package/dist-runtime/delivery/compiler-pins.d.ts +10 -0
- package/dist-runtime/delivery/compiler-pins.js +147 -0
- package/dist-runtime/delivery/compiler-pins.js.map +1 -0
- package/dist-runtime/delivery/compiler.d.ts +188 -0
- package/dist-runtime/delivery/compiler.js +850 -0
- package/dist-runtime/delivery/compiler.js.map +1 -0
- package/dist-runtime/delivery/config.d.ts +48 -0
- package/dist-runtime/delivery/config.js +99 -0
- package/dist-runtime/delivery/config.js.map +1 -0
- package/dist-runtime/delivery/configuration-definition.d.ts +22 -0
- package/dist-runtime/delivery/configuration-definition.js +316 -0
- package/dist-runtime/delivery/configuration-definition.js.map +1 -0
- package/dist-runtime/delivery/configuration-hre.d.ts +17 -0
- package/dist-runtime/delivery/configuration-hre.js +198 -0
- package/dist-runtime/delivery/configuration-hre.js.map +1 -0
- package/dist-runtime/delivery/configuration-runtime.d.ts +36 -0
- package/dist-runtime/delivery/configuration-runtime.js +248 -0
- package/dist-runtime/delivery/configuration-runtime.js.map +1 -0
- package/dist-runtime/delivery/configuration.d.ts +35 -0
- package/dist-runtime/delivery/configuration.js +83 -0
- package/dist-runtime/delivery/configuration.js.map +1 -0
- package/dist-runtime/delivery/create2.d.ts +3 -0
- package/dist-runtime/delivery/create2.js +48 -0
- package/dist-runtime/delivery/create2.js.map +1 -0
- package/dist-runtime/delivery/custom-closure.d.ts +27 -0
- package/dist-runtime/delivery/custom-closure.js +818 -0
- package/dist-runtime/delivery/custom-closure.js.map +1 -0
- package/dist-runtime/delivery/custom-format.d.ts +35 -0
- package/dist-runtime/delivery/custom-format.js +383 -0
- package/dist-runtime/delivery/custom-format.js.map +1 -0
- package/dist-runtime/delivery/custom.d.ts +32 -0
- package/dist-runtime/delivery/custom.js +158 -0
- package/dist-runtime/delivery/custom.js.map +1 -0
- package/dist-runtime/delivery/data.d.ts +7 -0
- package/dist-runtime/delivery/data.js +86 -0
- package/dist-runtime/delivery/data.js.map +1 -0
- package/dist-runtime/delivery/development.d.ts +91 -0
- package/dist-runtime/delivery/development.js +395 -0
- package/dist-runtime/delivery/development.js.map +1 -0
- package/dist-runtime/delivery/engine.d.ts +9 -0
- package/dist-runtime/delivery/engine.js +23 -0
- package/dist-runtime/delivery/engine.js.map +1 -0
- package/dist-runtime/delivery/eoa-observation.d.ts +43 -0
- package/dist-runtime/delivery/eoa-observation.js +145 -0
- package/dist-runtime/delivery/eoa-observation.js.map +1 -0
- package/dist-runtime/delivery/eoa-signed.d.ts +2 -0
- package/dist-runtime/delivery/eoa-signed.js +74 -0
- package/dist-runtime/delivery/eoa-signed.js.map +1 -0
- package/dist-runtime/delivery/eoa.d.ts +81 -0
- package/dist-runtime/delivery/eoa.js +274 -0
- package/dist-runtime/delivery/eoa.js.map +1 -0
- package/dist-runtime/delivery/execution-db.d.ts +20 -0
- package/dist-runtime/delivery/execution-db.js +153 -0
- package/dist-runtime/delivery/execution-db.js.map +1 -0
- package/dist-runtime/delivery/execution-files.d.ts +9 -0
- package/dist-runtime/delivery/execution-files.js +138 -0
- package/dist-runtime/delivery/execution-files.js.map +1 -0
- package/dist-runtime/delivery/execution-model.d.ts +56 -0
- package/dist-runtime/delivery/execution-model.js +66 -0
- package/dist-runtime/delivery/execution-model.js.map +1 -0
- package/dist-runtime/delivery/execution-store.d.ts +48 -0
- package/dist-runtime/delivery/execution-store.js +361 -0
- package/dist-runtime/delivery/execution-store.js.map +1 -0
- package/dist-runtime/delivery/existing-code.d.ts +37 -0
- package/dist-runtime/delivery/existing-code.js +75 -0
- package/dist-runtime/delivery/existing-code.js.map +1 -0
- package/dist-runtime/delivery/export.d.ts +51 -0
- package/dist-runtime/delivery/export.js +69 -0
- package/dist-runtime/delivery/export.js.map +1 -0
- package/dist-runtime/delivery/forkAudit.d.ts +119 -0
- package/dist-runtime/delivery/forkAudit.js +473 -0
- package/dist-runtime/delivery/forkAudit.js.map +1 -0
- package/dist-runtime/delivery/hardhat.d.ts +3 -0
- package/dist-runtime/delivery/hardhat.js +45 -0
- package/dist-runtime/delivery/hardhat.js.map +1 -0
- package/dist-runtime/delivery/history-registration.d.ts +2 -0
- package/dist-runtime/delivery/history-registration.js +17 -0
- package/dist-runtime/delivery/history-registration.js.map +1 -0
- package/dist-runtime/delivery/identities.d.ts +22 -0
- package/dist-runtime/delivery/identities.js +97 -0
- package/dist-runtime/delivery/identities.js.map +1 -0
- package/dist-runtime/delivery/input-files.d.ts +5 -0
- package/dist-runtime/delivery/input-files.js +70 -0
- package/dist-runtime/delivery/input-files.js.map +1 -0
- package/dist-runtime/delivery/inputs.d.ts +62 -0
- package/dist-runtime/delivery/inputs.js +187 -0
- package/dist-runtime/delivery/inputs.js.map +1 -0
- package/dist-runtime/delivery/journal.d.ts +35 -0
- package/dist-runtime/delivery/journal.js +270 -0
- package/dist-runtime/delivery/journal.js.map +1 -0
- package/dist-runtime/delivery/manifest.d.ts +14 -0
- package/dist-runtime/delivery/manifest.js +68 -0
- package/dist-runtime/delivery/manifest.js.map +1 -0
- package/dist-runtime/delivery/materialization.d.ts +20 -0
- package/dist-runtime/delivery/materialization.js +138 -0
- package/dist-runtime/delivery/materialization.js.map +1 -0
- package/dist-runtime/delivery/observations.d.ts +31 -0
- package/dist-runtime/delivery/observations.js +38 -0
- package/dist-runtime/delivery/observations.js.map +1 -0
- package/dist-runtime/delivery/parameters.d.ts +53 -0
- package/dist-runtime/delivery/parameters.js +257 -0
- package/dist-runtime/delivery/parameters.js.map +1 -0
- package/dist-runtime/delivery/pending.d.ts +70 -0
- package/dist-runtime/delivery/pending.js +99 -0
- package/dist-runtime/delivery/pending.js.map +1 -0
- package/dist-runtime/delivery/plan.d.ts +50 -0
- package/dist-runtime/delivery/plan.js +209 -0
- package/dist-runtime/delivery/plan.js.map +1 -0
- package/dist-runtime/delivery/planning.d.ts +81 -0
- package/dist-runtime/delivery/planning.js +302 -0
- package/dist-runtime/delivery/planning.js.map +1 -0
- package/dist-runtime/delivery/policy.d.ts +4 -0
- package/dist-runtime/delivery/policy.js +9 -0
- package/dist-runtime/delivery/policy.js.map +1 -0
- package/dist-runtime/delivery/preparation.d.ts +6 -0
- package/dist-runtime/delivery/preparation.js +158 -0
- package/dist-runtime/delivery/preparation.js.map +1 -0
- package/dist-runtime/delivery/production-environment.d.ts +2 -0
- package/dist-runtime/delivery/production-environment.js +12 -0
- package/dist-runtime/delivery/production-environment.js.map +1 -0
- package/dist-runtime/delivery/production-finalization.d.ts +86 -0
- package/dist-runtime/delivery/production-finalization.js +278 -0
- package/dist-runtime/delivery/production-finalization.js.map +1 -0
- package/dist-runtime/delivery/production.d.ts +461 -0
- package/dist-runtime/delivery/production.js +396 -0
- package/dist-runtime/delivery/production.js.map +1 -0
- package/dist-runtime/delivery/project-files.d.ts +8 -0
- package/dist-runtime/delivery/project-files.js +82 -0
- package/dist-runtime/delivery/project-files.js.map +1 -0
- package/dist-runtime/delivery/project.d.ts +15 -0
- package/dist-runtime/delivery/project.js +157 -0
- package/dist-runtime/delivery/project.js.map +1 -0
- package/dist-runtime/delivery/protocol.d.ts +49 -0
- package/dist-runtime/delivery/protocol.js +112 -0
- package/dist-runtime/delivery/protocol.js.map +1 -0
- package/dist-runtime/delivery/references.d.ts +19 -0
- package/dist-runtime/delivery/references.js +84 -0
- package/dist-runtime/delivery/references.js.map +1 -0
- package/dist-runtime/delivery/release-graph.d.ts +93 -0
- package/dist-runtime/delivery/release-graph.js +106 -0
- package/dist-runtime/delivery/release-graph.js.map +1 -0
- package/dist-runtime/delivery/release-history-capture.d.ts +7 -0
- package/dist-runtime/delivery/release-history-capture.js +76 -0
- package/dist-runtime/delivery/release-history-capture.js.map +1 -0
- package/dist-runtime/delivery/release-history.d.ts +43 -0
- package/dist-runtime/delivery/release-history.js +246 -0
- package/dist-runtime/delivery/release-history.js.map +1 -0
- package/dist-runtime/delivery/release.d.ts +172 -0
- package/dist-runtime/delivery/release.js +209 -0
- package/dist-runtime/delivery/release.js.map +1 -0
- package/dist-runtime/delivery/safe-manifest.d.ts +9 -0
- package/dist-runtime/delivery/safe-manifest.js +13 -0
- package/dist-runtime/delivery/safe-manifest.js.map +1 -0
- package/dist-runtime/delivery/safe-observation.d.ts +30 -0
- package/dist-runtime/delivery/safe-observation.js +487 -0
- package/dist-runtime/delivery/safe-observation.js.map +1 -0
- package/dist-runtime/delivery/safe-prepare.d.ts +13 -0
- package/dist-runtime/delivery/safe-prepare.js +81 -0
- package/dist-runtime/delivery/safe-prepare.js.map +1 -0
- package/dist-runtime/delivery/safe.d.ts +91 -0
- package/dist-runtime/delivery/safe.js +243 -0
- package/dist-runtime/delivery/safe.js.map +1 -0
- package/dist-runtime/delivery/same-fork-baseline.d.ts +8 -0
- package/dist-runtime/delivery/same-fork-baseline.js +20 -0
- package/dist-runtime/delivery/same-fork-baseline.js.map +1 -0
- package/dist-runtime/delivery/setup.d.ts +31 -0
- package/dist-runtime/delivery/setup.js +215 -0
- package/dist-runtime/delivery/setup.js.map +1 -0
- package/dist-runtime/delivery/source.d.ts +41 -0
- package/dist-runtime/delivery/source.js +137 -0
- package/dist-runtime/delivery/source.js.map +1 -0
- package/dist-runtime/delivery/target-fields.d.ts +2 -0
- package/dist-runtime/delivery/target-fields.js +11 -0
- package/dist-runtime/delivery/target-fields.js.map +1 -0
- package/dist-runtime/delivery/validation.d.ts +9 -0
- package/dist-runtime/delivery/validation.js +150 -0
- package/dist-runtime/delivery/validation.js.map +1 -0
- package/dist-runtime/delivery/verification.d.ts +16 -0
- package/dist-runtime/delivery/verification.js +65 -0
- package/dist-runtime/delivery/verification.js.map +1 -0
- package/dist-runtime/migrate.js +1 -0
- package/dist-runtime/migrate.js.map +1 -1
- package/dist-runtime/miner/binary.d.ts +2 -0
- package/dist-runtime/miner/binary.js +54 -0
- package/dist-runtime/miner/binary.js.map +1 -0
- package/dist-runtime/miner/cli.d.ts +1 -0
- package/dist-runtime/miner/cli.js +131 -0
- package/dist-runtime/miner/cli.js.map +1 -0
- package/dist-runtime/miner/index.d.ts +5 -0
- package/dist-runtime/miner/index.js +13 -0
- package/dist-runtime/miner/index.js.map +1 -0
- package/dist-runtime/miner/request.d.ts +7 -0
- package/dist-runtime/miner/request.js +73 -0
- package/dist-runtime/miner/request.js.map +1 -0
- package/dist-runtime/miner/runner.d.ts +2 -0
- package/dist-runtime/miner/runner.js +131 -0
- package/dist-runtime/miner/runner.js.map +1 -0
- package/dist-runtime/miner/types.d.ts +89 -0
- package/dist-runtime/miner/types.js +3 -0
- package/dist-runtime/miner/types.js.map +1 -0
- package/dist-runtime/miner/verify.d.ts +2 -0
- package/dist-runtime/miner/verify.js +75 -0
- package/dist-runtime/miner/verify.js.map +1 -0
- package/dist-runtime/runtime-identity.json +2 -2
- package/dist-runtime/vendor/plan-codec/index.cjs +820 -0
- package/dist-runtime/vendor/plan-codec/index.d.cts +32 -0
- package/dist-runtime/vendor/plan-codec/provenance.json +24 -0
- package/dist-runtime/workflow/engine.d.ts +14 -0
- package/dist-runtime/workflow/engine.js +160 -0
- package/dist-runtime/workflow/engine.js.map +1 -0
- package/dist-runtime/workflow/lib/authority.d.ts +6 -3
- package/dist-runtime/workflow/lib/authority.js.map +1 -1
- package/dist-runtime/workflow/lib/calls.d.ts +1 -1
- package/dist-runtime/workflow/lib/calls.js +43 -34
- package/dist-runtime/workflow/lib/calls.js.map +1 -1
- package/dist-runtime/workflow/lib/canonicalData.d.ts +8 -0
- package/dist-runtime/workflow/lib/canonicalData.js +68 -0
- package/dist-runtime/workflow/lib/canonicalData.js.map +1 -0
- package/dist-runtime/workflow/lib/config.d.ts +3 -1
- package/dist-runtime/workflow/lib/config.js.map +1 -1
- package/dist-runtime/workflow/lib/context.d.ts +76 -0
- package/dist-runtime/workflow/lib/context.js +3 -0
- package/dist-runtime/workflow/lib/context.js.map +1 -0
- package/dist-runtime/workflow/lib/create2.d.ts +1 -1
- package/dist-runtime/workflow/lib/create2.js +9 -12
- package/dist-runtime/workflow/lib/create2.js.map +1 -1
- package/dist-runtime/workflow/lib/deployments.d.ts +5 -5
- package/dist-runtime/workflow/lib/deployments.js +5 -13
- package/dist-runtime/workflow/lib/deployments.js.map +1 -1
- package/dist-runtime/workflow/lib/evidencePorts.d.ts +55 -0
- package/dist-runtime/workflow/lib/evidencePorts.js +3 -0
- package/dist-runtime/workflow/lib/evidencePorts.js.map +1 -0
- package/dist-runtime/workflow/lib/executionPlan.d.ts +4 -42
- package/dist-runtime/workflow/lib/executionPlan.js +15 -210
- package/dist-runtime/workflow/lib/executionPlan.js.map +1 -1
- package/dist-runtime/workflow/lib/gateTool.d.ts +6 -2
- package/dist-runtime/workflow/lib/gateTool.js +20 -10
- package/dist-runtime/workflow/lib/gateTool.js.map +1 -1
- package/dist-runtime/workflow/lib/gateToolSync.d.ts +1 -1
- package/dist-runtime/workflow/lib/gateToolSync.js +3 -2
- package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -1
- package/dist-runtime/workflow/lib/operationNames.d.ts +3 -0
- package/dist-runtime/workflow/lib/operationNames.js +34 -0
- package/dist-runtime/workflow/lib/operationNames.js.map +1 -0
- package/dist-runtime/workflow/lib/parameters.d.ts +1 -1
- package/dist-runtime/workflow/lib/parameters.js +6 -22
- package/dist-runtime/workflow/lib/parameters.js.map +1 -1
- package/dist-runtime/workflow/lib/pendingDeploymentReuse.js +18 -52
- package/dist-runtime/workflow/lib/pendingDeploymentReuse.js.map +1 -1
- package/dist-runtime/workflow/lib/pendingUupsBinding.d.ts +42 -0
- package/dist-runtime/workflow/lib/pendingUupsBinding.js +39 -0
- package/dist-runtime/workflow/lib/pendingUupsBinding.js.map +1 -0
- package/dist-runtime/workflow/lib/plan.d.ts +55 -0
- package/dist-runtime/workflow/lib/plan.js +324 -0
- package/dist-runtime/workflow/lib/plan.js.map +1 -0
- package/dist-runtime/workflow/lib/planCli.d.ts +14 -0
- package/dist-runtime/workflow/lib/planCli.js +279 -0
- package/dist-runtime/workflow/lib/planCli.js.map +1 -0
- package/dist-runtime/workflow/lib/preparationEvidence.d.ts +4 -0
- package/dist-runtime/workflow/lib/preparationEvidence.js +19 -0
- package/dist-runtime/workflow/lib/preparationEvidence.js.map +1 -0
- package/dist-runtime/workflow/lib/proxy.d.ts +3 -2
- package/dist-runtime/workflow/lib/proxy.js +3 -4
- package/dist-runtime/workflow/lib/proxy.js.map +1 -1
- package/dist-runtime/workflow/lib/runtime.d.ts +6 -0
- package/dist-runtime/workflow/lib/runtime.js +48 -0
- package/dist-runtime/workflow/lib/runtime.js.map +1 -0
- package/dist-runtime/workflow/lib/signer.d.ts +3 -2
- package/dist-runtime/workflow/lib/signer.js +18 -18
- package/dist-runtime/workflow/lib/signer.js.map +1 -1
- package/dist-runtime/workflow/lib/simulation.d.ts +13 -6
- package/dist-runtime/workflow/lib/simulation.js +39 -31
- package/dist-runtime/workflow/lib/simulation.js.map +1 -1
- package/dist-runtime/workflow/lib/state.js +3 -3
- package/dist-runtime/workflow/lib/state.js.map +1 -1
- package/dist-runtime/workflow/lib/staticValidation.d.ts +28 -0
- package/dist-runtime/workflow/lib/staticValidation.js +54 -10
- package/dist-runtime/workflow/lib/staticValidation.js.map +1 -1
- package/dist-runtime/workflow/lib/transactionPlanner.d.ts +62 -0
- package/dist-runtime/workflow/lib/transactionPlanner.js +258 -0
- package/dist-runtime/workflow/lib/transactionPlanner.js.map +1 -0
- package/dist-runtime/workflow/lib/typedValue.d.ts +3 -0
- package/dist-runtime/workflow/lib/typedValue.js +76 -0
- package/dist-runtime/workflow/lib/typedValue.js.map +1 -0
- package/dist-runtime/workflow/lib/validation.d.ts +23 -0
- package/dist-runtime/workflow/lib/validation.js +15 -0
- package/dist-runtime/workflow/lib/validation.js.map +1 -0
- package/dist-runtime/workflow/planAdd.d.ts +1 -0
- package/dist-runtime/workflow/planAdd.js +11 -0
- package/dist-runtime/workflow/planAdd.js.map +1 -0
- package/dist-runtime/workflow/planRead.d.ts +1 -0
- package/dist-runtime/workflow/planRead.js +11 -0
- package/dist-runtime/workflow/planRead.js.map +1 -0
- package/dist-runtime/workflow/planStatus.d.ts +1 -0
- package/dist-runtime/workflow/planStatus.js +11 -0
- package/dist-runtime/workflow/planStatus.js.map +1 -0
- package/dist-runtime/workflow/planWrite.d.ts +1 -0
- package/dist-runtime/workflow/planWrite.js +11 -0
- package/dist-runtime/workflow/planWrite.js.map +1 -0
- package/dist-runtime/workflow/run.d.ts +1 -40
- package/dist-runtime/workflow/run.js +68 -136
- package/dist-runtime/workflow/run.js.map +1 -1
- package/dist-runtime/workflow/staticValidate.js +8 -3
- package/dist-runtime/workflow/staticValidate.js.map +1 -1
- package/dist-runtime/workflow/steps/call.d.ts +1 -1
- package/dist-runtime/workflow/steps/check.d.ts +1 -1
- package/dist-runtime/workflow/steps/custom.d.ts +1 -1
- package/dist-runtime/workflow/steps/deploy.d.ts +1 -1
- package/dist-runtime/workflow/steps/deploy.js +57 -55
- package/dist-runtime/workflow/steps/deploy.js.map +1 -1
- package/dist-runtime/workflow/steps/upgrade.d.ts +1 -1
- package/dist-runtime/workflow/steps/upgrade.js +62 -41
- package/dist-runtime/workflow/steps/upgrade.js.map +1 -1
- package/dist-runtime/workflow/steps/view.d.ts +1 -1
- package/docs/compiler-qualification.md +32 -0
- package/docs/configuration-runtime-observation.md +29 -0
- package/docs/create2-miner.md +100 -0
- package/docs/delivery-aggregate.md +27 -0
- package/docs/delivery-custom-input-closure.md +51 -0
- package/docs/delivery-development.md +32 -0
- package/docs/delivery-eoa.md +46 -0
- package/docs/delivery-evm-manifest.md +20 -0
- package/docs/delivery-execution-store.md +33 -0
- package/docs/delivery-inputs.md +46 -0
- package/docs/delivery-parameters.md +65 -0
- package/docs/delivery-planning.md +140 -0
- package/docs/delivery-release.md +65 -0
- package/docs/delivery-safe.md +72 -0
- package/docs/delivery-setup.md +146 -0
- package/docs/delivery-source.md +67 -0
- package/docs/superpowers/plans/2026-09-24-scheme-aware-static-validation.md +193 -0
- package/docs/superpowers/plans/2026-10-28-create2-miner.md +82 -0
- package/package.json +133 -9
- package/resources/create2/LICENSE +21 -0
- package/resources/create2/README.md +9 -0
- package/resources/create2/darwin-arm64/smartflow_miner +0 -0
- package/resources/create2/darwin-x64/smartflow_miner +0 -0
- package/resources/create2/manifest.json +27 -0
- package/runtime/config/openzeppelin.ts +3 -21
- package/runtime/delivery/abi.ts +225 -0
- package/runtime/delivery/aggregate-bootstrap.ts +29 -0
- package/runtime/delivery/aggregate-channel.ts +85 -0
- package/runtime/delivery/aggregate-inputs.ts +39 -0
- package/runtime/delivery/aggregate-source.ts +53 -0
- package/runtime/delivery/aggregate-worker.ts +133 -0
- package/runtime/delivery/aggregate.ts +139 -0
- package/runtime/delivery/bindings.ts +37 -0
- package/runtime/delivery/check-code.ts +38 -0
- package/runtime/delivery/closure-format.ts +350 -0
- package/runtime/delivery/codec-pin.ts +3 -0
- package/runtime/delivery/codec.ts +50 -0
- package/runtime/delivery/compiler-dependency-pins.ts +1685 -0
- package/runtime/delivery/compiler-files.ts +179 -0
- package/runtime/delivery/compiler-io.ts +10 -0
- package/runtime/delivery/compiler-pins.ts +143 -0
- package/runtime/delivery/compiler.ts +700 -0
- package/runtime/delivery/config.ts +93 -0
- package/runtime/delivery/configuration-definition.ts +133 -0
- package/runtime/delivery/configuration-hre.ts +130 -0
- package/runtime/delivery/configuration-runtime.ts +163 -0
- package/runtime/delivery/configuration.ts +64 -0
- package/runtime/delivery/create2.ts +57 -0
- package/runtime/delivery/custom-closure.ts +993 -0
- package/runtime/delivery/custom-format.ts +464 -0
- package/runtime/delivery/custom.ts +219 -0
- package/runtime/delivery/data.ts +94 -0
- package/runtime/delivery/development.ts +262 -0
- package/runtime/delivery/engine.ts +29 -0
- package/runtime/delivery/eoa-observation.ts +106 -0
- package/runtime/delivery/eoa-signed.ts +55 -0
- package/runtime/delivery/eoa.ts +288 -0
- package/runtime/delivery/execution-db.ts +131 -0
- package/runtime/delivery/execution-files.ts +135 -0
- package/runtime/delivery/execution-model.ts +102 -0
- package/runtime/delivery/execution-store.ts +411 -0
- package/runtime/delivery/existing-code.ts +44 -0
- package/runtime/delivery/export.ts +99 -0
- package/runtime/delivery/forkAudit.ts +620 -0
- package/runtime/delivery/hardhat.ts +38 -0
- package/runtime/delivery/history-registration.ts +10 -0
- package/runtime/delivery/identities.ts +132 -0
- package/runtime/delivery/input-files.ts +46 -0
- package/runtime/delivery/inputs.ts +197 -0
- package/runtime/delivery/journal.ts +201 -0
- package/runtime/delivery/manifest.ts +54 -0
- package/runtime/delivery/materialization.ts +53 -0
- package/runtime/delivery/observations.ts +60 -0
- package/runtime/delivery/parameters.ts +349 -0
- package/runtime/delivery/pending.ts +98 -0
- package/runtime/delivery/plan.ts +337 -0
- package/runtime/delivery/planning.ts +397 -0
- package/runtime/delivery/policy.ts +9 -0
- package/runtime/delivery/preparation.ts +224 -0
- package/runtime/delivery/production-environment.ts +6 -0
- package/runtime/delivery/production-finalization.ts +172 -0
- package/runtime/delivery/production.ts +375 -0
- package/runtime/delivery/project-files.ts +58 -0
- package/runtime/delivery/project.ts +117 -0
- package/runtime/delivery/protocol.ts +94 -0
- package/runtime/delivery/references.ts +106 -0
- package/runtime/delivery/release-graph.ts +49 -0
- package/runtime/delivery/release-history-capture.ts +32 -0
- package/runtime/delivery/release-history.ts +120 -0
- package/runtime/delivery/release.ts +128 -0
- package/runtime/delivery/safe-manifest.ts +11 -0
- package/runtime/delivery/safe-observation.ts +626 -0
- package/runtime/delivery/safe-prepare.ts +101 -0
- package/runtime/delivery/safe.ts +344 -0
- package/runtime/delivery/same-fork-baseline.ts +16 -0
- package/runtime/delivery/setup.ts +172 -0
- package/runtime/delivery/source.ts +130 -0
- package/runtime/delivery/target-fields.ts +7 -0
- package/runtime/delivery/validation.ts +247 -0
- package/runtime/delivery/verification.ts +47 -0
- package/runtime/migrate.ts +1 -0
- package/runtime/miner/binary.ts +41 -0
- package/runtime/miner/cli.ts +87 -0
- package/runtime/miner/index.ts +5 -0
- package/runtime/miner/request.ts +54 -0
- package/runtime/miner/runner.ts +90 -0
- package/runtime/miner/types.ts +71 -0
- package/runtime/miner/verify.ts +61 -0
- package/runtime/vendor/plan-codec/index.cjs +820 -0
- package/runtime/vendor/plan-codec/index.d.cts +32 -0
- package/runtime/vendor/plan-codec/provenance.json +24 -0
- package/runtime/workflow/engine.ts +174 -0
- package/runtime/workflow/lib/authority.ts +3 -3
- package/runtime/workflow/lib/calls.ts +46 -37
- package/runtime/workflow/lib/canonicalData.ts +45 -0
- package/runtime/workflow/lib/config.ts +1 -1
- package/runtime/workflow/lib/context.ts +76 -0
- package/runtime/workflow/lib/create2.ts +10 -12
- package/runtime/workflow/lib/deployments.ts +6 -14
- package/runtime/workflow/lib/evidencePorts.ts +20 -0
- package/runtime/workflow/lib/executionPlan.ts +17 -268
- package/runtime/workflow/lib/gateTool.ts +20 -8
- package/runtime/workflow/lib/gateToolSync.ts +3 -3
- package/runtime/workflow/lib/operationNames.ts +32 -0
- package/runtime/workflow/lib/parameters.ts +4 -21
- package/runtime/workflow/lib/pendingDeploymentReuse.ts +4 -56
- package/runtime/workflow/lib/pendingUupsBinding.ts +43 -0
- package/runtime/workflow/lib/plan.ts +334 -0
- package/runtime/workflow/lib/planCli.ts +279 -0
- package/runtime/workflow/lib/preparationEvidence.ts +14 -0
- package/runtime/workflow/lib/proxy.ts +5 -3
- package/runtime/workflow/lib/runtime.ts +46 -0
- package/runtime/workflow/lib/signer.ts +8 -5
- package/runtime/workflow/lib/simulation.ts +41 -17
- package/runtime/workflow/lib/state.ts +3 -3
- package/runtime/workflow/lib/staticValidation.ts +92 -11
- package/runtime/workflow/lib/transactionPlanner.ts +314 -0
- package/runtime/workflow/lib/typedValue.ts +46 -0
- package/runtime/workflow/lib/validation.ts +50 -0
- package/runtime/workflow/planAdd.ts +8 -0
- package/runtime/workflow/planRead.ts +8 -0
- package/runtime/workflow/planStatus.ts +8 -0
- package/runtime/workflow/planWrite.ts +8 -0
- package/runtime/workflow/run.ts +41 -174
- package/runtime/workflow/staticValidate.ts +8 -3
- package/runtime/workflow/steps/call.ts +1 -1
- package/runtime/workflow/steps/check.ts +1 -1
- package/runtime/workflow/steps/custom.ts +1 -1
- package/runtime/workflow/steps/deploy.ts +57 -58
- package/runtime/workflow/steps/upgrade.ts +69 -46
- package/runtime/workflow/steps/view.ts +1 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Official Safe 1.4.1 delivery
|
|
2
|
+
|
|
3
|
+
The supported adapter is `safe-1.4.1-call-only/v1`: the published ordinary Safe
|
|
4
|
+
singleton and SafeProxy, with either a single CALL or DELEGATECALL to the official
|
|
5
|
+
MultiSendCallOnly containing only CALL entries. SafeL2, modules, ordinary MultiSend,
|
|
6
|
+
arbitrary delegatecall and nested Safe execution are unsupported. Reviewed runtime
|
|
7
|
+
hashes are code-owned; caller-provided hashes cannot add implementations.
|
|
8
|
+
|
|
9
|
+
The developer delivers this optional target policy in the existing `config.yaml`.
|
|
10
|
+
It is included in the captured release inputs, with no production business override:
|
|
11
|
+
|
|
12
|
+
```yaml
|
|
13
|
+
production:
|
|
14
|
+
environment: prod
|
|
15
|
+
finality: { confirmations: 1 }
|
|
16
|
+
openzeppelin: { manifestDir: .openzeppelin }
|
|
17
|
+
safe:
|
|
18
|
+
adapter: safe-1.4.1-call-only/v1
|
|
19
|
+
multiSendCallOnly: '0x<deployed official MultiSendCallOnly address>'
|
|
20
|
+
safeTxGas: '500000'
|
|
21
|
+
submitterPolicy: { kind: any }
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Safe address is the current original plan executor. After final plan preparation,
|
|
25
|
+
the host retains READY, exits the project simulation, and starts a separate static
|
|
26
|
+
worker. Only that worker receives the observation provider and durable store. It
|
|
27
|
+
checks the actual proxy/singleton/batch identities and nonce at one canonical block
|
|
28
|
+
and freezes the current contiguous external segment, complete Safe envelope,
|
|
29
|
+
transaction IDs, EIP-712 hash, explicit finality and zero-refund policy. It never
|
|
30
|
+
allocates a future segment's nonce. Existing published bindings are immutable;
|
|
31
|
+
consumed nonces require reconciliation of the original hash, not rebasing.
|
|
32
|
+
|
|
33
|
+
Pure renderers perform zero provider, signer or broadcast calls. JSON and Markdown
|
|
34
|
+
contain the full plan and frozen Safe payload, with signatures left for external
|
|
35
|
+
collection. An unprepared current Safe segment reports `preparation-required` and
|
|
36
|
+
still exports the complete ordinary plan. Later segments await preparation when
|
|
37
|
+
executable. The existing host export boundary separately revalidates completed
|
|
38
|
+
progress using readonly RPC; this is distinct from pure rendering.
|
|
39
|
+
|
|
40
|
+
Reconciliation requires an explicit original outer transaction hash. The collector
|
|
41
|
+
strictly checks all execTransaction fields, ABI canonicality, packed CALL lengths,
|
|
42
|
+
values and complete range coverage. Signatures may vary. The outer sender can be a
|
|
43
|
+
distinct relayer under the sealed any-relayer policy. Base gas/gas price are zero,
|
|
44
|
+
gas token/refund receiver are zero addresses, and actual payment must be zero.
|
|
45
|
+
Exactly the expected SafeTxHash ExecutionSuccess, canonical inclusion and finality
|
|
46
|
+
are required. ExecutionFailure never advances, even when receipt status is one.
|
|
47
|
+
One verified Safe batch is committed atomically to its exact inner indices. The
|
|
48
|
+
EOA duplicate-hash rule is unchanged, and only a complete finalized prefix allows
|
|
49
|
+
the original operator continuation. Successful calls do not replace business
|
|
50
|
+
assertions or production finalization.
|
|
51
|
+
|
|
52
|
+
The finite evidence collector supports Geth 1.15.11 prestateTracer plus its default
|
|
53
|
+
opcode trace. It requests its own fixed options for the same hash, checks full
|
|
54
|
+
address-keyed transaction-time code and proxy slot zero, binds proxy pc 28 SLOAD /
|
|
55
|
+
pc 94 DELEGATECALL and singleton/batch call frames, and tracks CALL versus
|
|
56
|
+
DELEGATECALL storage context. Missing, malformed, incomplete, oversized or
|
|
57
|
+
unavailable evidence is refused. No VERSION/block-end identity fallback exists.
|
|
58
|
+
Type-4 authorization transactions and delegation-designator assets are unsupported.
|
|
59
|
+
The client's declared version is a compatibility gate, not remote binary attestation;
|
|
60
|
+
ordinary configured-RPC trust applies. The host limits both options and response
|
|
61
|
+
size and retains its request/scope/effect guards.
|
|
62
|
+
|
|
63
|
+
Local acceptance uses the already prepared official native Geth 1.15.11 source
|
|
64
|
+
build, dev mode with Prague enabled, and vendored official Safe artifacts. Set
|
|
65
|
+
`GATE_SAFE_GETH_ACCEPTANCE=1` for `node --test test/delivery-safe-geth.test.mjs` after
|
|
66
|
+
starting the pinned isolated fixture at 127.0.0.1:19545. The fixture retains its
|
|
67
|
+
own deployment state under `/tmp/gate-r5-20261023-implementation`; it never clears
|
|
68
|
+
historic accepted chains. The gated suite covers real owners/signatures, value,
|
|
69
|
+
relayers, batch failures, extra calls, same-block fake switch/restore, later-index
|
|
70
|
+
execution, reentry/slot-zero refusal, malformed provider evidence and original
|
|
71
|
+
operator continuation. Local confirmations/finalized tags do not prove production
|
|
72
|
+
consensus finality. R6 owns the final frozen-version packaged lifecycle.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Core 项目的按需部署接入
|
|
2
|
+
|
|
3
|
+
`gate-delivery` 只接受已完成生成的 `gateflow-evm-core@1` / `profile: core` 项目。
|
|
4
|
+
它不迁移 full/旧模板,不复制 workflow 源码,也不管理项目的 RPC 网络目录。
|
|
5
|
+
正常的 `compile`、`test`、`typecheck`、`clean` 在接入前后均不需要 `config.yaml`、钱包或外部 RPC。
|
|
6
|
+
|
|
7
|
+
## 本地接入
|
|
8
|
+
|
|
9
|
+
创建 JSON 选项文件,例如:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"workspaceRoot": "/absolute/workspace",
|
|
14
|
+
"projectRoot": "contracts",
|
|
15
|
+
"toolPackage": "/absolute/build/gate-evm-tools-1.0.29.tgz",
|
|
16
|
+
"targets": [
|
|
17
|
+
{
|
|
18
|
+
"network": "sepolia",
|
|
19
|
+
"environment": "dev",
|
|
20
|
+
"finality": { "confirmations": 1 },
|
|
21
|
+
"create2": {
|
|
22
|
+
"scheme": "evm",
|
|
23
|
+
"factory": "0x1111111111111111111111111111111111111111"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
工厂地址只是格式示例,应填写项目实际设施地址。`create2`、
|
|
31
|
+
`uups: { placeholderImplementation }` 和 `multicall: { controlledMulticall }`
|
|
32
|
+
都可省略;call/view/check 类项目无需部署设施。提供设施配置时,setup 和 `loadDeliveryTarget` 均校验其地址为非零 EVM 地址。
|
|
33
|
+
`loadDeliveryTarget` 保留 YAML 中的额外人工字段,不采用 setup 选项的严格字段白名单。具体操作需要哪些设施由执行输入验证决定。
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
gate-delivery inspect --options delivery-options.json
|
|
37
|
+
gate-delivery setup --options delivery-options.json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`inspect` 是只读诊断。`setup` 完成冲突预检后,仅补充缺失的选中目标配置、
|
|
41
|
+
缺失的 `contractInfo.json`(内容为 `{}`)和所需的开发依赖声明。
|
|
42
|
+
已有 YAML 注释、其他目标、自定义字段、业务代码、注册表、Git 元数据和生成器 marker 均保留。
|
|
43
|
+
已有值与明确请求冲突、路径包含 symlink、模板不受支持时,在写入前拒绝。
|
|
44
|
+
|
|
45
|
+
依赖未就绪时返回 `dependencies_pending`,CLI 退出码为 `2`;不会安装依赖或添加失败的插件 import。
|
|
46
|
+
用户在目标项目显式安装依赖后再次运行 setup,才会把
|
|
47
|
+
`import "gate-evm-tools/delivery-hardhat";` 放在其他 import 之前。
|
|
48
|
+
重复 setup 不改写已满足要求的文件。退出码 `0` / `ready` 只表示接入完成,
|
|
49
|
+
不表示 source 已验证、RPC 已连接、部署获准或合约已部署。`setup_pending` 是 inspect 发现仍有配置修改待完成。
|
|
50
|
+
|
|
51
|
+
当前未发布的 API 应使用显式本地构建 tarball:在 GateTool 仓库运行 `npm run build` 和
|
|
52
|
+
`npm pack --pack-destination /absolute/build`,并把 tarball 绝对路径写入 `toolPackage`。
|
|
53
|
+
该字段可省略,但仅有 `gate-evm-tools@1.0.29` 版本号不能证明 API 已存在;诊断会检查本地 exports。
|
|
54
|
+
如 package.json 已声明另一来源,先显式调整该依赖,不会静默覆盖人工声明。
|
|
55
|
+
|
|
56
|
+
验证的 core 工具链是 Hardhat `2.26.3`、ethers `6.15.0`、hardhat-ethers `3.1.0`、
|
|
57
|
+
TypeScript `5.9.3`、ts-node `10.9.2`。按需声明 OZ hardhat-upgrades `3.9.1`、
|
|
58
|
+
upgrades-core `1.44.2`、contracts `5.4.0`;业务 Solidity 源码引用 contracts-upgradeable 时才声明 `5.4.0`。
|
|
59
|
+
诊断检查实际本地包、delivery exports 和本地 npm 依赖树,不把祖先目录的依赖当作本项目就绪。
|
|
60
|
+
不添加 toolbox、zkSync、Foundry、patch-package 或 postinstall 补丁。
|
|
61
|
+
|
|
62
|
+
网络仍只定义在项目 `hardhat.config.ts`。接入读取静态 const/default-export 对象中的选中网络,
|
|
63
|
+
支持字面 URL、`process.env.NAME`、`||` 和 `??`;动态计算的选中网络需要人工改为可验证的静态定义。业务依赖扫描遵循静态 `paths.sources`(默认 `contracts`),且只读取项目内目录。
|
|
64
|
+
诊断只输出 network、chainId 和 rpcConfigured,不输出解析后的 RPC URL。
|
|
65
|
+
可通过项目生成器或手工增加网络,无需发布 GateTool。
|
|
66
|
+
|
|
67
|
+
## 公共 API
|
|
68
|
+
|
|
69
|
+
- `gate-evm-tools/delivery-setup`:`inspectDeliveryProject(options)`、`setupDeliveryProject(options)`、
|
|
70
|
+
`readProjectNetworkSnapshots(root, aliases, env?)`、`loadDeliveryTarget(root, network, environment?)`、
|
|
71
|
+
`configureDeliveryEnvironment({ root, env?, argv? })`。
|
|
72
|
+
- `gate-evm-tools/delivery-protocol`:`parseDeliveryRequest(input)`、
|
|
73
|
+
`validateDeliveryRpc(input, selectedProjectSnapshot, loadProvider)` 及请求类型。
|
|
74
|
+
- `gate-evm-tools/delivery-hardhat`:项目配置的薄插件入口,带 Hardhat ethers/upgrades 类型扩展。
|
|
75
|
+
- `gate-evm-tools/delivery-policy`:不加载 OZ 的共享 manifest 策略。
|
|
76
|
+
|
|
77
|
+
`readProjectNetworkSnapshots` 提供给本地 provider 装配使用,包含解析后的 URL,
|
|
78
|
+
不要把它写入交付文件或日志。`validateDeliveryRpc` 首先校验请求语法,之后才调用
|
|
79
|
+
注入的 `loadProvider(snapshot)`;provider 的 `request({ method: "eth_chainId", params: [] })`
|
|
80
|
+
必须返回与项目快照一致的真实 chain ID。RPC 失败或链 ID 不符直接拒绝,没有备用网络。
|
|
81
|
+
|
|
82
|
+
## 显式 runtime 请求协议
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"version": 1,
|
|
87
|
+
"environment": "dev",
|
|
88
|
+
"purpose": "dev-execution",
|
|
89
|
+
"mode": "simulate",
|
|
90
|
+
"network": "sepolia",
|
|
91
|
+
"sourceRef": {
|
|
92
|
+
"path": "handoff/task-1/handoff.md",
|
|
93
|
+
"taskId": "task-1",
|
|
94
|
+
"planKey": "rollout",
|
|
95
|
+
"rev": 1
|
|
96
|
+
},
|
|
97
|
+
"devSigner": "0x2222222222222222222222222222222222222222"
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
所有字段严格校验,不存在默认 execute。environment、purpose、mode 必须是字符串,不接受数组或对象的隐式转换。
|
|
102
|
+
sourceRef.path 必须是 workspace-relative POSIX 路径,releaseRef.path 必须是 project-relative POSIX 路径;
|
|
103
|
+
ID、network alias 和路径禁止 traversal/prototype 名称。
|
|
104
|
+
|
|
105
|
+
| purpose | environment | mode | 额外约束 |
|
|
106
|
+
| --- | --- | --- | --- |
|
|
107
|
+
| dev-execution | dev | simulate / execute / reconcile / verify | devSigner;禁止 operator |
|
|
108
|
+
| prod-qualification | prod | simulate / verify | operator;simulate 必需 fork `{ blockNumber, blockHash, readOnly: true }`;verify 不带 fork/releaseRef,只读、不广播 |
|
|
109
|
+
| prod-execution | prod | simulate / execute / export-calldata / reconcile / verify | operator;必需 releaseRef `{ path, releaseId, inputsHash }` |
|
|
110
|
+
|
|
111
|
+
`inputsHash` 是 64 位小写 hex,不含 `0x`。fork blockNumber 是非负安全整数;只有 simulate 可带 fork。
|
|
112
|
+
qualification verify 不需要伪造 fork 或 releaseRef,不接受 execute/export-calldata/reconcile;具体只读 verification orchestration 在后续阶段实现。
|
|
113
|
+
所有 signer/operator 地址只是请求约束,不是授权证明。业务 owner 留在冻结 source 的业务参数中,
|
|
114
|
+
不会从 devSigner/operator 推导,也不接受 `businessOwner` 或参数覆盖字段。
|
|
115
|
+
不支持 `admin_release`、旧 SuperTask 字段、`mergeCommit`、`parameterOverrides`、`authorized: true`。
|
|
116
|
+
|
|
117
|
+
这一步只定义语法、路由和 RPC 一致性验证;canonical source 文件内容核验、输入冻结、prod host 授权、
|
|
118
|
+
执行/finalize/export CLI 在后续交付阶段实现。这里没有把新请求转译给旧 `workflow/run.ts`。
|
|
119
|
+
|
|
120
|
+
## Manifest 与普通开发命令
|
|
121
|
+
|
|
122
|
+
插件只有在显式设置 `GATE_DELIVERY_CONTEXT`(上述请求的 JSON)时读取选中目标。
|
|
123
|
+
它在任何 OZ import 之前设置 `MANIFEST_DEFAULT_DIR` 和 `GATE_WORKFLOW_TARGET`;
|
|
124
|
+
`prod` 必须使用 `.openzeppelin`,`dev` 必须使用隔离目录(默认 `.openzeppelin.dev`)。
|
|
125
|
+
两种环境可以使用同一 chain ID。每个 runtime target 应使用全新子进程;继承的目录/目标冲突、
|
|
126
|
+
不同的 Hardhat config/tsconfig、网络路由冲突或已提前加载 OZ 均拒绝。
|
|
127
|
+
所有重复 CLI 参数和对应环境变量都会逐一核对,不能用 CLI 掩盖继承的冲突值。
|
|
128
|
+
无显式 network selector 时读取项目的静态 `defaultNetwork`;插件还会在 HRE 初始化时核对实际
|
|
129
|
+
`hre.network.name`、project root 和 configFile,拒绝 config extender 改写后的不一致。
|
|
130
|
+
只有 simulate 可一致地选择本地 hardhat;该例外不会覆盖显式 selector 冲突或错误的默认网络。
|
|
131
|
+
|
|
132
|
+
没有 delivery context 时不读取 YAML。插件启用 OZ 原生 storageLayout 和 canonical ERC1967Proxy
|
|
133
|
+
依赖编译,不重写 compiler、optimizer、viaIR、artifact/cache 路径,也不读取钱包。
|
|
134
|
+
旧 workflow 配置入口仅接受 local/development/production,拒绝 dev/prod;新协议通过独立 loader 只接受 dev/prod。
|
|
135
|
+
共享 manifest/preparation 策略支持两套环境名称,但不会将新环境转换为旧 workflow 请求。
|
|
136
|
+
|
|
137
|
+
真实本地验收:`npm run test:delivery:core`。测试需要相邻的 `EvmHardhatCli` checkout 已构建。该测试生成全新 core、安装本地 tarball、
|
|
138
|
+
编译临时 UUPS 合约并验证 canonical prepare,确认重复 setup 稳定及删除 YAML 后普通命令正常;
|
|
139
|
+
它不发布 npm 包,也不连接真实链。
|
|
140
|
+
|
|
141
|
+
The read-only [`delivery-source` API](delivery-source.md) binds actual confined handoff tasks and canonical definitions before RPC validation. It is separate from setup, lifecycle persistence and host authorization.
|
|
142
|
+
|
|
143
|
+
Owned multi-target input qualification is available through
|
|
144
|
+
`gate-evm-tools/delivery-aggregate`; see [aggregate lifecycle and API](delivery-aggregate.md).
|
|
145
|
+
|
|
146
|
+
Node 最低版本为 22.13.0(node:sqlite);本次本地组合使用 Node 24.3.0 / npm 11.4.2。
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Actual handoff source binding
|
|
2
|
+
|
|
3
|
+
`gate-evm-tools/delivery-source` is a read-only API for the new template delivery protocol. It reads the actual workspace handoff using the vendored canonical `gateflow-plan/v2` codec. It does not load HRE, a provider, a signer, or SmartFlowAI, and does not persist lifecycle state or grant execution authority.
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import { readDeliverySource, validateDeliverySourceRpc } from 'gate-evm-tools/delivery-source';
|
|
7
|
+
|
|
8
|
+
const source = readDeliverySource({
|
|
9
|
+
workspaceRoot: '/absolute/workspace',
|
|
10
|
+
projectRoot: 'contracts/vault', // workspace-relative; '.' is supported
|
|
11
|
+
sourceRoots: ['qualify-mainnet'], // upstream selection owned by caller policy
|
|
12
|
+
request, // DeliveryRequest from delivery-protocol
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// If RPC validation is needed, this wrapper checks actual source first.
|
|
16
|
+
const bound = await validateDeliverySourceRpc(options, selectedNetworkSnapshot, loadProvider);
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`request.sourceRef.path` is workspace-relative. The reference identifies the **invocation task** using taskId, planKey and rev. The selected task's deployment projectRoot must exactly equal the configured workspace-relative projectRoot. Its environment, targetNetwork, allowedActions and exact releaseRef must match the request. The project must carry the supported completed core-template marker. A disabled or cancelled invocation is refused.
|
|
20
|
+
|
|
21
|
+
Purpose is bound to task steps:
|
|
22
|
+
|
|
23
|
+
| Purpose | Steps |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| dev-execution | deploy, check-code |
|
|
26
|
+
| prod-qualification | deploy-test |
|
|
27
|
+
| prod-execution | release-prepare, release-execute, release-verify |
|
|
28
|
+
|
|
29
|
+
The Task 4 protocol still controls legal modes: dev reconcile is valid; qualification verify needs neither fork nor releaseRef; qualification simulate requires a pinned read-only fork. Source binding adds the actual task's allowedActions constraint. The release reference's path remains **project-relative**; source checking does not read or validate release package contents.
|
|
30
|
+
|
|
31
|
+
Traversal, symlinks, hardlinks, nonregular files, missing/invalid handoffs, incorrect task identity/revision and route/ref mismatches fail before the wrapper invokes `loadProvider`. The file is opened without following a final symlink, and its identity and modification metadata are checked across the read. Parsing and projections use the same observed text. Subsequent lifecycle operations must revalidate against their freeze policy; this is not a filesystem lock.
|
|
32
|
+
|
|
33
|
+
## Definition identity
|
|
34
|
+
|
|
35
|
+
`sourceRoots` is separate from the invocation reference. The caller's trusted selection policy chooses upstream roots; the canonical projector includes their dependency closure and refuses any generated release-prepare/release-execute/release-verify root or dependency. Qualification tasks may be upstream. Selected deployment contracts belonging to another projectRoot are rejected, including those found only through dependencies. Generic source tasks remain available for dependency closure.
|
|
36
|
+
|
|
37
|
+
The returned recursively immutable binding contains:
|
|
38
|
+
|
|
39
|
+
- `request` and `invocation` (lane and complete parsed task).
|
|
40
|
+
- `sourceDefinition`, `sourceDefinitionBytes` and SHA-256 `sourceDefinitionHash`.
|
|
41
|
+
- For prod execution, `prodTaskGraph`, `prodTaskGraphBytes` and `prodTaskGraphHash`: all matching-release tasks for the selected project, across target networks, with full dependency closure and full releaseRef data.
|
|
42
|
+
- `observation.path` and raw file SHA-256 for audit observation only.
|
|
43
|
+
|
|
44
|
+
Definition bytes bind schema/taskId/flow, chosen roots, planKey/rev/lane, selected relative task order, used lane state/skill/step IDs, and objective/acceptance/dependsOn/step/scope/parameters/expectedArtifacts/allowedChanges. They exclude presentation, tools, progress and unrelated tasks. Thus ordinary progress updates change the observation hash without changing the upstream definition hash; an updated rev still binds when semantics return to their prior value.
|
|
45
|
+
|
|
46
|
+
The later lifecycle must construct `inputsHash` from sourceDefinitionHash plus operation/parameter/artifact/script/config/executor bindings. It must keep the production task graph hash independent of inputsHash, because production task definitions contain releaseRef.inputsHash. **Neither the raw handoff hash nor prodTaskGraphHash is an inputsHash substitute.**
|
|
47
|
+
|
|
48
|
+
The wrapper verifies source constraints; it does not replace host approval, root selection/freeze policy, revision adoption, progress ordering, release sealing, or release package checks. No runtime actor information is inserted into portable task definitions.
|
|
49
|
+
|
|
50
|
+
`parseCanonicalPlan(text)` and `projectCanonicalDefinitions(text, { roots, mode: 'upstream' | 'full' })` also expose the canonical read-only surface. The projector reparses text rather than accepting a mutable parsed snapshot. Full mode permits complete independent prod projections. Canonical JSON uses sorted mapping keys and preserves prototype-named own metadata as data.
|
|
51
|
+
|
|
52
|
+
## Vendor provenance and build
|
|
53
|
+
|
|
54
|
+
The checked-in files are under `runtime/vendor/plan-codec`: a standalone CJS bundle, `.d.cts` declarations and provenance manifest. SmartFlowAI's `scripts/build-plan-codec.mjs` produces them from committed sources using its existing esbuild. The manifest records the actual commit, relevant source SHA-256s, schema/definition contract, version, builder version and artifact hashes. Its recorded source commit continues to be valid after unrelated SmartFlow commits; `--verify` uses that commit, not current HEAD.
|
|
55
|
+
|
|
56
|
+
Maintainer refresh, from a SmartFlowAI checkout with the corresponding committed sources:
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
node scripts/build-plan-codec.mjs --out ../EvmGateTools/runtime/vendor/plan-codec
|
|
60
|
+
node scripts/build-plan-codec.mjs --out ../EvmGateTools/runtime/vendor/plan-codec --verify
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
After reviewing the rebuilt artifact, explicitly update `runtime/delivery/codec-pin.ts` with its manifest SHA-256 and sourceCommit, and copy the canonical `definition-golden.json` and `evm-cases.json` into `test/fixtures/plan-codec`. The pin is a reviewed repository/package integrity anchor; changing all trusted package code is outside its threat boundary.
|
|
64
|
+
|
|
65
|
+
`npm run build` compiles TypeScript, runs `scripts/stage-plan-codec.mjs` to verify the pinned manifest and both artifact digests, copies them into `dist-runtime/vendor/plan-codec`, verifies staged bytes, and only then writes runtime identity. Normal builds never fetch or rebuild/re-pin canonical sources. Runtime source entry points verify the same pin and artifact hashes before loading the codec. The compiled pin binds the manifest to runtime identity; the staged CJS bundle is also hashed directly.
|
|
66
|
+
|
|
67
|
+
Both vendor locations are included by existing npm package file rules. Pack tests extract an isolated tarball and read actual source plus shared complete-object/exact-byte golden fixtures with no SmartFlow checkout and no installed dependencies. Tampering with bundle, declarations or provenance fails in runtime and staging checks. Tracked `dist-runtime` files must accompany source changes.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Scheme-Aware Dual Static Validation Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** Make the canonical static-validation command run and record the required EVM and zkSync compile checks while preserving the existing zkSync project configuration and fail-closed evidence contract.
|
|
6
|
+
|
|
7
|
+
**Architecture:** Keep `hardhat.config.ts` and its zkSync compiler/network settings untouched. Extend GateTool's static-validation API with explicit compile targets for `evm` and `zksync-eravm`; the CLI resolves those targets from task/workflow inputs and records scheme-aware checks in `static-validation.json`. Existing TypeScript, test, and task-document checks remain shared checks. No deploy/upgrade adapter rewrite is included in this phase.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** TypeScript, Node.js `spawnSync`, YAML/JSON evidence, Node test runner, GateTool runtime package.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
### Task 1: Define scheme-aware static-validation evidence and target inputs
|
|
14
|
+
|
|
15
|
+
**Files:**
|
|
16
|
+
- Modify: `runtime/workflow/lib/staticValidation.ts`
|
|
17
|
+
- Test: `test/static-validation.test.mjs`
|
|
18
|
+
|
|
19
|
+
- [ ] **Step 1: Write failing tests**
|
|
20
|
+
|
|
21
|
+
Add tests proving that `runStaticValidation` accepts explicit compile targets and emits:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"scheme": "evm",
|
|
26
|
+
"network": "gtDev"
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
and
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"scheme": "zksync-eravm",
|
|
35
|
+
"network": "zk"
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
for the two compile checks, while `compiledSchemes` contains both schemes. Add a failure test proving a failed zkSync compile creates a blocking reason naming the scheme and network.
|
|
40
|
+
|
|
41
|
+
- [ ] **Step 2: Run the focused test and verify it fails**
|
|
42
|
+
|
|
43
|
+
Run:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
cd /Users/vector/gate/EvmGateTools
|
|
47
|
+
npm run build && node --test test/static-validation.test.mjs
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Expected: the new assertions fail because compile evidence currently has no scheme/network fields and only one compile command is run.
|
|
51
|
+
|
|
52
|
+
- [ ] **Step 3: Implement the minimal evidence model**
|
|
53
|
+
|
|
54
|
+
Add explicit compile-target types and extend compile check evidence with optional `scheme` and `network`. Add `compiledSchemes` and `compileTargets` to the structured evidence. Preserve the existing report paths and fail-closed status calculation.
|
|
55
|
+
|
|
56
|
+
- [ ] **Step 4: Run the focused test and verify it passes**
|
|
57
|
+
|
|
58
|
+
Run the same build and test command. Expected: all static-validation tests pass.
|
|
59
|
+
|
|
60
|
+
- [ ] **Step 5: Commit the focused GateTool change**
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
git add runtime/workflow/lib/staticValidation.ts test/static-validation.test.mjs
|
|
64
|
+
git commit -m "feat: record scheme-aware static validation"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Task 2: Make the static-validation CLI run explicit EVM and zkSync compiles
|
|
68
|
+
|
|
69
|
+
**Files:**
|
|
70
|
+
- Modify: `runtime/workflow/staticValidate.ts`
|
|
71
|
+
- Modify: `runtime/workflow/lib/staticValidation.ts`
|
|
72
|
+
- Test: `test/static-validation.test.mjs`
|
|
73
|
+
|
|
74
|
+
- [ ] **Step 1: Write failing CLI/runner tests**
|
|
75
|
+
|
|
76
|
+
Add a test that supplies two compile targets and asserts the runner invokes exactly:
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
npm run compile -- --network <evm-network>
|
|
80
|
+
npm run compile -- --network <zksync-network>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
before `tsc`, tests, and document parsing. Add a test that omits either required target and verifies the runner fails before claiming `passed`.
|
|
84
|
+
|
|
85
|
+
- [ ] **Step 2: Run tests to verify the new behavior fails**
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
cd /Users/vector/gate/EvmGateTools
|
|
89
|
+
npm run build && node --test test/static-validation.test.mjs
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Expected: the invocation and missing-target assertions fail against the current single-network implementation.
|
|
93
|
+
|
|
94
|
+
- [ ] **Step 3: Implement target-driven compile execution**
|
|
95
|
+
|
|
96
|
+
Add `compileTargets` to `StaticValidationOptions`. For this phase require one `evm` and one `zksync-eravm` target from the canonical CLI path. Execute each target with its own `--network` value, preserve command errors, and record target-specific evidence. Keep the existing optional test command and shared checks unchanged.
|
|
97
|
+
|
|
98
|
+
- [ ] **Step 4: Run the focused tests**
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm run build && node --test test/static-validation.test.mjs
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Expected: all tests pass and evidence contains both compile checks and both compiled schemes.
|
|
105
|
+
|
|
106
|
+
- [ ] **Step 5: Commit**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
git add runtime/workflow/staticValidate.ts runtime/workflow/lib/staticValidation.ts test/static-validation.test.mjs
|
|
110
|
+
git commit -m "feat: require EVM and zkSync static compiles"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Task 3: Wire workflow inputs and preserve the project zkSync configuration
|
|
114
|
+
|
|
115
|
+
**Files:**
|
|
116
|
+
- Modify: `runtime/workflow/staticValidate.ts`
|
|
117
|
+
- Modify: `ai-workflows/workflows/v2/deployment/contract-deployment-developer-role-v2.yaml`
|
|
118
|
+
- Modify: `ai-workflows/tests/deployment-runtime-context-policy.test.mjs`
|
|
119
|
+
|
|
120
|
+
- [ ] **Step 1: Add policy regression assertions**
|
|
121
|
+
|
|
122
|
+
Require the canonical command to pass explicit EVM and zkSync network arguments/targets and require both scheme results in structured evidence. Assert that the policy retains the project's `zksolc` configuration rather than asking the developer to delete it.
|
|
123
|
+
|
|
124
|
+
- [ ] **Step 2: Run the policy test to verify it fails**
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
cd /Users/vector/gate/ai-workflows
|
|
128
|
+
node --test tests/deployment-runtime-context-policy.test.mjs
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Expected: the new dual-target assertions fail before the workflow text is updated.
|
|
132
|
+
|
|
133
|
+
- [ ] **Step 3: Update the canonical workflow instructions**
|
|
134
|
+
|
|
135
|
+
Document that `hardhat.config.ts` keeps its zkSync plugin, network, and `zksolc` settings; the developer must run isolated EVM and zkSync compiles using the selected configured network names; and `static-validation.json` must contain passed evidence for both schemes. Do not add a new user-facing scheme selector or infer scheme from a network name.
|
|
136
|
+
|
|
137
|
+
- [ ] **Step 4: Run policy tests**
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
node --test tests/deployment-runtime-context-policy.test.mjs tests/zksync-create2-policy.test.mjs
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Expected: all relevant policy tests pass.
|
|
144
|
+
|
|
145
|
+
- [ ] **Step 5: Commit and push workflow policy**
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
git add workflows/v2/deployment/contract-deployment-developer-role-v2.yaml tests/deployment-runtime-context-policy.test.mjs
|
|
149
|
+
git commit -m "docs: require dual-scheme static validation"
|
|
150
|
+
git push origin main
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Task 4: Validate compiler compatibility and package the result
|
|
154
|
+
|
|
155
|
+
**Files:**
|
|
156
|
+
- Modify only if the compatibility test proves the current project combination is invalid: the SuperTask worktree's project-owned `hardhat.config.ts` and dependency manifest; do not alter GateTool's shared runtime config.
|
|
157
|
+
- Test: current SuperTask worktree compile commands and generated evidence.
|
|
158
|
+
|
|
159
|
+
- [ ] **Step 1: Run the exact EVM and zkSync compile commands in the current SuperTask worktree**
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
cd /Users/vector/gate/repo_migrate/GateFun/.worktrees/supertask-muf4zhlc-l4a7e-gatefun4
|
|
163
|
+
npm run compile -- --network gtDev
|
|
164
|
+
npm run compile -- --network zk
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Expected: EVM compile passes; zkSync compile either passes or produces the exact plugin/compiler incompatibility needed for a project-owned version update.
|
|
168
|
+
|
|
169
|
+
- [ ] **Step 2: If zkSync compile fails, verify the installed plugin's supported compiler range before changing config**
|
|
170
|
+
|
|
171
|
+
Inspect the installed `@matterlabs/hardhat-zksync-solc` constants and compile error. Only update `zksolc` to an officially supported version if the current `1.3.22` is actually rejected by the installed plugin; preserve the plugin and network declarations.
|
|
172
|
+
|
|
173
|
+
- [ ] **Step 3: Run GateTool's complete test suite and build**
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
cd /Users/vector/gate/EvmGateTools
|
|
177
|
+
npm test
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Expected: all tests pass.
|
|
181
|
+
|
|
182
|
+
- [ ] **Step 4: Pack and install the resulting local package into the current SuperTask worktree**
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
mkdir -p /tmp/gateflow-local-packages
|
|
186
|
+
npm pack --pack-destination /tmp/gateflow-local-packages
|
|
187
|
+
cd /Users/vector/gate/repo_migrate/GateFun/.worktrees/supertask-muf4zhlc-l4a7e-gatefun4
|
|
188
|
+
npm install --no-save --ignore-scripts /tmp/gateflow-local-packages/gate-evm-tools-1.0.28.tgz
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
- [ ] **Step 5: Verify structured evidence and repository status**
|
|
192
|
+
|
|
193
|
+
Run the canonical static validation with explicit targets, inspect `docs/static-validation.json`, and confirm the evidence is current-run and contains both schemes. Do not modify or delete failed SuperTask state automatically. Confirm all intended repositories are clean or contain only explicitly documented changes.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# GateTool CREATE2 Miner Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** Add an independently callable, packaged CREATE2 miner to GateTool while retaining the existing GateFlow miner unchanged.
|
|
6
|
+
|
|
7
|
+
**Architecture:** Reuse the existing create2Crunch macOS executables, with a GateTool-owned typed request/result API, binary resolver, bounded child-process lifecycle and independent cryptographic verification. Mining is explicit preparation work: no automatic deployment hooks, transaction signing, DB/state migration or parameter mutation. Publish a `gate-evm-tools/create2-miner` subpath and `gate-tool miner` CLI; distribute both binaries offline in the npm archive.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** TypeScript, Node child_process, existing ethers v6 runtime/hash helpers, Rust Mach-O binaries, node:test, npm pack.
|
|
10
|
+
|
|
11
|
+
**Workspace:** `/Users/vector/gate/.worktrees/evm-delivery/EvmGateTools`, existing clean branch `feat/evm-delivery`, base `31c709a6bf7eb69ecad99a3f49ec08f332819cd5`. No changes in SmartFlowAI, EvmHardhatCli or create2Crunch; no npm publication/version bump/App rebuild.
|
|
12
|
+
|
|
13
|
+
## Task 1: Miner API, CLI and offline distribution
|
|
14
|
+
|
|
15
|
+
**Files:**
|
|
16
|
+
- Create `runtime/miner/{types,request,verify,binary,runner,index,cli}.ts` with one responsibility per module.
|
|
17
|
+
- Create `resources/create2/{darwin-arm64,darwin-x64}/smartflow_miner`, `resources/create2/{LICENSE,manifest.json,README.md}`.
|
|
18
|
+
- Modify `package.json` exports/typesVersions/files; `bin/cli.js` may route the `miner` command before heavyweight legacy CLI loading. Add help integration in `src/index.ts` if needed.
|
|
19
|
+
- Create `test/create2-miner.test.mjs`, `test/create2-miner-process.test.mjs`, `test/create2-miner-package.test.mjs` and small executable test fixtures as needed.
|
|
20
|
+
- Modify `README.md`, add `docs/create2-miner.md`; regenerate tracked build artifacts with the existing build.
|
|
21
|
+
|
|
22
|
+
### Public contract
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
// Export typed requests, normalized requests/results and options from the subpath.
|
|
26
|
+
normalizeCreate2MinerRequest(input: unknown): NormalizedCreate2MinerRequest;
|
|
27
|
+
create2MinerRequestFromArtifact(input: {
|
|
28
|
+
scheme?: 'evm' | 'zksync-eravm'; artifact: Create2HashArtifact;
|
|
29
|
+
args: unknown[]; factory: string; caller: string;
|
|
30
|
+
leadingZeroBytes?: number; leadingPattern?: number; targetCount?: number;
|
|
31
|
+
backend?: 'auto' | 'cpu' | 'gpu' | 'metal' | 'opencl';
|
|
32
|
+
}): NormalizedCreate2MinerRequest;
|
|
33
|
+
resolveCreate2MinerBinary(options?: { binaryPath?: string }): string;
|
|
34
|
+
verifyCreate2MinerResponse(request: Create2MinerRequest, response: unknown): Create2MinerRunResult;
|
|
35
|
+
mineCreate2(request: Create2MinerRequest, options?: {
|
|
36
|
+
binaryPath?: string; signal?: AbortSignal; timeoutMs?: number;
|
|
37
|
+
onProgress?: (progress: { status: 'running'; elapsedMs: number }) => void;
|
|
38
|
+
}): Promise<Create2MinerRunResult>;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Contract details:
|
|
42
|
+
- Normalize EVM default scheme and explicit EraVM, strict address/hash lengths, separate scheme-specific hashes, required caller salt prefix, positive bounded targetCount (1–100), leadingZeroBytes 0–20, leadingPattern 0–255. Default backend auto, targetCount 1, difficulty/pattern 0. Unknown/irrelevant fields must not silently change intent. Do not expose Rust debugging nonce/prefix controls yet.
|
|
43
|
+
- GPU supports only repeated-nibble patterns (00,11,...,ff); reject other patterns before spawn unless CPU selected. Validate platform-incompatible backend selection clearly.
|
|
44
|
+
- Artifact helper reuses existing canonicalCreate2Hashes (actual ABI constructor encoding, artifact format and linked bytecode validation); no HRE/RPC/compiler/secret needed.
|
|
45
|
+
- Return normalized request identity plus verified results, actual backend, attempts/duration/rate from binary, explicit status found. Strictly require status, scheme, count, unique salts/addresses and all identity fields. Reject forged/missing/foreign hashes, caller mismatch, leading policy mismatch, nonmatching computed addresses/patterns and partial results. EVM address uses ff/factory/salt/initCodeHash; EraVM uses zksyncCreate2 domain/factory padding/salt/bytecodeHash/constructorInputHash. Metrics must be finite nonnegative; they are reported telemetry, not proof.
|
|
46
|
+
- Resolver uses explicit binaryPath, then GATE_TOOL_CREATE2_MINER_BIN, then package-relative resources for host platform/architecture. Unsupported hosts get an actionable override/build error. Validate bundled file SHA-256 against a trusted manifest pin and executable permissions. Explicit overrides are trusted executable paths; do not fall back silently when invalid. No cwd-based discovery/download/postinstall.
|
|
47
|
+
- Manifest records actual file lengths/SHA-256 and honest provenance (copied from SmartFlow repository resources at its inspected commit; Rust reference checkout is not proof of the binary build revision). Include upstream MIT license, preserve executable bits.
|
|
48
|
+
- Spawn without shell; send JSON over stdin. Bounded stdout/stderr, handle spawn/nonzero exit/malformed JSON/stalled processes. Abort/timeout kills and reaps child (TERM with bounded KILL fallback), clears timers/listeners, settles once, no orphan process. Progress reports elapsed time only. Catch callback errors and terminate cleanly. Pre-aborted calls must not spawn.
|
|
49
|
+
- CLI: `gate-tool miner --request request.json [--output result.json] [--binary /absolute/path] [--timeout-ms N]`; request `-` accepts stdin. JSON result on stdout, diagnostics on stderr, optional output written only after successful verification (avoid truncating existing files on failure; reject overwriting request). SIGINT/SIGTERM must cancel child and exit nonzero. Help must be discoverable through both `gate-tool --help` and `gate-tool miner --help`.
|
|
50
|
+
- This API uses the existing ethers v6 runtime requirement; document it. No changes to old SuperTask adapters, handoff tasks, release sealing, frozen salts, setup version pin or deployment executors.
|
|
51
|
+
|
|
52
|
+
### Execution steps
|
|
53
|
+
|
|
54
|
+
- [x] Write failing functional tests for request normalization, artifact hash construction, EVM known address and EraVM reference vectors, and forged response rejection. Assert exports exist before importing lazily so the initial failure identifies missing capability. Run `node --test test/create2-miner.test.mjs` and record expected RED.
|
|
55
|
+
- [x] Implement request/types/verification and API exports; run `npm run build` and the functional test to GREEN.
|
|
56
|
+
- [x] Write lifecycle and CLI tests before implementation: real fixture subprocess stdout/failure/hang/oversized output, AbortSignal, timeout, callback failure, executable resolution and invalid paths. Run new tests to expected RED; then implement process runner/resolver/CLI.
|
|
57
|
+
- [x] Copy the two authorized existing executables (do not remove originals), license and manifest with source/hash evidence. Write package acceptance test before packaging changes: pack into a temp directory, extract away from checkout, verify both binary bytes/modes and API types/exports/help, invoke bundled native CPU mining for EVM and EraVM on supported hosts. Tests may use isolated installed dependencies or explicit symlinks to dependencies, but must not resolve the miner from a checkout path. Test failure diagnostics and clean temporary resources.
|
|
58
|
+
- [x] Wire package and help; add usage docs and verified-result JSON example. Run `npm run build`, `node --test test/create2-miner*.test.mjs test/delivery-source-package.test.mjs test/runtime-version.test.mjs` once all source changes are ready. Record actual tar size. Smoke real native GPU if the current Mac supports it, separately from required deterministic CPU acceptance.
|
|
59
|
+
- [x] Review source and spec independently, resolve concrete findings, and rerun affected checks only. Record evidence here. Commit only these changes locally after verification; do not push/publish/update App runtime archives.
|
|
60
|
+
|
|
61
|
+
## Acceptance record
|
|
62
|
+
|
|
63
|
+
Implementation and independent reviews complete. The GateFlow application continues using its original miner until a separately authorized integration.
|
|
64
|
+
|
|
65
|
+
Parent baseline checks (before new wrapper implementation):
|
|
66
|
+
- Existing runtime identity binding regression: 1 passed.
|
|
67
|
+
- Existing macOS arm64 executable: CPU EVM and EraVM requests returned complete `found` responses.
|
|
68
|
+
- Existing macOS arm64 executable: GPU EVM request with one leading zero byte returned a qualifying address through Metal (~5.8 seconds); reported attempts/hashRate were zero, confirming these counters are unavailable on GPU.
|
|
69
|
+
- Existing x64 executable cannot run on this arm64 host (`Bad CPU type in executable`); x64 runtime acceptance remains outside this host's coverage.
|
|
70
|
+
- Both executables link to macOS system libraries/frameworks, not developer checkout paths.
|
|
71
|
+
- Source resource SHA-256: arm64 `9611c1ca900c24f9b14924a144b7a3ab431111b855e676f2e145e7ab8c05f954` (1,297,616 bytes); x64 `a38279143658a8849db484e248c62af6ae2db78de4251021f195efd9bf987d82` (1,306,112 bytes).
|
|
72
|
+
|
|
73
|
+
Feature commit `8f7a8a2d1d9cb7106ac53b0dcb2b2beefa2ddc32`:
|
|
74
|
+
- Functional RED (5 missing-export failures), lifecycle/CLI RED (15 missing-runner failures), package/type RED (missing resources and raw-input type) were observed before corresponding implementation. Result type alias also received a consumer RED/GREEN check.
|
|
75
|
+
- Full build succeeded. Focused command passed 25 tests, 0 failures/skips. Raw logs are preserved outside the published package at `../setup-logs/create2-miner-20261028/{build.log,focused-tests.log}`.
|
|
76
|
+
- Extracted npm package CPU runs: EVM and EraVM each returned two unique, verified addresses with a leading zero byte; CJS/ESM imports and `.cts`/`.mts` consumers passed. Both architectures' binary hashes, modes and tamper rejection passed.
|
|
77
|
+
- Implementer's separate extracted-package Metal smoke passed EVM (5,117 ms, address `0x001f764470407c723db31f0f490c2edaed0fed70`) and EraVM (11,733 ms, address `0x0012736ec2bc4d20068df1bc6bd9676663a02e2b`). Native GPU attempts/rate remained zero/unavailable.
|
|
78
|
+
- Acceptance tar at this stage was 2,448,819 bytes compressed; final delivery tar may differ due to review fixes and this record.
|
|
79
|
+
- Independent specification review identified a CLI cancellation window during asynchronous output writing. Fix `86daf843d44486561dc60ea3f1541e4f47a99fb9` checks cancellation around output commit and before success reporting. All 16 process tests passed, including SIGINT/SIGTERM at three real filesystem-operation boundaries. The reviewer independently rechecked and issued specification PASS. Raw logs: `output-cancellation-{build,red-original,green}.log` in the same evidence directory.
|
|
80
|
+
- Quality review found that the exported verifier's array `map` could skip sparse result slots from JavaScript callers (native JSON cannot encode holes). Fix `c21667ffd7151db2b6316d2fcb3d414c22285306` validates every expected index, independent of array holes/custom iterators. Full build and affected functional tests passed (5/5); the reviewer independently reproduced rejection and issued quality PASS. Raw logs: `sparse-response-{red,iterator-red,build,green}.log`.
|
|
81
|
+
- No remaining critical/important review findings. Final source has 26 focused tests; the full 25-test run preceded review corrections, which were verified with affected suites (16 process/CLI and 5 functional tests). No production-chain execution, npm publication, App build/toolchain replacement, or changes to other repositories were performed.
|
|
82
|
+
- A local installation archive and machine-readable receipt are produced at `../artifacts/create2-miner-20261028/`. `ACCEPTANCE.json` records final package SHA-256, bytes, source commit and extracted-package CLI acceptance for both schemes. Reproduction script: `../setup-logs/create2-miner-20261028/verify-local-package.mjs`. Package-only checks reuse the worktree's dependencies by symlink; miner code and native resources come exclusively from the extracted archive.
|