← back to Dw Fleet Registry
README.md
59 lines
# dw-fleet-registry
**Single source-of-truth for every Designer Wallcoverings web property.**
Born from the DTD verdict (2026-06-01, Claude + Codex → **A**): consolidate the
two DW fleets into one canonical registry — *control plane only*. Serving methods
stay pluggable; this does **not** migrate any site.
## The two fleets it reconciles
| Fleet | Source | Serving | Count |
|-------|--------|---------|-------|
| **Local microsites** | `~/Projects/<slug>/` (own repo + `server.js` + `public/index.html` + `site.config.json`) | `standalone-node` | 76 |
| **Domain-fleet manifest** | `~/Projects/dw-domain-fleet/sites/<slug>.json` | `shared-multitenant` | 44 |
→ **120 unique domains** total. 0 exact-domain collisions, but **6 near-duplicate
clusters** (the real consolidation candidates).
## Usage
```bash
node build-registry.mjs # re-scan both fleets, rewrite dw-fleet-registry.json
```
Read-only scan; re-runnable. Same inputs → same registry (plus a fresh timestamp).
## Output: `dw-fleet-registry.json`
```jsonc
{
"summary": { "totalDomains", "localMicrosites", "manifestDomains",
"overlappingDomains", "nearDuplicateClusters" },
"overlaps": [ /* domains in BOTH fleets — canonicalOwner: UNRESOLVED */ ],
"nearDuplicates": { "silk": ["silkwallcoverings.com","silkwallpaper.com"], ... },
"sites": [ {
"domain", "slug", "siteName",
"fleets": ["local-microsite"|"domain-fleet-manifest"],
"overlap": false,
"servingModes": ["standalone-node"|"shared-multitenant"],
"canonicalOwner": "local-microsite" | "domain-fleet-manifest" | "UNRESOLVED",
"local": { repoPath, hasGit, hasPublicIndex, hasServer, port, domainInferred },
"manifest": { configPath, port, siteEmail, hasLocalDir }
} ]
}
```
## Near-duplicate clusters (as of last run)
`carmel` · `flocked` · `hollywood` · `hospitality` · `raffia` · `silk` —
each is the same concept served under two domains across the two fleets. These are
the rows to decide a single canonical owner for.
## Not yet wired (next steps, Steve-gated)
- Live HTTP/pm2/launchd status probe per domain (`--probe`).
- Cross-reference against the 301-domain registrar list (CNCP `domains[]`) to flag
registered-but-unbuilt and built-but-unregistered.
- A `canonicalOwner` resolution pass for the 6 near-dup clusters.