gate-evm-tools 1.0.28 → 1.2.0
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 +47 -18
- package/bin/cli.js +6 -0
- package/bin/delivery.cjs +52 -0
- package/bin/manifest-bootstrap.js +4 -15
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +26 -2
- package/dist/commands/check.js.map +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/batch.d.ts +26 -0
- package/dist/core/preparation/batch.d.ts.map +1 -0
- package/dist/core/preparation/batch.js +72 -0
- package/dist/core/preparation/batch.js.map +1 -0
- package/dist/core/preparation/evm.d.ts +61 -6
- package/dist/core/preparation/evm.d.ts.map +1 -1
- package/dist/core/preparation/evm.js +122 -34
- package/dist/core/preparation/evm.js.map +1 -1
- package/dist/core/preparation/evmManifestSync.d.ts +68 -0
- package/dist/core/preparation/evmManifestSync.d.ts.map +1 -0
- package/dist/core/preparation/evmManifestSync.js +154 -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 +17 -3
- package/dist/core/preparation/manifest.d.ts.map +1 -1
- package/dist/core/preparation/manifest.js +23 -28
- 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 +67 -20
- package/dist/core/preparation/normalize.js.map +1 -1
- package/dist/core/preparation/transparent.d.ts +23 -0
- package/dist/core/preparation/transparent.d.ts.map +1 -0
- package/dist/core/preparation/transparent.js +103 -0
- package/dist/core/preparation/transparent.js.map +1 -0
- package/dist/core/preparation/types.d.ts +54 -7
- package/dist/core/preparation/types.d.ts.map +1 -1
- package/dist/core/preparation/zksync.d.ts.map +1 -1
- package/dist/core/preparation/zksync.js +2 -0
- package/dist/core/preparation/zksync.js.map +1 -1
- package/dist/custody/credential.d.ts.map +1 -1
- package/dist/custody/credential.js +1 -6
- package/dist/custody/credential.js.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/deployment-evm/index.d.ts +4 -0
- package/dist/deployment-evm/index.d.ts.map +1 -0
- package/dist/deployment-evm/index.js +3 -0
- package/dist/deployment-evm/index.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -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 +13 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/workflow/index.d.ts +10 -2
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +6 -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/batch.js +76 -0
- package/dist-cjs/core/preparation/batch.js.map +1 -0
- package/dist-cjs/core/preparation/evm.js +128 -37
- package/dist-cjs/core/preparation/evm.js.map +1 -1
- package/dist-cjs/core/preparation/evmManifestSync.js +163 -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 +25 -30
- package/dist-cjs/core/preparation/manifest.js.map +1 -1
- package/dist-cjs/core/preparation/normalize.js +67 -20
- package/dist-cjs/core/preparation/normalize.js.map +1 -1
- package/dist-cjs/core/preparation/transparent.js +110 -0
- package/dist-cjs/core/preparation/transparent.js.map +1 -0
- package/dist-cjs/core/preparation/zksync.js +2 -0
- package/dist-cjs/core/preparation/zksync.js.map +1 -1
- package/dist-cjs/custody/credential.js +1 -6
- package/dist-cjs/custody/credential.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/deployment-evm/index.js +10 -0
- package/dist-cjs/deployment-evm/index.js.map +1 -0
- package/dist-cjs/sync/index.js +13 -0
- package/dist-cjs/sync/index.js.map +1 -1
- package/dist-cjs/workflow/index.js +22 -1
- package/dist-cjs/workflow/index.js.map +1 -1
- package/dist-runtime/config/hardhatAdapters.js +2 -1
- package/dist-runtime/config/hardhatAdapters.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 +42 -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 +159 -0
- package/dist-runtime/delivery/aggregate-channel.js.map +1 -0
- package/dist-runtime/delivery/aggregate-diagnostics.d.ts +14 -0
- package/dist-runtime/delivery/aggregate-diagnostics.js +73 -0
- package/dist-runtime/delivery/aggregate-diagnostics.js.map +1 -0
- package/dist-runtime/delivery/aggregate-inputs.d.ts +172 -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 +87 -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 +199 -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/business-extension.d.ts +10 -0
- package/dist-runtime/delivery/business-extension.js +38 -0
- package/dist-runtime/delivery/business-extension.js.map +1 -0
- package/dist-runtime/delivery/calldata-archive.d.ts +18 -0
- package/dist-runtime/delivery/calldata-archive.js +31 -0
- package/dist-runtime/delivery/calldata-archive.js.map +1 -0
- package/dist-runtime/delivery/calldata-details.d.ts +47 -0
- package/dist-runtime/delivery/calldata-details.js +94 -0
- package/dist-runtime/delivery/calldata-details.js.map +1 -0
- package/dist-runtime/delivery/calldata-format.d.ts +4 -0
- package/dist-runtime/delivery/calldata-format.js +17 -0
- package/dist-runtime/delivery/calldata-format.js.map +1 -0
- package/dist-runtime/delivery/calldata-preparations.d.ts +13 -0
- package/dist-runtime/delivery/calldata-preparations.js +85 -0
- package/dist-runtime/delivery/calldata-preparations.js.map +1 -0
- package/dist-runtime/delivery/calldata-review.d.ts +44 -0
- package/dist-runtime/delivery/calldata-review.js +131 -0
- package/dist-runtime/delivery/calldata-review.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 +222 -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 +851 -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 +124 -0
- package/dist-runtime/delivery/config.js.map +1 -0
- package/dist-runtime/delivery/configuration-definition.d.ts +31 -0
- package/dist-runtime/delivery/configuration-definition.js +343 -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 +86 -0
- package/dist-runtime/delivery/configuration.js.map +1 -0
- package/dist-runtime/delivery/contract-source.d.ts +14 -0
- package/dist-runtime/delivery/contract-source.js +138 -0
- package/dist-runtime/delivery/contract-source.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 +410 -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 +92 -0
- package/dist-runtime/delivery/development.js +406 -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 +82 -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-identity.d.ts +15 -0
- package/dist-runtime/delivery/execution-identity.js +33 -0
- package/dist-runtime/delivery/execution-identity.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 +83 -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 +194 -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 +278 -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/parameter-defaults.d.ts +10 -0
- package/dist-runtime/delivery/parameter-defaults.js +86 -0
- package/dist-runtime/delivery/parameter-defaults.js.map +1 -0
- package/dist-runtime/delivery/parameters.d.ts +55 -0
- package/dist-runtime/delivery/parameters.js +279 -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 +84 -0
- package/dist-runtime/delivery/planning.js +318 -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 +178 -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 +13 -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 +292 -0
- package/dist-runtime/delivery/production-finalization.js.map +1 -0
- package/dist-runtime/delivery/production-intent.d.ts +2 -0
- package/dist-runtime/delivery/production-intent.js +16 -0
- package/dist-runtime/delivery/production-intent.js.map +1 -0
- package/dist-runtime/delivery/production.d.ts +582 -0
- package/dist-runtime/delivery/production.js +445 -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 +87 -0
- package/dist-runtime/delivery/project-files.js.map +1 -0
- package/dist-runtime/delivery/project-rpc.d.ts +19 -0
- package/dist-runtime/delivery/project-rpc.js +138 -0
- package/dist-runtime/delivery/project-rpc.js.map +1 -0
- package/dist-runtime/delivery/project.d.ts +17 -0
- package/dist-runtime/delivery/project.js +170 -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/public-calldata.d.ts +25 -0
- package/dist-runtime/delivery/public-calldata.js +97 -0
- package/dist-runtime/delivery/public-calldata.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 +97 -0
- package/dist-runtime/delivery/release-graph.js +139 -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 +322 -0
- package/dist-runtime/delivery/release-history.js.map +1 -0
- package/dist-runtime/delivery/release-inputs.d.ts +33 -0
- package/dist-runtime/delivery/release-inputs.js +129 -0
- package/dist-runtime/delivery/release-inputs.js.map +1 -0
- package/dist-runtime/delivery/release.d.ts +196 -0
- package/dist-runtime/delivery/release.js +261 -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 +92 -0
- package/dist-runtime/delivery/safe.js +254 -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 +21 -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 +230 -0
- package/dist-runtime/delivery/setup.js.map +1 -0
- package/dist-runtime/delivery/source.d.ts +42 -0
- package/dist-runtime/delivery/source.js +139 -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/task-identity.d.ts +23 -0
- package/dist-runtime/delivery/task-identity.js +109 -0
- package/dist-runtime/delivery/task-identity.js.map +1 -0
- package/dist-runtime/delivery/toolchain.d.ts +3 -0
- package/dist-runtime/delivery/toolchain.js +52 -0
- package/dist-runtime/delivery/toolchain.js.map +1 -0
- package/dist-runtime/delivery/validation.d.ts +9 -0
- package/dist-runtime/delivery/validation.js +155 -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 +897 -0
- package/dist-runtime/vendor/plan-codec/index.d.cts +38 -0
- package/dist-runtime/vendor/plan-codec/provenance.json +25 -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 +44 -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/checkCodeRunner.js +7 -4
- package/dist-runtime/workflow/lib/checkCodeRunner.js.map +1 -1
- 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 +77 -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 +5 -27
- package/dist-runtime/workflow/lib/create2.js +11 -79
- package/dist-runtime/workflow/lib/create2.js.map +1 -1
- package/dist-runtime/workflow/lib/deploymentInfo.d.ts +2 -0
- package/dist-runtime/workflow/lib/deploymentInfo.js +6 -0
- package/dist-runtime/workflow/lib/deploymentInfo.js.map +1 -1
- package/dist-runtime/workflow/lib/deploymentRecords.d.ts +2 -0
- package/dist-runtime/workflow/lib/deploymentRecords.js +1 -1
- package/dist-runtime/workflow/lib/deploymentRecords.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/externalExecutionScanner.js +2 -1
- package/dist-runtime/workflow/lib/externalExecutionScanner.js.map +1 -1
- package/dist-runtime/workflow/lib/gateTool.d.ts +6 -2
- package/dist-runtime/workflow/lib/gateTool.js +22 -12
- package/dist-runtime/workflow/lib/gateTool.js.map +1 -1
- package/dist-runtime/workflow/lib/gateToolSync.d.ts +4 -1
- package/dist-runtime/workflow/lib/gateToolSync.js +8 -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 +11 -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 +4 -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 +69 -139
- 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 +110 -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 +84 -49
- 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 +38 -0
- package/docs/configuration-runtime-observation.md +29 -0
- package/docs/create2-miner.md +100 -0
- package/docs/delivery-aggregate.md +29 -0
- package/docs/delivery-calldata.md +27 -0
- package/docs/delivery-custom-input-closure.md +51 -0
- package/docs/delivery-development.md +38 -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 +95 -0
- package/docs/delivery-parameters.md +65 -0
- package/docs/delivery-planning.md +140 -0
- package/docs/delivery-release.md +119 -0
- package/docs/delivery-safe.md +75 -0
- package/docs/delivery-setup.md +198 -0
- package/docs/delivery-source.md +67 -0
- package/docs/direct-package-acceptance.md +2 -0
- package/docs/openzeppelin-acceptance.md +86 -0
- package/docs/openzeppelin-baseline.json +27 -0
- package/docs/openzeppelin-integration.md +115 -0
- package/docs/plans/2026-10-28-openzeppelin-toolkit-consolidation.md +396 -0
- package/docs/plans/2026-11-02-transparent-proxy-delivery.md +78 -0
- package/docs/superpowers/plans/2026-08-17-custody-hardhat-signers.md +1 -1
- 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/docs/workflow-reference.md +12 -4
- package/docs/workflow-runtime.md +6 -0
- package/package.json +148 -10
- 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/hardhatAdapters.ts +2 -1
- package/runtime/config/openzeppelin.ts +3 -21
- package/runtime/delivery/abi.ts +225 -0
- package/runtime/delivery/aggregate-bootstrap.ts +31 -0
- package/runtime/delivery/aggregate-channel.ts +88 -0
- package/runtime/delivery/aggregate-diagnostics.ts +63 -0
- package/runtime/delivery/aggregate-inputs.ts +39 -0
- package/runtime/delivery/aggregate-source.ts +57 -0
- package/runtime/delivery/aggregate-worker.ts +143 -0
- package/runtime/delivery/aggregate.ts +139 -0
- package/runtime/delivery/bindings.ts +37 -0
- package/runtime/delivery/business-extension.ts +33 -0
- package/runtime/delivery/calldata-archive.ts +25 -0
- package/runtime/delivery/calldata-details.ts +90 -0
- package/runtime/delivery/calldata-format.ts +14 -0
- package/runtime/delivery/calldata-preparations.ts +76 -0
- package/runtime/delivery/calldata-review.ts +126 -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 +181 -0
- package/runtime/delivery/compiler-io.ts +10 -0
- package/runtime/delivery/compiler-pins.ts +143 -0
- package/runtime/delivery/compiler.ts +701 -0
- package/runtime/delivery/config.ts +116 -0
- package/runtime/delivery/configuration-definition.ts +160 -0
- package/runtime/delivery/configuration-hre.ts +130 -0
- package/runtime/delivery/configuration-runtime.ts +163 -0
- package/runtime/delivery/configuration.ts +67 -0
- package/runtime/delivery/contract-source.ts +112 -0
- package/runtime/delivery/create2.ts +57 -0
- package/runtime/delivery/custom-closure.ts +993 -0
- package/runtime/delivery/custom-format.ts +479 -0
- package/runtime/delivery/custom.ts +219 -0
- package/runtime/delivery/data.ts +94 -0
- package/runtime/delivery/development.ts +264 -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-identity.ts +32 -0
- package/runtime/delivery/execution-model.ts +102 -0
- package/runtime/delivery/execution-store.ts +411 -0
- package/runtime/delivery/existing-code.ts +45 -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 +204 -0
- package/runtime/delivery/journal.ts +205 -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/parameter-defaults.ts +75 -0
- package/runtime/delivery/parameters.ts +367 -0
- package/runtime/delivery/pending.ts +98 -0
- package/runtime/delivery/plan.ts +337 -0
- package/runtime/delivery/planning.ts +411 -0
- package/runtime/delivery/policy.ts +9 -0
- package/runtime/delivery/preparation.ts +240 -0
- package/runtime/delivery/production-environment.ts +7 -0
- package/runtime/delivery/production-finalization.ts +181 -0
- package/runtime/delivery/production-intent.ts +14 -0
- package/runtime/delivery/production.ts +415 -0
- package/runtime/delivery/project-files.ts +63 -0
- package/runtime/delivery/project-rpc.ts +116 -0
- package/runtime/delivery/project.ts +129 -0
- package/runtime/delivery/protocol.ts +94 -0
- package/runtime/delivery/public-calldata.ts +74 -0
- package/runtime/delivery/references.ts +106 -0
- package/runtime/delivery/release-graph.ts +79 -0
- package/runtime/delivery/release-history-capture.ts +32 -0
- package/runtime/delivery/release-history.ts +178 -0
- package/runtime/delivery/release-inputs.ts +107 -0
- package/runtime/delivery/release.ts +166 -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 +355 -0
- package/runtime/delivery/same-fork-baseline.ts +17 -0
- package/runtime/delivery/setup.ts +184 -0
- package/runtime/delivery/source.ts +130 -0
- package/runtime/delivery/target-fields.ts +7 -0
- package/runtime/delivery/task-identity.ts +85 -0
- package/runtime/delivery/toolchain.ts +48 -0
- package/runtime/delivery/validation.ts +252 -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 +897 -0
- package/runtime/vendor/plan-codec/index.d.cts +38 -0
- package/runtime/vendor/plan-codec/provenance.json +25 -0
- package/runtime/workflow/engine.ts +174 -0
- package/runtime/workflow/lib/authority.ts +3 -3
- package/runtime/workflow/lib/calls.ts +47 -37
- package/runtime/workflow/lib/canonicalData.ts +45 -0
- package/runtime/workflow/lib/checkCodeRunner.ts +7 -3
- package/runtime/workflow/lib/config.ts +1 -1
- package/runtime/workflow/lib/context.ts +77 -0
- package/runtime/workflow/lib/create2.ts +18 -121
- package/runtime/workflow/lib/deploymentInfo.ts +8 -0
- package/runtime/workflow/lib/deploymentRecords.ts +3 -1
- 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/externalExecutionScanner.ts +2 -1
- package/runtime/workflow/lib/gateTool.ts +22 -10
- package/runtime/workflow/lib/gateToolSync.ts +11 -3
- package/runtime/workflow/lib/operationNames.ts +32 -0
- package/runtime/workflow/lib/parameters.ts +8 -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 +6 -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 +42 -176
- 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 +99 -58
- package/runtime/workflow/steps/upgrade.ts +88 -57
- package/runtime/workflow/steps/view.ts +1 -1
- package/bin/workflow.cjs +0 -19
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Internal delivery planning
|
|
2
|
+
|
|
3
|
+
`runtime/delivery/planning.ts` collects canonical plans from the shared simulation
|
|
4
|
+
steps. It is an internal API: the launcher owns the local fork, signer,
|
|
5
|
+
read-only source connection and validated source/input/runtime identities.
|
|
6
|
+
Collection rechecks those identities and the pinned source/local block before
|
|
7
|
+
and after all steps. It does not expose execution or grant release readiness.
|
|
8
|
+
|
|
9
|
+
`plan.ts` is a pure parser with no engine, provider or signer imports. Its header
|
|
10
|
+
uses the source deployment's `deploymentId`, explicit `dev`/`prod`, target,
|
|
11
|
+
chain ID, original execution ID, operator, source definition and input hashes,
|
|
12
|
+
and `{ version, digest }` runtime identity. Transaction order is a total order,
|
|
13
|
+
including external transactions. Canonical content hashes exclude timestamps,
|
|
14
|
+
receipts, progress and the downstream production graph. The supplied identity
|
|
15
|
+
ports are trusted inputs; this parser does not verify every project file.
|
|
16
|
+
|
|
17
|
+
The protocol-neutral transaction planner owns normalization, transaction IDs,
|
|
18
|
+
routes, exact expected comparisons, contiguous replay and segment boundaries.
|
|
19
|
+
The legacy release planner delegates to that kernel and retains its old header,
|
|
20
|
+
file and segmented completion APIs. Delivery seals only a complete expected list.
|
|
21
|
+
A changed operator is a different plan identity; replay never silently reclassifies
|
|
22
|
+
routes. Derived values use the original derivation seed and the shared salt
|
|
23
|
+
algorithm, independent of the wallet. Missing, additional or changed replay values
|
|
24
|
+
fail collection.
|
|
25
|
+
|
|
26
|
+
The preparation journal receives actual `DeploymentChange` objects from shared
|
|
27
|
+
CREATE2, placeholder/first-upgrade and upgrade algorithms. It stores canonical
|
|
28
|
+
GateTool requests and plans with relative evidence references, hashes, artifact
|
|
29
|
+
identity, derived keys, and exact mappings from GateTool purposes to outer
|
|
30
|
+
transactions. One multicall can cover several purposes. Replay uses the original
|
|
31
|
+
complete preparation; currently deployed code does not shorten its transaction
|
|
32
|
+
list. A registered address reuse that would bypass preparation is explicitly
|
|
33
|
+
unsupported for collection. Simulation never stages candidates or synchronizes
|
|
34
|
+
manifests. Check observations preserve the definition, ABI, resolved address,
|
|
35
|
+
method, arguments, typed actual/expected values, and stable step/call assertion ID
|
|
36
|
+
separately from reporter events. Empty checks are not business acceptance.
|
|
37
|
+
|
|
38
|
+
Pending UUPS reuse is an explicit evidence port. The common preparation and
|
|
39
|
+
current-code/ERC1967 predicates are also used by the legacy file adapter, which
|
|
40
|
+
lives behind `run.ts`. Delivery evidence binds the original execution, target,
|
|
41
|
+
inputs/artifact/plan hashes, selected steps, infrastructure and derived values.
|
|
42
|
+
Every transaction must have a matching finalized observation from a trusted query
|
|
43
|
+
capability. This unit consumes that capability; it does not implement durable
|
|
44
|
+
receipt production or establish finality from arbitrary JSON flags.
|
|
45
|
+
Each collection retains its validated reuse bindings in immutable
|
|
46
|
+
`runtimeEvidence.pendingUupsReuse`, outside canonical preparation and plan hashes.
|
|
47
|
+
`runtimeEvidence` is a required output; its reuse list is empty when no reuse was
|
|
48
|
+
validated. The replay `expected` type requires only `plan`, `preparations` and
|
|
49
|
+
`verification`, so callers need not supply runtime evidence.
|
|
50
|
+
Replay validates the current evidence again while comparing the complete original
|
|
51
|
+
preparation, transaction mappings and derived bindings exactly. A previous
|
|
52
|
+
collection's `runtimeEvidence` is neither compared nor carried forward.
|
|
53
|
+
|
|
54
|
+
A same-fork deployment followed by an upgrade is refused until a complete,
|
|
55
|
+
validated immutable OpenZeppelin layout baseline is available. Ordinary build
|
|
56
|
+
info and the preparation plan's layout hashes do not establish that baseline,
|
|
57
|
+
particularly for namespaced storage. Registered baseline upgrades continue
|
|
58
|
+
through the existing official OpenZeppelin validator.
|
|
59
|
+
|
|
60
|
+
Custom planning uses a separate named `planOperations(ports, input)` export and
|
|
61
|
+
returns `{ version: 1, operations: [...] }`. Legacy `default`, `main`, and `run`
|
|
62
|
+
exports remain exclusive to the legacy full-context runner. The complete emitted
|
|
63
|
+
list is validated before its first operation dispatches: all five native kinds,
|
|
64
|
+
canonical data, unique operation IDs/deploy aliases, literal address/salt/value
|
|
65
|
+
constraints, method syntax, and known field shapes. Parameter and state references
|
|
66
|
+
remain available for dependent operations. In upgrade proxy selectors, the `0x`
|
|
67
|
+
prefix is reserved for valid nonzero addresses, including the string, `name` and
|
|
68
|
+
`contract` forms; ordinary registry aliases and `instance:Contract` keys remain
|
|
69
|
+
supported. Artifact-dependent ABI compatibility and full reference closure remain
|
|
70
|
+
later validation gates. UUPS descriptors name
|
|
71
|
+
the business implementation in both `contract` and `firstUpgrade.contract`, or
|
|
72
|
+
name the canonical `ERC1967Proxy` in `contract` and the business implementation in
|
|
73
|
+
`firstUpgrade.contract`. No old-project placeholder path is required.
|
|
74
|
+
|
|
75
|
+
The default version-1 `CustomPlanningInputSession` evaluates captured source bytes
|
|
76
|
+
with the bounded `gate-custom-cjs@1` loader. It automatically follows supported
|
|
77
|
+
static module/package inputs, including dead branches, and captures exact business
|
|
78
|
+
read bytes and configuration inputs. `customInputClosure` binds the full session
|
|
79
|
+
union into the plan. Ordered parameter/state/public-target observations and emitted
|
|
80
|
+
operation order remain separate from immutable files. See [the loader policy](delivery-custom-input-closure.md)
|
|
81
|
+
for supported syntax, npm lock/payload identity, configuration, host-adapter limits,
|
|
82
|
+
sealing, and the collector-owned session seam.
|
|
83
|
+
|
|
84
|
+
A custom step declares `reads: { files, params, state, target }` and may supply
|
|
85
|
+
canonical `input`. Read declarations grant permissions; they are not a completeness
|
|
86
|
+
proof. File paths remain inside the task/business root and pass the same sensitive,
|
|
87
|
+
generated-state and project-file checks as imports. Public target resolution allows
|
|
88
|
+
only `id`, `environment`, `chainId`, `admin`, `create2.scheme`, `create2.factory`,
|
|
89
|
+
`uups.placeholderImplementation`, and `multicall.controlledMulticall`. This whitelist
|
|
90
|
+
also applies to emitted descriptor references. Ports expose no HRE, signer, mutation,
|
|
91
|
+
RPC or chain-read capability. This module/data/package contribution does not establish
|
|
92
|
+
aggregate compiler/artifact/OZ/public-config freeze or release readiness.
|
|
93
|
+
|
|
94
|
+
Delivery alone derives bounded engine IDs from framed source-step/custom-operation
|
|
95
|
+
identity. `operationBindings` reverses those IDs, and `transactionBindings` binds
|
|
96
|
+
each ordered outer transaction to its operation, native role or call ordinal.
|
|
97
|
+
Full ABI signatures remain in descriptors/calldata/checks. Grouped calls retain
|
|
98
|
+
one authority decision. Legacy locked-plan IDs are unchanged. Preparation mappings
|
|
99
|
+
and derived keys consistently use the generated engine IDs; launcher pending-reuse
|
|
100
|
+
selection therefore uses the plan's mapped IDs.
|
|
101
|
+
|
|
102
|
+
`runtimeEvidence.forkAudit` captures the local Hardhat instance and chain identity,
|
|
103
|
+
pinned source snapshot, post-setup baseline block/hash, complete ordered local
|
|
104
|
+
blocks/transactions/receipts through the settled end, and trusted send observations.
|
|
105
|
+
The audit is installed before custom module evaluation and is restored in `finally`.
|
|
106
|
+
It rejects missing, extra, pending, duplicate or mismatched sends and receipts,
|
|
107
|
+
changed ancestry/provider identity, and reset/revert/code/storage/nonce mutations
|
|
108
|
+
at the supported provider's public `request`/`send` boundary. Automine is required
|
|
109
|
+
so shared sends cannot wait indefinitely on manually mined receipts. Only the
|
|
110
|
+
launcher's impersonation callback receives a scoped allowance for the requested
|
|
111
|
+
account's impersonation and funding; the asynchronous allowance cannot authorize
|
|
112
|
+
unrelated concurrent or detached calls. These setup calls do not mine transactions.
|
|
113
|
+
Multicall inner operations are counted through their single actual outer envelope.
|
|
114
|
+
|
|
115
|
+
`verifyCapturedForkAudit` is pure: it consumes captured local evidence and expected
|
|
116
|
+
plan/source/chain identities without evaluating project scripts or claiming that
|
|
117
|
+
fork deployments exist on the source chain. Its caller supplies any independently
|
|
118
|
+
validated completed prefix (default empty); evidence cannot exempt its own prefix.
|
|
119
|
+
This run audits only the remaining suffix. Runtime observations are kept outside
|
|
120
|
+
canonical replay plan/preparation identity. This is an audit of the supported
|
|
121
|
+
provider/API boundary, not an isolation boundary against hostile code running as
|
|
122
|
+
the same OS user, retained internal RPC capabilities or arbitrary module imports.
|
|
123
|
+
|
|
124
|
+
The packed acceptance fixture runs the exact Hardhat 2.26.3, ethers 6.15.0,
|
|
125
|
+
OpenZeppelin upgrades 3.9.1 and upgrades-core 1.44.2 stack. It verifies actual
|
|
126
|
+
CREATE2 and atomic firstUpgrade transactions, business writes and multicall,
|
|
127
|
+
code/ERC1967/owner/value checks, a separate fork V2 upgrade against an actually
|
|
128
|
+
synced proxy, and extra/pending transaction refusal while source state, registry
|
|
129
|
+
and manifests remain unchanged. After qualification, a distinct disposable
|
|
130
|
+
`localhost` execution verifies two shared V2 upgrade transactions, official layout
|
|
131
|
+
validation and real development manifest synchronization. It preserves the
|
|
132
|
+
source/fork identity guard instead of syncing a fork under the source target's
|
|
133
|
+
name. This validates shared execution/sync capabilities; it does not implement the
|
|
134
|
+
complete durable development lifecycle.
|
|
135
|
+
|
|
136
|
+
Remaining gates belong to later units: full qualification/release readiness,
|
|
137
|
+
complete frozen business inputs and recursive ABI validation (5c.1),
|
|
138
|
+
registry/evidence acceptance (5c.2), and durable finalized observation
|
|
139
|
+
production/query (6a). The collection returned here is an immutable internal
|
|
140
|
+
plan, not `release_ready` or execution authority.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Developer production delivery
|
|
2
|
+
|
|
3
|
+
`gate-evm-tools/delivery-release` completes the developer side of the new EVM full delivery flow. Run it from the actual project root using the installed, locked package. It generates qualification through `collectDeliveryAggregate`; callers cannot submit an aggregate or choose upstream roots. Every production target in `scripts/tasks/<deploymentId>/task.yaml` must have one current `prod-qualification` task in the same canonical handoff.
|
|
4
|
+
|
|
5
|
+
## Contract commit and deployment input snapshots
|
|
6
|
+
|
|
7
|
+
Before a production release can be prepared or finalized, project contract sources must be committed. The tool discovers the configured Hardhat source directory and actual compiled local imports, checks their Git tree, index and physical bytes, and rejects staged, uncommitted, untracked (including ignored), deleted or conflicted contract sources. This requirement does not block ordinary development or local simulation.
|
|
8
|
+
|
|
9
|
+
`contractSource.commit` is the full SHA of the most recent source-changing commit on the current first-parent history, including source-changing merges. Later script or documentation commits do not change it. The referenced commit must reproduce the current project source set; the source fingerprint must also match the actual qualified compiler inputs. Installed contract dependencies, compilation configuration and runtime identity remain bound by the existing qualified input evidence. No separate deployment-script commit is required.
|
|
10
|
+
|
|
11
|
+
Preparation writes `scripts/tasks/<deploymentId>/releases/<releaseId>/inputs.snapshot.json` before publishing its candidate. The snapshot preserves exact project input bytes: deployment operations, parameters, custom scripts, parameter producers and their observed local dependencies, contract sources, qualified artifacts/configuration, and existing package/TypeScript configuration and production explanation. Installed `node_modules` payloads are not duplicated here; their existing runtime/package evidence remains authoritative. Signing credentials in Hardhat configuration must use environment references, and environment values are never evaluated into the snapshot.
|
|
12
|
+
|
|
13
|
+
The candidate and final bundle bind the snapshot's content hash and exact byte hash. Finalization and production inspection continue checking the current files against the qualified inputs and snapshot. A frozen release cannot be overwritten; changing deployment logic, parameters or checks requires validation and a new release ID. Changes affecting accepted development semantics also require a new development acceptance. A failed execution with unchanged inputs keeps its existing execution ID and reconciles first.
|
|
14
|
+
|
|
15
|
+
Git submission/history checks run during developer preparation and finalization. An administrator consuming a completed release validates its frozen bytes and existing delivery evidence; this does not require Git metadata or a new script commit.
|
|
16
|
+
|
|
17
|
+
The editable `scripts/tasks/<deploymentId>/` files can advance after release. Historical input recovery reads the original published bundle and snapshot, without substituting the latest task files:
|
|
18
|
+
|
|
19
|
+
```js
|
|
20
|
+
const recovered = release.restoreDeliveryReleaseInputs({
|
|
21
|
+
...scope, releaseRef,
|
|
22
|
+
destination: '/absolute/new-directory-outside-the-current-project',
|
|
23
|
+
});
|
|
24
|
+
// recovered.status === 'inputs-restored'; recovered.contractSource.commit identifies the source version.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Recovery validates all snapshot bytes before writing, requires a new external directory and never overwrites the current project. It restores inputs only: original handoff/prerequisite/history evidence, locked dependencies and execution records must still be retained for historical execution and verification. Recovery itself grants no release readiness, signing or broadcast authority, and does not alter chain history.
|
|
28
|
+
|
|
29
|
+
## Preserve accepted development before editing production inputs
|
|
30
|
+
|
|
31
|
+
After `createDevelopmentDelivery(...).continue()` returns `accepted`, preserve its original `source` and `aggregate` with the public capture method **before changing the package, configuration, or production containers**:
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
const release = require('gate-evm-tools/delivery-release');
|
|
35
|
+
const development = release.captureDevelopmentReleaseHistory({
|
|
36
|
+
root: process.cwd(), source: developmentSource, aggregate: developmentAggregate,
|
|
37
|
+
});
|
|
38
|
+
// Persist `development` as JSON; it contains confined project-relative file references.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Capture reads the actual installed package and refuses any payload that differs from the accepted aggregate. It saves the original aggregate, source, changing input containers, full package payload, and a compressed snapshot archive. Its READY file is written last. The archive is a tool-produced installed-payload snapshot, not an npm distribution tarball: the observed npm lock integrity remains separate metadata. The consumer compares the complete snapshot contents with the original package payload, payload digest, and executable runtime identity. No old runtime executes, and no historical digest is rewritten to name a newer runtime.
|
|
42
|
+
|
|
43
|
+
Only production-only container additions/completions are compatible with the existing development acceptance. Development parameters and provenance, public target configuration, existing Hardhat network definitions, compiler/plugins, source, artifacts, scripts and custom dependencies remain bound. A custom dependency on an entire changed container is rejected. Historical task definitions retain all fields except the explicit production-target-list extension. Changed development semantics require a new development acceptance.
|
|
44
|
+
|
|
45
|
+
Public facilities resolve as `baseProfile → dev/prod profile → network overrides`. History checks allow changes to `_profiles.prod` and the selected production network entries without invalidating development acceptance. Shared `_profiles.baseProfile`, `_profiles.dev` and all non-production network entries remain bound, and the resolved development target must still match the accepted target. If a development custom script or parameter producer depends on the complete `config.yaml`, its original file digest remains required even for production-only edits.
|
|
46
|
+
|
|
47
|
+
## Complete prerequisites and production inputs
|
|
48
|
+
|
|
49
|
+
Finish all selected production parameter leaves and provenance through the existing strict parameter resolver. Record concrete public executors, operation order, permissions, checks and adaptations in this round's canonical inputs. Requirements, operation intent and input bytes are frozen per round. A shared `docs/prod-execution-plan.md` is neither required nor automatically archived. Recovery resumes the original per-network executionId after reconciliation and preserves submitted transactions and finality evidence.
|
|
50
|
+
|
|
51
|
+
Development and enabled audit dependencies must appear in each qualification's upstream closure. Each current prerequisite must be completed/successful with `adoptedRev === rev`. Use `release.isDevelopmentAcceptancePrerequisite(task)` to classify development evidence: execution/verification tasks reference actual acceptance or raw CheckCode; completed simulation-only script tasks use report receipts, including script tasks from a referenced earlier round. Simulation-only work cannot replace this round's required verified development acceptance. Other prerequisite skills first produce their actual reports and complete the task with `result.codeRef` and `result.evidence` file refs, then invoke:
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
release.recordDeliveryPrerequisite({
|
|
55
|
+
workspaceRoot, projectRoot: '.', handoff: 'handoff.md',
|
|
56
|
+
taskId, deploymentId, planKey: 'security-audit',
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The tool binds the current canonical task/revision/definition, code reference, and the actual bytes of the union of report refs and declared `expectedArtifacts`. Existing outputs do not need to be added to an already-completed result. Missing or empty files and changed bound bytes still fail. Audit results must explicitly reference `audit-reports/security-audit-report.md`. This receipt establishes provenance and eligibility, not semantic audit quality. Disabled audit lanes do not acquire new requirements. Missing, revised, cancelled, disabled or unsuccessful mandatory prerequisites block readiness.
|
|
61
|
+
|
|
62
|
+
## Two-phase release
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
const scope = {workspaceRoot, projectRoot: '.', handoff: 'handoff.md', taskId, deploymentId};
|
|
66
|
+
const prepared = await release.prepareDeliveryRelease({
|
|
67
|
+
...scope, releaseId: 'vault-2026-10', development,
|
|
68
|
+
targets: [
|
|
69
|
+
{executionId: 'qual-mainnet', request: {
|
|
70
|
+
version: 1, environment: 'prod', purpose: 'prod-qualification', mode: 'simulate',
|
|
71
|
+
network: 'mainnet', operator: publicExecutor,
|
|
72
|
+
sourceRef: {path: 'handoff.md', taskId, planKey: 'qual-mainnet', rev: 1},
|
|
73
|
+
fork: {blockNumber, blockHash, readOnly: true},
|
|
74
|
+
}},
|
|
75
|
+
// Every task.yaml release target, in canonical order.
|
|
76
|
+
],
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The returned `releaseRef` is preliminary: there is no release-ready marker. The actual owner qualifies every target on an isolated read-only fork, retains preparations, full typed assertions and fork audit, then freezes the current business inputs and prerequisite evidence. Nonces, fees and administrator approval belong to the later execution snapshot.
|
|
81
|
+
|
|
82
|
+
The developer mainAgent uses canonical Plan commands to create production tasks
|
|
83
|
+
for each selected target in the same handoff. Each task declares
|
|
84
|
+
`purpose: prod-execution`, prod environment, target, revision and the preliminary
|
|
85
|
+
releaseRef. One task can cover all capabilities; split tasks form an explicit
|
|
86
|
+
dependency chain. Each target's graph covers simulate, execute or export-calldata,
|
|
87
|
+
and verify, and depends on its qualification task. Qualification has
|
|
88
|
+
`purpose: prod-qualification`, actions simulate/verify and no releaseRef.
|
|
89
|
+
The deployment Agent implements and qualifies; mainAgent plans and dispatches.
|
|
90
|
+
Split execute/export tasks also allow reconcile or verify so they can observe
|
|
91
|
+
completion after external execution; simulation or calldata delivery alone cannot
|
|
92
|
+
complete those tasks. A merged task including verify completes only on acceptance.
|
|
93
|
+
The production operator later selects these existing tasks.
|
|
94
|
+
|
|
95
|
+
```js
|
|
96
|
+
const ready = await release.finalizeDeliveryRelease({...scope, releaseId: 'vault-2026-10'});
|
|
97
|
+
const inspected = release.inspectDeliveryRelease({...scope, releaseRef: prepared.releaseRef});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
`sourceDefinitionHash`, `inputsHash`, and `prodTaskGraphHash` are separate. Inputs exclude release definitions, refs, progress and published files. The final bundle binds all three plus its own hash. Classification examines the complete task universe before selecting the desired ref, so wrong-bound, split bindings or missing capability/dependency coverage cannot hide behind ref filtering. Independently complete other releases remain separate.
|
|
101
|
+
|
|
102
|
+
Finalization rereads current source/input/evidence files and task eligibility after asynchronous work, writes the immutable bundle, verifies everything again, then fsyncs the authoritative `release.json` marker last. An interrupted attempt has no ready marker and can retry finalization from its existing candidate. Inspection performs no writes or business recomputation: absent marker returns `{status:'pending'}`; malformed, incomplete or changed ready content throws. A successful result is `{status:'release_ready', release, bundleHash}`. This denotes developer qualification only; R2 provides no production broadcast or host approval capability.
|
|
103
|
+
|
|
104
|
+
## Agent-planned production tasks
|
|
105
|
+
|
|
106
|
+
New tasks use explicit `scope.deployment.purpose` (`analysis`, `dev-execution`,
|
|
107
|
+
`prod-qualification`, `prod-execution`) and `allowedActions`. A step name is a
|
|
108
|
+
planning label. Each selected production target has one qualification task and
|
|
109
|
+
an ordered production dependency chain; it may be one task covering simulate,
|
|
110
|
+
execute/export and verify. All target tasks bind the same frozen release. Split
|
|
111
|
+
tasks explicitly depend on preceding work and the target qualification.
|
|
112
|
+
|
|
113
|
+
Finalization checks complete action coverage and actual prerequisite evidence,
|
|
114
|
+
not a fixed three-node shape. A merged task that includes verify remains open
|
|
115
|
+
through preparation, transaction finality and export; only accepted business
|
|
116
|
+
verification completes it. GateFlow owns dispatch and authorization; these APIs
|
|
117
|
+
never schedule business tasks or grant signing capabilities.
|
|
118
|
+
|
|
119
|
+
Node/npm only need to be compatible with the project tools; an exact host version is not a release prerequisite. Node/OS/architecture/ABI labels remain in evidence, while execution fingerprints bind actual dependency payloads, module resolution, project TypeScript emission, compiler inputs and artifacts. Production re-simulation also checks released calldata and ABI intent before producing an executable plan. The existing reviewed compiler backend restrictions still apply.
|
|
@@ -0,0 +1,75 @@
|
|
|
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. The internal model
|
|
34
|
+
retains the full plan and frozen Safe payload, with signatures left for external
|
|
35
|
+
collection. Production delivery publishes one business CALL array JSON, including
|
|
36
|
+
the readable ABI and reviewed nested intent. The low-level Safe envelope renderer
|
|
37
|
+
still exposes its internal envelope model separately. An unprepared current Safe
|
|
38
|
+
segment reports `preparation-required` and still exports the complete CALL array.
|
|
39
|
+
Later segments await preparation when
|
|
40
|
+
executable. The existing host export boundary separately revalidates completed
|
|
41
|
+
progress using readonly RPC; this is distinct from pure rendering.
|
|
42
|
+
|
|
43
|
+
Reconciliation requires an explicit original outer transaction hash. The collector
|
|
44
|
+
strictly checks all execTransaction fields, ABI canonicality, packed CALL lengths,
|
|
45
|
+
values and complete range coverage. Signatures may vary. The outer sender can be a
|
|
46
|
+
distinct relayer under the sealed any-relayer policy. Base gas/gas price are zero,
|
|
47
|
+
gas token/refund receiver are zero addresses, and actual payment must be zero.
|
|
48
|
+
Exactly the expected SafeTxHash ExecutionSuccess, canonical inclusion and finality
|
|
49
|
+
are required. ExecutionFailure never advances, even when receipt status is one.
|
|
50
|
+
One verified Safe batch is committed atomically to its exact inner indices. The
|
|
51
|
+
EOA duplicate-hash rule is unchanged, and only a complete finalized prefix allows
|
|
52
|
+
the original operator continuation. Successful calls do not replace business
|
|
53
|
+
assertions or production finalization.
|
|
54
|
+
|
|
55
|
+
The finite evidence collector supports Geth 1.15.11 prestateTracer plus its default
|
|
56
|
+
opcode trace. It requests its own fixed options for the same hash, checks full
|
|
57
|
+
address-keyed transaction-time code and proxy slot zero, binds proxy pc 28 SLOAD /
|
|
58
|
+
pc 94 DELEGATECALL and singleton/batch call frames, and tracks CALL versus
|
|
59
|
+
DELEGATECALL storage context. Missing, malformed, incomplete, oversized or
|
|
60
|
+
unavailable evidence is refused. No VERSION/block-end identity fallback exists.
|
|
61
|
+
Type-4 authorization transactions and delegation-designator assets are unsupported.
|
|
62
|
+
The client's declared version is a compatibility gate, not remote binary attestation;
|
|
63
|
+
ordinary configured-RPC trust applies. The host limits both options and response
|
|
64
|
+
size and retains its request/scope/effect guards.
|
|
65
|
+
|
|
66
|
+
Local acceptance uses the already prepared official native Geth 1.15.11 source
|
|
67
|
+
build, dev mode with Prague enabled, and vendored official Safe artifacts. Set
|
|
68
|
+
`GATE_SAFE_GETH_ACCEPTANCE=1` for `node --test test/delivery-safe-geth.test.mjs` after
|
|
69
|
+
starting the pinned isolated fixture at 127.0.0.1:19545. The fixture retains its
|
|
70
|
+
own deployment state under `/tmp/gate-r5-20261023-implementation`; it never clears
|
|
71
|
+
historic accepted chains. The gated suite covers real owners/signatures, value,
|
|
72
|
+
relayers, batch failures, extra calls, same-block fake switch/restore, later-index
|
|
73
|
+
execution, reentry/slot-zero refusal, malformed provider evidence and original
|
|
74
|
+
operator continuation. Local confirmations/finalized tags do not prove production
|
|
75
|
+
consensus finality. R6 owns the final frozen-version packaged lifecycle.
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# EVM full 项目的按需部署接入
|
|
2
|
+
|
|
3
|
+
`gate-tool delivery` 接受已完成生成的 `gateflow-evm-full@1` / `profile: full` 项目。
|
|
4
|
+
新版 full 增加 Foundry 测试配置,部署仍使用受资格校验的 Hardhat 产物。
|
|
5
|
+
它不迁移旧 full/旧模板,不复制 workflow 源码,也不管理项目的 RPC 网络目录。
|
|
6
|
+
正常的 `compile`、`test`、`typecheck`、`clean` 在接入前后均不需要 `config.yaml`、钱包或外部 RPC。
|
|
7
|
+
|
|
8
|
+
## 本地接入
|
|
9
|
+
|
|
10
|
+
创建 JSON 选项文件,例如:
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
{
|
|
14
|
+
"workspaceRoot": "/absolute/workspace",
|
|
15
|
+
"projectRoot": "contracts",
|
|
16
|
+
"targets": [
|
|
17
|
+
{
|
|
18
|
+
"network": "sepoliaDev",
|
|
19
|
+
"environment": "dev",
|
|
20
|
+
"finality": { "confirmations": 1 },
|
|
21
|
+
"create2": {
|
|
22
|
+
"scheme": "evm",
|
|
23
|
+
"factory": "0x1111111111111111111111111111111111111111"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
新 full 已声明 GateTool 与 OZ 升级工具;本地发行版把配套 GateTool 归档保存在项目
|
|
31
|
+
`vendor/` 并使用相对 `file:` 依赖。先在项目安装依赖,setup 保留已有归档声明,
|
|
32
|
+
只接入选中的目标配置与插件,不必再传 `toolPackage`。保留归档和 lockfile,项目移动后仍可重装。
|
|
33
|
+
`gate-tool` 是 `gate-evm-tools` 提供的命令,模板生成器不需要作为业务项目依赖。
|
|
34
|
+
|
|
35
|
+
工厂地址只是格式示例。新 full 已默认写入公共设施,普通目标可省略选项中的 `create2`、
|
|
36
|
+
`uups` 和 `multicall`,仅特殊网络提供覆盖值。无设施默认的工程仍可只使用 call/view/check。
|
|
37
|
+
setup、`loadDeliveryTarget` 与实际输入冻结采用同一套严格字段和非零地址校验。
|
|
38
|
+
具体操作需要哪些设施由执行输入验证决定。
|
|
39
|
+
|
|
40
|
+
### 默认设施继承
|
|
41
|
+
|
|
42
|
+
full 的 `config.yaml` 只定义一份公共地址:
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
_profiles:
|
|
46
|
+
baseProfile:
|
|
47
|
+
uups:
|
|
48
|
+
placeholderImplementation: "0x000000009F21E08bE874b78F40A6d038587E0C54"
|
|
49
|
+
multicall:
|
|
50
|
+
controlledMulticall: "0x00000000bD2f006A24b6d99baaD1323D5809948f"
|
|
51
|
+
dev:
|
|
52
|
+
create2:
|
|
53
|
+
scheme: evm
|
|
54
|
+
factory: "0x2370B48f20FFd75A46B14A9888B3E79677eFC28c"
|
|
55
|
+
prod:
|
|
56
|
+
create2:
|
|
57
|
+
scheme: evm
|
|
58
|
+
factory: "0x6497eC1A66A2dF192179A760e8D35f8d30ddaA06"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
每个选中目标按 **baseProfile → 对应 environment(dev/prod)→ 网络自身字段** 合并,后者优先,
|
|
62
|
+
按设施内部字段覆盖。setup 默认只写选中目标的 environment、finality 和 manifest 等目标配置,
|
|
63
|
+
不复制继承地址;运行时自动解析,所以修改公共地址会影响所有未覆盖的网络。
|
|
64
|
+
特殊网络可手工添加 `multicall.controlledMulticall` 等覆盖,或通过 setup 明确传入。
|
|
65
|
+
重复 setup 保留手工覆盖;明确请求与已存目标值冲突仍拒绝。无需 YAML anchor 或 `<<`。
|
|
66
|
+
|
|
67
|
+
只有 create2、uups、multicall 设施可以继承。environment、finality、admin、manifest、Safe 策略和
|
|
68
|
+
授权不从 profile 继承;环境必须由目标显式选择。当前继承后的设施纳入规范输入及冻结指纹;
|
|
69
|
+
修改 base/profile/目标会触发输入变化检查,不能改变已冻结 release 后直接继续生产执行。
|
|
70
|
+
这些地址来自历史模板,仍须核验所选链的代码、接口和权限。
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
gate-tool delivery inspect --options delivery-options.json
|
|
74
|
+
gate-tool delivery setup --options delivery-options.json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`inspect` 是只读诊断。`setup` 完成冲突预检后,仅补充缺失的选中目标配置、
|
|
78
|
+
缺失的 `contractInfo.json`(内容为 `{}`)和所需的开发依赖声明。
|
|
79
|
+
已有 YAML 注释、其他目标、自定义字段、业务代码、注册表、Git 元数据和生成器 marker 均保留。
|
|
80
|
+
已有值与明确请求冲突、路径包含 symlink、模板不受支持时,在写入前拒绝。
|
|
81
|
+
|
|
82
|
+
依赖未就绪时返回 `dependencies_pending`,CLI 退出码为 `2`;不会安装依赖或添加失败的插件 import。
|
|
83
|
+
用户在目标项目显式安装依赖后再次运行 setup,才会把
|
|
84
|
+
`import "gate-evm-tools/delivery-hardhat";` 放在其他 import 之前。
|
|
85
|
+
重复 setup 不改写已满足要求的文件。退出码 `0` / `ready` 只表示接入完成,
|
|
86
|
+
不表示 source 已验证、RPC 已连接、部署获准或合约已部署。`setup_pending` 是 inspect 发现仍有配置修改待完成。
|
|
87
|
+
|
|
88
|
+
当前未发布的 API 使用本地构建 tarball:full/App 已提供配套归档时直接使用项目声明。
|
|
89
|
+
显式切换工具包时,在 GateTool 仓库运行 `npm run build` 和
|
|
90
|
+
`npm pack --pack-destination /absolute/build`,更新项目本地归档、依赖声明与实际 lockfile。
|
|
91
|
+
`toolPackage` 仅供尚无工具包声明的接入选项使用,不覆盖已有不同的包选择。
|
|
92
|
+
该字段可省略,但仅有 `gate-evm-tools@1.2.0` 版本号不能证明 API 已存在;诊断会检查本地 exports。
|
|
93
|
+
如 package.json 已声明另一来源,先显式调整该依赖,不会静默覆盖人工声明。
|
|
94
|
+
|
|
95
|
+
验证的项目工具链是 Hardhat `2.26.3`、ethers `6.15.0`、hardhat-ethers `3.1.0`、
|
|
96
|
+
TypeScript `5.9.3`、ts-node `10.9.2`。按需声明 OZ hardhat-upgrades `3.9.1`、
|
|
97
|
+
upgrades-core `1.44.2`、contracts `5.4.0`;业务 Solidity 源码引用 contracts-upgradeable 时才声明 `5.4.0`。
|
|
98
|
+
诊断检查实际本地包、delivery exports 和本地 npm 依赖树,不把祖先目录的依赖当作本项目就绪。
|
|
99
|
+
不添加 toolbox、zkSync、Foundry、patch-package 或 postinstall 补丁。
|
|
100
|
+
|
|
101
|
+
setup 同时写入编译依赖的已审核版本约束,包括 semver 5/6/7 各自的版本和 ansi-regex 6。
|
|
102
|
+
首次安装无需临时添加 overrides;已有冲突选择会在写入前拒绝。安装后提交项目 lock,
|
|
103
|
+
后续使用 `npm ci` 复现依赖。版本锁定不替代编译依赖内容校验,未审核的包内容仍会被拒绝。
|
|
104
|
+
|
|
105
|
+
编译来源校验接受 npm 官方源和 `https://registry.npmmirror.com/`,以及显式本地 tgz。
|
|
106
|
+
镜像安装仍须匹配 lock 中的 SHA-512 完整性和已审核的包版本、实际文件内容;不会因镜像地址跳过校验。
|
|
107
|
+
|
|
108
|
+
网络仍只定义在项目 `hardhat.config.ts`。接入读取静态 const/default-export 对象中的选中网络,
|
|
109
|
+
支持字面 URL、`process.env.NAME`、`||` 和 `??`,以及配套 full 模板固定的 `rpcUrl({ route, publicFallback, useBaseRpc })`。模板从项目目录加载 `rpc.env`、`.env`,优先级为进程变量 → `rpc.env` → `.env`。`rpc.env` 默认包含公开 RPC(含 Sepolia)和空的 `BASE_RPC_URI=`;网络显式声明 `useBaseRpc`:`true` 且前缀非空时共用 `BASE_RPC_URI/<route>/`,否则使用 `<CHAIN>_RPC_URL` 备用 URL;`false` 始终使用备用 URL。dev/prod 共用同链路由和备用 URL。Sepolia、Fantom 默认设为 `false`。有限解析器只接受字面布尔值并将开关写入配置定义。静态读取器只识别固定 loader/helper,不执行项目代码;其他动态计算的选中网络需要人工改为可验证的定义。本地 env 不进入交付证据或 release 输入快照。业务依赖扫描遵循静态 `paths.sources`(默认 `contracts`),且只读取项目内目录。
|
|
110
|
+
|
|
111
|
+
full 预设 `ethDev`/`ethProd` 等成对别名,`config.yaml` 显式绑定 dev/prod,设施继续按 profile 继承。dev 的 `resolveHardhatAccounts(process.env.PRIVATE_KEY)` 由可信的 `gate-evm-tools/custody` 导入提供;静态定义只记录环境引用。prod 的项目 accounts 保持为空,通过正式运行时核验权限后执行或导出带 ABI 的 calldata。预设列表不自动成为部署目标。
|
|
112
|
+
诊断只输出 network、chainId 和 rpcConfigured,不输出解析后的 RPC URL。
|
|
113
|
+
`inspect/setup` 只检查进程变量和 `rpc.env`,始终不访问 `.env`;把所选网络的 RPC 配置放在 `rpc.env`。只在 `.env` 中提供 RPC 不算公开预检配置完成,缺少时返回 `rpcConfigured: false`。这使预检在 Agent 禁止读取凭证文件的沙箱中仍可运行;依赖未安装时继续返回 `dependencies_pending`,不伪造 ready。
|
|
114
|
+
实际运行时观察仍按完整的进程变量 → `rpc.env` → `.env` 规则核对 Hardhat 配置,不因沙箱拒绝访问而跳过校验。需要凭证的执行使用 App 已有的受控宿主入口;开发执行由宿主进程加载项目 `.env`,生产签名使用宿主签名器。Agent 不读取、打印或复制私钥,也不关闭沙箱。普通 Hardhat 编译/测试在 `.env` 被保护时不要求钱包。
|
|
115
|
+
可通过项目生成器或手工增加网络,无需发布 GateTool。
|
|
116
|
+
|
|
117
|
+
## 公共 API
|
|
118
|
+
|
|
119
|
+
- `gate-evm-tools/delivery-setup`:`inspectDeliveryProject(options)`、`setupDeliveryProject(options)`、
|
|
120
|
+
`readPublicProjectNetworkSnapshots(root, aliases, env?)`、`readProjectNetworkSnapshots(root, aliases, env?)`、`loadDeliveryTarget(root, network, environment?)`、
|
|
121
|
+
`configureDeliveryEnvironment({ root, env?, argv? })`。
|
|
122
|
+
- `gate-evm-tools/delivery-protocol`:`parseDeliveryRequest(input)`、
|
|
123
|
+
`validateDeliveryRpc(input, selectedProjectSnapshot, loadProvider)` 及请求类型。
|
|
124
|
+
- `gate-evm-tools/delivery-hardhat`:项目配置的薄插件入口,带 Hardhat ethers/upgrades 类型扩展。
|
|
125
|
+
- `gate-evm-tools/delivery-policy`:不加载 OZ 的共享 manifest 策略。
|
|
126
|
+
|
|
127
|
+
`readProjectNetworkSnapshots` 提供给本地 provider 装配使用,包含解析后的 URL,
|
|
128
|
+
保留完整运行时环境读取语义;`readPublicProjectNetworkSnapshots` 用于不访问 `.env` 的公开预检,不能替代实际执行的运行时观察。两者都不要写入交付文件或日志。`validateDeliveryRpc` 首先校验请求语法,之后才调用
|
|
129
|
+
注入的 `loadProvider(snapshot)`;provider 的 `request({ method: "eth_chainId", params: [] })`
|
|
130
|
+
必须返回与项目快照一致的真实 chain ID。RPC 失败或链 ID 不符直接拒绝,没有备用网络。
|
|
131
|
+
|
|
132
|
+
## 显式 runtime 请求协议
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"version": 1,
|
|
137
|
+
"environment": "dev",
|
|
138
|
+
"purpose": "dev-execution",
|
|
139
|
+
"mode": "simulate",
|
|
140
|
+
"network": "sepoliaDev",
|
|
141
|
+
"sourceRef": {
|
|
142
|
+
"path": "handoff/task-1/handoff.md",
|
|
143
|
+
"taskId": "task-1",
|
|
144
|
+
"planKey": "rollout",
|
|
145
|
+
"rev": 1
|
|
146
|
+
},
|
|
147
|
+
"devSigner": "0x2222222222222222222222222222222222222222"
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
所有字段严格校验,不存在默认 execute。environment、purpose、mode 必须是字符串,不接受数组或对象的隐式转换。
|
|
152
|
+
sourceRef.path 必须是 workspace-relative POSIX 路径,releaseRef.path 必须是 project-relative POSIX 路径;
|
|
153
|
+
ID、network alias 和路径禁止 traversal/prototype 名称。
|
|
154
|
+
|
|
155
|
+
| purpose | environment | mode | 额外约束 |
|
|
156
|
+
| --- | --- | --- | --- |
|
|
157
|
+
| dev-execution | dev | simulate / execute / reconcile / verify | devSigner;禁止 operator |
|
|
158
|
+
| prod-qualification | prod | simulate / verify | operator;simulate 必需 fork `{ blockNumber, blockHash, readOnly: true }`;verify 不带 fork/releaseRef,只读、不广播 |
|
|
159
|
+
| prod-execution | prod | simulate / execute / export-calldata / reconcile / verify | operator;必需 releaseRef `{ path, releaseId, inputsHash }` |
|
|
160
|
+
|
|
161
|
+
`inputsHash` 是 64 位小写 hex,不含 `0x`。fork blockNumber 是非负安全整数;只有 simulate 可带 fork。
|
|
162
|
+
qualification verify 不需要伪造 fork 或 releaseRef,不接受 execute/export-calldata/reconcile;具体只读 verification orchestration 在后续阶段实现。
|
|
163
|
+
所有 signer/operator 地址只是请求约束,不是授权证明。业务 owner 留在冻结 source 的业务参数中,
|
|
164
|
+
不会从 devSigner/operator 推导,也不接受 `businessOwner` 或参数覆盖字段。
|
|
165
|
+
不支持 `admin_release`、旧 SuperTask 字段、`mergeCommit`、`parameterOverrides`、`authorized: true`。
|
|
166
|
+
|
|
167
|
+
这一步只定义语法、路由和 RPC 一致性验证;canonical source 文件内容核验、输入冻结、prod host 授权、
|
|
168
|
+
执行/finalize/export CLI 在后续交付阶段实现。这里没有把新请求转译给旧 `workflow/run.ts`。
|
|
169
|
+
|
|
170
|
+
## Manifest 与普通开发命令
|
|
171
|
+
|
|
172
|
+
插件只有在显式设置 `GATE_DELIVERY_CONTEXT`(上述请求的 JSON)时读取选中目标。
|
|
173
|
+
它在任何 OZ import 之前设置 `MANIFEST_DEFAULT_DIR` 和 `GATE_WORKFLOW_TARGET`;
|
|
174
|
+
`prod` 必须使用 `.openzeppelin`,`dev` 必须使用隔离目录(默认 `.openzeppelin.dev`)。
|
|
175
|
+
两种环境可以使用同一 chain ID。每个 runtime target 应使用全新子进程;继承的目录/目标冲突、
|
|
176
|
+
不同的 Hardhat config/tsconfig、网络路由冲突或已提前加载 OZ 均拒绝。
|
|
177
|
+
所有重复 CLI 参数和对应环境变量都会逐一核对,不能用 CLI 掩盖继承的冲突值。
|
|
178
|
+
无显式 network selector 时读取项目的静态 `defaultNetwork`;插件还会在 HRE 初始化时核对实际
|
|
179
|
+
`hre.network.name`、project root 和 configFile,拒绝 config extender 改写后的不一致。
|
|
180
|
+
只有 simulate 可一致地选择本地 hardhat;该例外不会覆盖显式 selector 冲突或错误的默认网络。
|
|
181
|
+
|
|
182
|
+
没有 delivery context 时不读取 YAML。插件启用 OZ 原生 storageLayout 和 canonical ERC1967Proxy
|
|
183
|
+
依赖编译,不重写 compiler、optimizer、viaIR、artifact/cache 路径,也不读取钱包。
|
|
184
|
+
旧 workflow 配置入口仅接受 local/development/production,拒绝 dev/prod;新协议通过独立 loader 只接受 dev/prod。
|
|
185
|
+
共享 manifest/preparation 策略支持两套环境名称,但不会将新环境转换为旧 workflow 请求。
|
|
186
|
+
|
|
187
|
+
真实本地验收:`npm run test:delivery:evm`。测试需要相邻的 `EvmHardhatCli` checkout 已构建。该测试生成全新 full、安装本地 tarball、
|
|
188
|
+
编译临时 UUPS 合约并验证 canonical prepare,确认重复 setup 稳定及删除 YAML 后普通命令正常;
|
|
189
|
+
它不发布 npm 包,也不连接真实链。
|
|
190
|
+
|
|
191
|
+
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.
|
|
192
|
+
|
|
193
|
+
Owned multi-target input qualification is available through
|
|
194
|
+
`gate-evm-tools/delivery-aggregate`; see [aggregate lifecycle and API](delivery-aggregate.md).
|
|
195
|
+
|
|
196
|
+
Node 最低版本为 22.13.0(node:sqlite);本次本地组合使用 Node 24.3.0 / npm 11.4.2。
|
|
197
|
+
|
|
198
|
+
Setup 同时补齐已验收编译适配器所需的 npm overrides,限定实际依赖版本;不同 undici/tslib 主版本分别约束。已有同名 override 冲突会在写入前返回错误。依赖树、lock SRI 和实际包内容校验继续生效,不以 overrides 代替包身份验证。项目应保存真实安装后的 lockfile,并使用 npm ci 复现。
|
|
@@ -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 explicitly bound by `scope.deployment.purpose`. Main Agent may use
|
|
22
|
+
custom step labels or combine capabilities in one task. The supported execution
|
|
23
|
+
purposes are dev-execution, prod-qualification and prod-execution; analysis is
|
|
24
|
+
planning only. Allowed actions, environment, target and release references are
|
|
25
|
+
validated independently of task labels.
|
|
26
|
+
|
|
27
|
+
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.
|
|
28
|
+
|
|
29
|
+
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.
|
|
30
|
+
|
|
31
|
+
## Definition identity
|
|
32
|
+
|
|
33
|
+
`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 prod-execution 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.
|
|
34
|
+
|
|
35
|
+
The returned recursively immutable binding contains:
|
|
36
|
+
|
|
37
|
+
- `request` and `invocation` (lane and complete parsed task).
|
|
38
|
+
- `sourceDefinition`, `sourceDefinitionBytes` and SHA-256 `sourceDefinitionHash`.
|
|
39
|
+
- 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.
|
|
40
|
+
- `observation.path` and raw file SHA-256 for audit observation only.
|
|
41
|
+
|
|
42
|
+
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.
|
|
43
|
+
|
|
44
|
+
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.**
|
|
45
|
+
|
|
46
|
+
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.
|
|
47
|
+
|
|
48
|
+
`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.
|
|
49
|
+
|
|
50
|
+
## Vendor provenance and build
|
|
51
|
+
|
|
52
|
+
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.
|
|
53
|
+
|
|
54
|
+
Maintainer refresh, from a SmartFlowAI checkout with the corresponding committed sources:
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
node scripts/build-plan-codec.mjs --out ../EvmGateTools/runtime/vendor/plan-codec
|
|
58
|
+
node scripts/build-plan-codec.mjs --out ../EvmGateTools/runtime/vendor/plan-codec --verify
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
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.
|
|
62
|
+
|
|
63
|
+
`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.
|
|
64
|
+
|
|
65
|
+
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.
|
|
66
|
+
|
|
67
|
+
Task purpose is read from scope.deployment.purpose; custom step names and merged tasks are supported. allowedActions, target, source revision and release binding remain mandatory gates.
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
> 历史文档:其中的 gate-workflow 命令已移除。新项目使用 gate-tool delivery 与 delivery API,见 [部署接入](delivery-setup.md)。
|
|
2
|
+
|
|
1
3
|
# Direct-package template acceptance — 2026-09-09
|
|
2
4
|
|
|
3
5
|
New full projects use `gate-workflow` directly through the existing npm command names. Hardhat and tests import `gate-evm-tools/runtime-config/*` and `runtime/*`; the template no longer contains `scripts/workflow` or `scripts/config` forwarding directories. Business contracts, task/custom scripts, configuration and state remain project-owned.
|