From 51b83b75224405ea3098d39e3d34c3ede5d26193 Mon Sep 17 00:00:00 2001 From: Cam Proudlock Date: Tue, 11 Aug 2026 09:23:00 -0400 Subject: [PATCH] ADR-015 site-specific configuration policy --- scripts/check-naming-and-style.sh | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/scripts/check-naming-and-style.sh b/scripts/check-naming-and-style.sh index a791bcfa..95a5181d 100755 --- a/scripts/check-naming-and-style.sh +++ b/scripts/check-naming-and-style.sh @@ -135,6 +135,41 @@ if [ -d plugins ]; then fi fi +# ADR-015: one site's data does not belong in product code. A site host, a site +# FQDN or a site network in plugins/ or shopdb/ ships another site a value it +# cannot see and did not choose. Use a setting with a NEUTRAL default, a +# site-namespaced directory (scripts/site_imports//), or seed data. +# +# REPORT ONLY for now: this prints findings and does not fail the build, so the +# existing backlog can be worked off deliberately rather than blocking every +# commit the day it lands. Flip SITE_LITERALS_ENFORCE to 1 to make it a gate. +SITE_LITERALS_ENFORCE=${SITE_LITERALS_ENFORCE:-0} + +echo "==> Checking for site-specific literals in product code (ADR-015)..." +# Deliberately narrow: a real site hostname, a site FQDN, or a site network. +# Fleet-wide vocabulary (gea-shopfloor-*) is NOT matched - it is overridable +# through the pctypemap settings and is not one site's data. +SITE_PATTERNS='tsgwp00525|\.geaerospace\.net|\bwjs\b|West Jefferson|10\.134\.48\.|10\.48\.249\.' +SITE_HITS=$(grep -rPn "$SITE_PATTERNS" "${EXCLUDES[@]}" \ + --include='*.py' --include='*.vue' --include='*.js' \ + plugins/ shopdb/ 2>/dev/null \ + | grep -v '/tests\?/' \ + | grep -v 'site_imports/' || true) +if [ -n "$SITE_HITS" ]; then + COUNT=$(echo "$SITE_HITS" | wc -l) + if [ "$SITE_LITERALS_ENFORCE" = "1" ]; then + echo "FAIL: $COUNT site-specific literal(s) in product code:" + echo "$SITE_HITS" + echo + VIOLATIONS=$((VIOLATIONS + 1)) + else + echo " $COUNT site-specific literal(s) found (report only, not failing):" + echo "$SITE_HITS" | sed 's/^/ /' + echo " See docs/adr/ADR-015-site-specific-configuration.md" + echo + fi +fi + if [ "$VIOLATIONS" -gt 0 ]; then echo "==================================================" echo "$VIOLATIONS naming/style violation(s) found."