ece-tools parity matrix¶
Honesty surface for MageLift vs Adobe Commerce Cloud / ece-tools operator
expectations (ECE-01, D-06). Every row is either closed (behavior shipped and
verifiable in this repo) or intentional-gap (explicitly not claimed). Blank
status cells are forbidden.
This is not a full ece-tools behavioral clone. Claims below match what Phase 4 shipped in plans 04-03 (import allowlist), 04-04 (SCD strategy/threads), and 04-05 (m2-hotfixes). Public Adobe documentation is cited for product shape only; no sibling PaaS source is vendored (IMPORT-06 / provenance).
Field shapes for portable Magento inputs live in
configuration (build.staticContent.strategy /
threads, application.cron, typed build.hooks).
Status vocabulary: closed | intentional-gap.
Build phase (prepare / image)¶
| Capability | Status | Notes |
|---|---|---|
composer validate --strict |
closed | LifecyclePlan validate phase (build/src/Magento/LifecyclePlan.php). |
composer check-platform-reqs --no-dev |
closed | Same validate phase as ece-tools-style platform gate. |
composer install --no-dev (prefer-dist, optimize-autoloader) |
closed | Build phase before patches and Magento argv. |
Custom m2-hotfixes/*.patch apply (alpha order, after composer install) |
closed | Clean-room MageLift\Build\Magento\PatchApplier via host patch -p1. See build/src/Magento/PatchApplier.php (ECE-02 / 04-05). |
QUALITY_PATCHES / cloud-required Quality Patches Tool IDs |
intentional-gap | No Adobe quality-patch database is vendored (IMPORT-06). Selecting QPT IDs is not implemented. |
setup:di:compile during prepare |
closed | Emitted after composer install and hotfixes in build phase. |
setup:static-content:deploy locale × theme matrix |
closed | build.staticContent.locales / themes → prepare protocol → Magento SCD argv. |
SCD strategy (SCD_STRATEGY / -s) |
closed | build.staticContent.strategy → -s per locale×theme (ECE-03 / 04-04). Values: quick, standard, compact. |
SCD threads (SCD_THREADS / -j) |
closed | build.staticContent.threads (≥1) → -j per locale×theme (ECE-03 / 04-04). |
| Default SCD when locales/themes unset | closed | Single setup:static-content:deploy --no-interaction with no -s/-j. |
Free-form PaaS hooks.build shell scripts |
intentional-gap | MageLift accepts typed build.hooks command vectors (composer / magento only); shell strings are rejected and importers treat free-form hooks as unmapped. |
Magento Cloud bin/magento balance / module enable cloud helpers |
intentional-gap | Not part of the prepare DAG; operators use typed hooks or day-2 CLI. |
| OCI packaging after prepare | closed | Go build pipeline owns package; PHP plan exposes a stable package hand-off node. |
Deploy phase¶
| Capability | Status | Notes |
|---|---|---|
app:config:import |
closed | Deploy phase Magento argv in LifecyclePlan. |
setup:upgrade --keep-generated |
closed | Deploy phase after config import. |
cache:clean after upgrade |
closed | Deploy phase. |
Free-form PaaS hooks.deploy shell scripts |
intentional-gap | Deploy-time typed hooks are provider extension concerns; PaaS shell hooks are unmapped on import. |
| Zero-downtime blue/green Magento Cloud deploy semantics | intentional-gap | MageLift uses candidate ECS task + promote; not an ece-tools clone. |
| Dump / media cutover during deploy | intentional-gap | Phase 5 owns dump/media; not claimed here. |
Post-deploy phase¶
| Capability | Status | Notes |
|---|---|---|
cache:flush |
closed | Post-deploy Magento argv in LifecyclePlan. |
Free-form PaaS hooks.post_deploy shell scripts |
intentional-gap | Same typed-hook policy as deploy; not imported as shell. |
| Warm-up pages / indexers as ece-tools post-deploy extras | intentional-gap | Operators use day-2 reindex / custom hooks; not default post-deploy. |
D-07 env and relationship allowlist (ECE-04)¶
Frozen v1 importer allowlist. Mapped keys become reviewable magelift.yaml;
everything else is reported in magelift.unmapped.md (or stem sidecar) with
non-zero exit; never a silent drop (D-05 / 04-03).
| PaaS shape | Status | Maps to |
|---|---|---|
CRYPT_KEY (stage / variables) |
closed | target.aws.encryptionKeySecretArn placeholder ARN only; plaintext crypt never written (internal/paasimport). |
UPDATE_URLS |
closed | environments.staging.domain (host stripped from URL). |
Routes host (non-{default} pattern) |
closed | environments.staging.domain when no UPDATE_URLS. |
SCD_STRATEGY |
closed | build.staticContent.strategy. |
SCD_THREADS |
closed | build.staticContent.threads (integer ≥1; invalid values → unmapped). |
| DB / MySQL / MariaDB relationship | closed | Recognized as supported shape; runtime injects DB via capability / MAGENTO_DC_* seams (no raw env dump). |
| Redis (cache / session) relationship | closed | Recognized; runtime Magento env from cache capability. |
| OpenSearch / Elasticsearch relationship | closed | target.aws.catalog.searchMode intent (e.g. serverless) + runtime search env. |
| RabbitMQ / AMQP relationship | closed | target.aws.catalog.queueMode (e.g. ecs-rabbitmq) + runtime queue env. |
Magento cron:run crontab entries |
closed | application.cron list of {schedule, command}. |
| Free-form shell crontab entries | intentional-gap | Reported unmapped; not rewritten into portable YAML. |
| Long-tail stage / variables env beyond this allowlist | intentional-gap | Examples: MYSQL_USE_SLAVE_CONNECTION, REDIS_BACKEND, NPROC, PHP_* tuning, SKIP_HTML_MINIFICATION, CLEAN_STATIC_FILES, WARM_UP_PAGES, SCD_MATRIX, SCD_MAX_EXEC_TIME, ERROR_REPORT_DIR_NESTING_LEVEL, ENABLE_EVENTING, Xdebug flags. Appear in unmapped sidecar; operators edit magelift.yaml by hand. |
Dumping raw MAGENTO_DC_* blocks into YAML |
intentional-gap | Runtime adapters already emit MAGENTO_DC_* from capabilities; importers map relationships/intent only. |
Operator notes¶
- Importers:
magelift init --from-acc/--from-upsun(see migrating from PaaS). - Foreign PaaS YAML is never valid
--configinput:config.LoadrequiresschemaVersion: 1. - Clean-room policy: provenance and
make check-clean-room.