ShopDB is a product several sites adopt, developed at one site against that site's live fleet, so every feature arrives carrying West Jefferson's hostnames, networks and share paths. A scan of plugins/ and shopdb/ returns 19 site literals, of which about 8 are a shipped default or a hardcode rather than a comment: a kiosk URL baked into a PowerShell payload a sister site cannot override, a WJ UNC path as the backup share default, and device.geaerospace.net shipped as a SETTING DEFAULT - inherited silently by anyone who adopts. The mechanisms already existed; the rule did not, so each value landed wherever was convenient. The rule: a setting with a NEUTRAL default first, a site-namespaced directory second, seed data third. Blank must be a working state. Fleet-wide vocabulary such as the gea-shopfloor-* imaging types is not site data and is out of scope - it already has a per-site override. Enforced by an addition to check-naming-and-style.sh, which CI already runs, in REPORT-ONLY mode. Making a 19-item backlog a hard gate the day it lands blocks every unrelated commit until someone clears it; SITE_LITERALS_ENFORCE=1 turns it into a gate once the listed hardcodes are done. The ADR carries that backlog, including that the display FQDN domain is defined three times in three files.
Architecture Decision Records
Each ADR captures a single architectural decision: the context, the decision itself, the consequences, and the alternatives considered. ADRs are immutable once accepted. Superseded ADRs stay in this folder with a pointer to the newer ADR.
Status definitions
- PROPOSED: drafted, awaiting decision
- ACCEPTED: decision is in effect
- SUPERSEDED: replaced by a later ADR (link forward)
- DEPRECATED: no longer in effect, no replacement
Index
| ADR | Title | Status |
|---|---|---|
| 001 | Asset model is the platform contract | ACCEPTED |
| 002 | Plugin contract versioning (semver) | ACCEPTED |
| 003 | Plugin distribution model | ACCEPTED |
| 004 | Deployment topology (per-site instances) | ACCEPTED |
| 005 | Equipment vs measuringtools plugin scope | ACCEPTED |
| 006 | Plugin collector contract pattern | ACCEPTED |
| 007 | Product versioning and releases | ACCEPTED |
| 008 | Plugin migration ownership (per-plugin chains) | ACCEPTED |
| 009 | Frontend plugin route gating | ACCEPTED |
| 010 | Frontend plugin hook contract | ACCEPTED |
| 011 | Machines rename + modeltypes retyping | ACCEPTED |
| 012 | GE-Enforce manifest ownership in shopdb | ACCEPTED |
| 013 | Plugin catalog, curated shelf, and lean per-site builds | PROPOSED |
| 014 | Schema-lean per-site builds (retire cross-plugin FKs, prune not-installed plugin tables) | ACCEPTED |
| 015 | Where a site's own data is allowed to live (setting, site directory, or seed) | ACCEPTED |
Authoring
When proposing a new decision, copy the most recent ADR as a template, increment the number, and update this index. Do not edit accepted ADRs in place; supersede them with a new one.