← back to Designer Wallcoverings
OWNERSHIP.md
52 lines
# OWNERSHIP — Designer-Wallcoverings (capital, hyphen)
_Authoritative boundary doc. Steve approved "Option B — keep separate + decouple" on 2026-09-22 (analysis memo `~/.claude/yolo-queue/pending-approval/dw-two-repos-consolidation-analysis-20260922.md`). This file + its twin in `~/Projects/designerwallcoverings/OWNERSHIP.md` are the source of truth for which repo owns what. There are TWO DW repos on purpose — they are NOT duplicates, NOT to be merged._
## What THIS repo is
`~/Projects/Designer-Wallcoverings` — pkg `designer-wallcoverings` v1.2.16, "Designer Wallcoverings Shopify Management". The **storefront + cadence monorepo** (19 GB, 41 nested repos: DW-Agents, DW-Websites, DW-MCP, DW-Programming, DW-Skills, brand-router, shopify, admin, components, …). Local-only (no git remote). ~29 `com.steve.*` launchd jobs run its scripts.
## This repo OWNS (canonical)
- **Storefront / Shopify theme layer** — all `shopify/scripts/push-*-to-theme` / `push-*-to-live`, PDP/grid/collection-hero work, theme backups.
- **The hourly product-upload CADENCE engine** — `shopify/scripts/cadence/` (cadence-import.js, activate-gated.js, vendors.js). Driven by `com.steve.dw-cadence-hourly`.
- **The canonical shared GUARD libs** — `shopify/scripts/lib/validate-before-activate.js` (the single activation gate) + `shopify/scripts/lib/inventory-stamp-guard.mjs` (the $0-orderable guard, TK-11357) + `shopify/scripts/lib/internal-guard.js` (the internal-line front-facing guard). See "Shared guard libs" below.
- The DW-* nested stack (Agents/Websites/MCP/Skills/Product-Pages/brand-router/admin) — none of which exists in the lowercase repo.
- The full Shopify token set lives in THIS repo's `.env` (`SHOPIFY_ADMIN_TOKEN`, `SHOPIFY_FULL_ACCESS_TOKEN`, `SHOPIFY_THEME_TOKEN`, `SHOPIFY_NAV_TOKEN`) + `ANTHROPIC_API_KEY` + a `dw_unified` `DATABASE_URL`.
## The OTHER repo (`~/Projects/designerwallcoverings`, lowercase, pkg `designerwallcoverings-ai`)
Owns: the **designerwallcoverings.ai room-render landing** (`server.js` → Gemini room-photo matcher, deployed to Kamatera pm2 `designerwallcoverings.ai`:9925), plus **new vendor onboarding + catalog data-quality** (2026-Q3 onboarders sanderson/greenland/stroheim/osborne, price-sheets, dedup, orphan-cleanup, GMC, roll-scale). ~18 launchd jobs.
## Shared-vendor ownership (the diverged forks)
Both repos historically carried code for these six vendors. Going-forward SINGLE owner (freeze/repoint of the losing fork is drafted for Steve in a gated memo, NOT yet executed):
| Vendor | Going-forward owner | Notes |
|---|---|---|
| anna-french | (see gated memo) | capital 7 files / lowercase 2 |
| cole-son / coleson | (see gated memo) | capital 10 / lowercase 7 |
| romo | (see gated memo) | 3 / 3 |
| kravet | (see gated memo) | capital 7 / lowercase 22 (lowercase-heavy) |
| china-seas | (see gated memo) | 1 / 1 |
| artmura | (see gated memo) | 1 / 1 |
Until the per-vendor owner is ratified, do NOT add a NEW second fork of any of these in the other repo.
### Ratified 2026-09-22 (Steve fired the vendor-fork memo)
- **romo → lowercase canonical.** Capital's orphan romo utilities `romo-lookup.js`, `romo-drilldown.js` moved to `shopify/scripts/_superseded/`. NOTE: capital RETAINS an active romo PRICING chain — `shopify/scripts/romo-add-roll-pricing.js` + `shopify/scripts/data/romo-cost-backfill/` (its runner `run-romo-push.sh` + CSV + `com.steve.romo-roll-pricing.plist.template`). That chain was NOT frozen (still referenced). So romo is effectively a **functional split**: lowercase owns roll CREATION/verify (`com.steve.gimmersta-romo-rolls`, `com.steve.romo-roll-verify`), capital owns romo roll PRICING.
- **artmura → lowercase canonical.** Capital's stale `artmura-title-fix.js` moved to `_superseded/`.
- **cole-son / coleson → FUNCTIONAL SPLIT, both kept:** capital owns cole-son/coleson **variant/onboarding/metafields** (`coleson-add-bolt-variants.js`, `-add-panel-variants.js`, `-backfill-metafields.js`, `-add-sample-variants.js`, `-audit.js`, …); lowercase owns cole-son **2026 pricing / pattern-map** (`cole-son-reprice-2026.js`, `-price-audit.mjs`, `-apply-map.js`, `-apply-pattern-map.js`, `-reconcile-pattern.js`, `map-verify`). Different fields — do NOT freeze either.
- **kravet → FUNCTIONAL SPLIT, both kept (both live jobs):** capital owns kravet **price/MAP watch** (`shopify/scripts/cadence/kravet-price-monitor.js` → `com.steve.kravet-price-monitor`, `com.steve.kravet-overnight-summary`); lowercase owns kravet **spec/onboarding** (`com.steve.kravet-spec-backfill` + price-sheets). Do NOT freeze either.
- **anna-french → FUNCTIONAL SPLIT, both kept (NOT frozen):** capital owns scrape/enrich/cadence-dwsku pipeline (`anna-french-scraper.js`, `-enrich.js`, `-repair-inplace.mjs`, `cadence/anna-french-phase0-assign-dwsku.sh`); lowercase owns live-remediation `anna-french-onboard/` (TK-11076 colorway/AI-tag correction + rollback) and `anna-french-rolls/` (roll build/reprice). Verified 2026-09-22: the in-repo `com.steve.anna-french-roll-drain.plist` is NOT loaded. Distinct functions — no freeze.
- **china-seas → capital's files are SPENT one-shots (kept as history, NOT frozen):** `china-seas-revert-commercial.js` (labeled "one-off, 2026-06-30") + `reconcile/china-seas-type-fix/*.sql` (completed DTD-A June-2026 type normalization, with its own rollback SQL). lowercase owns live remediation `china-seas-onboard/` (TK-11076). No loaded china-seas job. Temporal/functional split — no freeze.
## Shared guard libs — canonical home is `~/Projects/_shared/dw-guards/`
As of the 2026-09-22 decouple:
- `~/Projects/_shared/dw-guards/validate-before-activate.js`, `internal-guard.js`, `inventory-stamp-guard.mjs` are the **documented canonical masters**.
- `shopify/scripts/lib/validate-before-activate.js` in THIS repo is a **thin re-export shim** → `_shared/dw-guards/validate-before-activate.js` (all existing importers, incl. the 3 lowercase go-live scripts that import it by absolute path, keep working unchanged). Original backed up as `validate-before-activate.js.pre-shared-lift`.
- `inventory-stamp-guard.mjs` is NOT yet shimmed here — it is a deliberate byte-behavior-identical 5-repo copy set drift-checked by `shopify/scripts/tk11357-source-fix-proof/predicate-proof.mjs`. Full consolidation of it behind `_shared` (with predicate-proof updated) is a gated follow-up, so the live cadence $0-guard is not disturbed without review.
## Cross-repo coupling status (what the decouple fixed)
- lowercase→capital `node_modules/pg` borrow: **FIXED** (lowercase now has its own `pg`).
- lowercase→capital guard-lib import: `validate-before-activate.js` importers now transparently resolve through the `_shared` master via the capital shim.
- lowercase reads capital's `.env` (1 script): still present — noted for a future decouple (point it at `secrets-manager/.env`).
**Hard rails:** both repos have automated writers committing ~hourly — never run `git add/commit/reset/checkout` by hand in either. `dw_unified` + Shopify writes are canonical/customer-facing (gated). Live store = `designer-laboratory-sandbox.myshopify.com` (API 2024-10).