← back to Designerwallcoverings

OWNERSHIP.md

40 lines

# OWNERSHIP — designerwallcoverings (lowercase)

_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/Designer-Wallcoverings/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/designerwallcoverings` — pkg `designerwallcoverings-ai` v0.1.17. Born as the **designerwallcoverings.ai room-render landing** (`server.js`: upload a room photo → Gemini Vision palette/style read → score the local catalog snapshot `data/products.json` → hand checkout back to designerwallcoverings.com). Deployed to **Kamatera** via `ecosystem.config.js` (pm2 app `designerwallcoverings.ai`, PORT 9925, cwd `/root/Projects/designerwallcoverings`). The "-ai" in the pkg name is literal (the `.ai` landing product) — it is NOT "the AI version of the catalog repo". 2.5 GB, 1 nested repo, local-only (no git remote). ~18 `com.steve.*` launchd jobs run its scripts.

## This repo OWNS (canonical)
- **The designerwallcoverings.ai room-render landing** (`server.js`, its Kamatera pm2:9925 deploy).
- **NEW vendor onboarding** — the 2026-Q3 onboarders under `scripts/`: sanderson-onboard, greenland (via plist), stroheim-onboard, osborne-onboard, china-seas-onboard, artmura-onboard, coleson-onboard, fallingstar-onboard, muralsource-onboard, stout-onboard, maharam-onboard, knoll-onboard, tres-tintas-onboard, activate-1838, etc.
- **Catalog DATA-QUALITY tooling** — `scripts/price-sheets/` (schu-watch), dedup (`dedup-archive-all.js`, `dedup-verify-all.js`), `orphan-publish-guard.mjs`, GMC, roll-scale, showroom-lines.
- Resolves real Shopify/DB creds from the canonical `~/Projects/secrets-manager/.env` (uses `SHOPIFY_FULL_ACCESS_TOKEN`); its own `.env` holds only `SHOPIFY_DRAFT_TOKEN`.

## The OTHER repo (`~/Projects/Designer-Wallcoverings`, capital, pkg `designer-wallcoverings`)
Owns: the **Shopify storefront/theme layer**, the **hourly product-upload cadence engine** (`shopify/scripts/cadence/`), the DW-* nested monorepo stack, and (historically) the **canonical shared guard libs** (now mastered in `~/Projects/_shared/dw-guards/`).

## Shared-vendor ownership (the diverged forks)
Both repos historically carried code for anna-french, cole-son/coleson, romo, kravet, china-seas, artmura. Going-forward SINGLE owner per vendor is drafted for Steve in a gated memo (freeze/repoint of the losing fork NOT yet executed). Until 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 → THIS repo (lowercase) canonical** for roll creation/verify (`com.steve.gimmersta-romo-rolls`, `com.steve.romo-roll-verify`, `build-romo-rolls.mjs`). Capital's orphan `romo-lookup.js` / `romo-drilldown.js` were frozen to its `_superseded/`. Functional split: capital RETAINS romo roll PRICING (`romo-add-roll-pricing.js` + `data/romo-cost-backfill/`) — not frozen.
- **artmura → THIS repo canonical** (`scripts/artmura-onboard/`). Capital's stale `artmura-title-fix.js` was frozen.
- **cole-son → FUNCTIONAL SPLIT, both kept:** THIS repo owns cole-son **2026 pricing / pattern-map** (`scripts/cole-son-reprice-2026.js`, `-price-audit.mjs`, `-apply-map.js`, `-apply-pattern-map.js`, `-reconcile-pattern.js`, `cole-son-map-verify/`); capital owns cole-son/coleson **variant/onboarding/metafields**. Different fields — do NOT freeze either.
- **kravet → FUNCTIONAL SPLIT, both kept (both live jobs):** THIS repo owns kravet **spec/onboarding** (`com.steve.kravet-spec-backfill` + `scripts/price-sheets/`); capital owns kravet **price/MAP watch** (`com.steve.kravet-price-monitor`, `com.steve.kravet-overnight-summary`). Do NOT freeze either.
- **anna-french → FUNCTIONAL SPLIT, both kept (NOT frozen):** THIS repo owns live-remediation `scripts/anna-french-onboard/` (TK-11076 colorway/AI-tag correction + rollback) + `scripts/anna-french-rolls/` (roll build/reprice); capital owns the scrape/enrich/cadence-dwsku pipeline. Verified 2026-09-22: capital's in-repo `com.steve.anna-french-roll-drain.plist` is NOT loaded. Distinct functions — no freeze.
- **china-seas → both kept (NOT frozen):** THIS repo owns live remediation `scripts/china-seas-onboard/` (TK-11076); capital's china-seas files are SPENT June-2026 one-shots (type reconcile + commercial-revert, completed). 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**.
- This repo's 3 go-live scripts (`stroheim-onboard/go-live.mjs`, `muralsource-onboard/go-live.mjs`, `stout-onboard/go-live.mjs`) import `validate-before-activate` by absolute path into the capital repo; that path is now a re-export shim → the `_shared` master, so they keep working unchanged.
- This repo keeps its OWN `scripts/lib/inventory-stamp-guard.mjs` copy (part of the deliberate drift-checked 5-repo copy set guarded by capital's `predicate-proof.mjs`). Full consolidation behind `_shared` is a gated follow-up.

## Cross-repo coupling status (what the decouple fixed)
- **pg**: 5 scripts (innovations-mfr-reconcile/{reconcile,archive-discontinued}.mjs, innovations-image-audit/audit.mjs, true-sku-leak-scrub/scrub-true-sku.mjs, title-campaign/build-titles.mjs) used to fall back to capital's `node_modules/pg`. **FIXED** — this repo now has its own `pg` dependency and the capital-path fallback was removed.
- guard-lib import (validate-before-activate) now resolves through the `_shared` master via capital's shim.
- 1 script still reads capital's `.env` — noted for a future decouple (point 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). Do NOT touch the launchd plists or the Kamatera pm2:9925 deploy without Steve.