No description
  • PHP 88.1%
  • Twig 7.3%
  • JavaScript 2.5%
  • CSS 1.8%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-17 23:40:35 +00:00
.gitea/workflows Suspend all testing by explicit user instruction and remove testing documentation 2026-10-05 23:22:26 +00:00
assets refactor(catalog): retire duplicate orchestration and preserve recovery 2026-10-17 23:40:35 +00:00
bin feat: implement P01 Symfony foundation and local Docker QA 2026-10-03 16:52:36 +03:00
config fix: explain approval conflicts and retain safe correlation diagnostics 2026-10-08 21:13:33 +00:00
deploy feat(storage): schedule bounded owner-scoped local retention 2026-10-08 09:15:40 +00:00
docs refactor(catalog): retire duplicate orchestration and preserve recovery 2026-10-17 23:40:35 +00:00
migrations feat(catalog): retain special product scope and report partial imports 2026-10-17 23:27:02 +00:00
public feat: implement P01 Symfony foundation and local Docker QA 2026-10-03 16:52:36 +03:00
resources Read full Shopify catalog without bulk job submission 2026-10-07 23:37:32 +00:00
scripts chore(ops): disable backup creation per operator instruction 2026-10-07 22:31:18 +00:00
src refactor(catalog): retire duplicate orchestration and preserve recovery 2026-10-17 23:40:35 +00:00
templates refactor(catalog): retire duplicate orchestration and preserve recovery 2026-10-17 23:40:35 +00:00
tests Sort run library by activity and add reversible batch archive 2026-10-05 23:16:10 +00:00
tools feat(storage): schedule bounded owner-scoped local retention 2026-10-08 09:15:40 +00:00
.dockerignore feat: implement P02 tenant identity and encrypted credential storage 2026-10-03 18:08:40 +03:00
.env feat: implement P02 tenant identity and encrypted credential storage 2026-10-03 18:08:40 +03:00
.env.example feat: implement P02 tenant identity and encrypted credential storage 2026-10-03 18:08:40 +03:00
.gitattributes feat: implement P01 Symfony foundation and local Docker QA 2026-10-03 16:52:36 +03:00
.gitignore feat: implement P02 tenant identity and encrypted credential storage 2026-10-03 18:08:40 +03:00
.php-cs-fixer.dist.php feat: implement P02 tenant identity and encrypted credential storage 2026-10-03 18:08:40 +03:00
AGENTS.md chore(ops): disable backup creation per operator instruction 2026-10-07 22:31:18 +00:00
CHANGELOG.md docs(release): qualify P20 local candidate and record blocked live gates 2026-10-04 13:23:12 +03:00
compose.override.yaml.example feat: implement P01 Symfony foundation and local Docker QA 2026-10-03 16:52:36 +03:00
compose.yaml feat(P05): add durable ledgers outbox and recovery orchestration 2026-10-03 21:12:13 +03:00
composer.json Suspend all testing by explicit user instruction and remove testing documentation 2026-10-05 23:22:26 +00:00
composer.lock Implement P11 guarded media ingestion and asynchronous recovery 2026-10-04 04:02:06 +03:00
LICENSE Initial commit 2026-10-03 12:27:41 +00:00
MAGIFY_CATALOG_MODERNIZATION_ROADMAP.md docs: add catalog modernization roadmap 2026-10-06 17:12:12 +00:00
phpstan.neon feat(inventory): complete P13 authority and safe quantity pipeline 2026-10-04 05:58:05 +03:00
phpunit.xml.dist feat: implement P02 tenant identity and encrypted credential storage 2026-10-03 18:08:40 +03:00
README.md Suspend all testing by explicit user instruction and remove testing documentation 2026-10-05 23:22:26 +00:00
symfony.lock feat: implement P01 Symfony foundation and local Docker QA 2026-10-03 16:52:36 +03:00

Magify Connector

One-way Magento → Magify → Shopify catalog middleware. P00–P19 implement normalized adapters, encrypted workspace configuration, durable discovery/planning/recovery, guarded draft catalog components, operator console and native packaging/restore. P20 prepares the MVP 0.1 local candidate: live pilot is BLOCKED and production is NO-GO. The user selected local qualification only; no release tag or production deployment is authorized.

Start with the current compatibility matrix, pilot evidence, 32-gate acceptance checklist, release notes and operator guide. The roadmap and phase reports retain detailed history; planned files are not implementation/qualification evidence.

Local setup

Requirements: Docker Desktop/Engine with Linux containers and Docker Compose v2. No host PHP, Composer or Node is required. PHP 8.4.26, Symfony components 7.4 LTS, MySQL 8.4.11 and Redis 7.4 are selected; Composer versions are pinned in composer.lock. Configuration is explicit rather than generated through Flex recipes; symfony.lock is an empty recipe registry, not evidence of applied recipes.

  1. Check that loopback port 8015 is free. Keep Bagira 8000, Ygen 8001, Hover 8013 and Whather 8014/HMR 5173 untouched. Change MAGIFY_HTTP_PORT in the local env if needed.
  2. Obtain approval for local-only APP_SECRET, MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD in ignored .env.local and the external dev-v1 AEAD keyring in ignored .secrets/keyring.json. Local fixture qualification requires no Magento/Shopify credentials. Persistent installation/admin/store setup needs its own scope. Symfony runtime consumes Compose/process environment directly and does not load .env.local itself.
  3. Build PHP without generating secrets (PowerShell):
docker build -t magify-local-php:p01 -f deploy/php/Dockerfile .

After specific approval, explicitly bootstrap the three environment secrets and external keyring; the tool refuses an existing .env.local and never prints values:

docker run --rm --mount "type=bind,source=$($PWD.Path),target=/app" --entrypoint php magify-local-php:p01 tools/bootstrap-dev.php --generate
docker run --rm --mount "type=bind,source=$($PWD.Path),target=/app" --entrypoint php magify-local-php:p01 tools/bootstrap-keyring.php --generate --approved
docker compose --env-file .env.local up -d --build --wait app nginx mysql redis
docker compose --env-file .env.local exec -T app composer install --no-interaction --prefer-dist
docker compose --env-file .env.local exec -T app php bin/console doctrine:migrations:migrate --no-interaction
docker compose --env-file .env.local exec -T app sh -c 'mkdir -p var/safety public/assets; cp -R assets/styles assets/controllers public/assets/'
docker compose --env-file .env.local exec -T app php tools/check-local.php

On Linux use $(pwd) as the bind source. Windows file protection relies on the current user directory ACL; POSIX chmod does not enforce Windows ACL. Keep .env.local private and excluded from backups/support exports intended for sharing. Rotate dev values by recreating only the approved disposable Magify database volume, never another project's data. Do not print compose config with resolved secrets; use config --quiet.

When this separately approved runtime is running, open http://127.0.0.1:8015/healthz for liveness and /readyz for local MySQL migration/Redis readiness. Failures return 503 without endpoint/credential details. Nginx restricts readiness to local/private access. The authenticated dashboard at / and /login are implemented. Administrator bootstrap requires separately approved identity/password input; see the secrets runbook. P20 fixture services bind no host ports and leave no running URL.

MySQL/Redis have no published ports. Compose project magify-local isolates its services, network and named MySQL/Redis/vendor/cache volumes. PHP runs as www-data; only Nginx publishes loopback HTTP. Actual worker/scheduler/relay/recovery commands are opt-in under the runtime profile. They are not placeholders. Inspect current connections, read/write authority, safety markers and outstanding outcomes before enabling them; a running worker never grants store approval. Local image pcntl support/graceful signal behavior must be checked before using local long-running workers; native deployment requires CLI pcntl.

P19 write safety blocks commerce mutations if var/safety is missing/inaccessible or contains WRITE_DISABLED/RECOVERY_READ_ONLY. Creating the local directory grants no authority; keep markers active after restore. Native shared artifacts/safety and protected configuration use the deployment runbook.

# Stop only this project; data remains in named volumes.
docker compose --env-file .env.local down

Validation and CI

Native production

Live reads and writes require a named pair and bounded action approval. Shopify authentication, schema-qualified pinned documents, guarded catalog/inventory/publication paths are implemented locally; no actual store is qualified. New products stay draft/unpublished. Inventory is disabled in the selected candidate; bulk mutations default off. Publication, identity-definition setup, adoption and destructive actions require separate approval. Strict dry run may read/renew auth/persist local plans but submits no commerce mutation, including bulk query jobs.

Read the Magento contract, Shopify auth contract and component contracts before connector setup. Official offline 2026-10 schema validation passed in P17; schema validation does not prove actual store semantics. Performance evidence is synthetic discovery/ledger measurement, not a live full-catalog SLA. P20 pilot lists the remaining actual-store, native-host and release prerequisites.