Files
zeekay 36e8a74835 feat(@luxfi/brand-rules): v0.1.0 — per-org brand sovereignty banlists
One published package for LP-0010 / HIP-0303 / ZIP-0031 / PIP-0006 /
LIP-0006 (no-crossover) enforcement. Replaces per-org copies of the
brand-rules YAML files with a single source of truth that:

  * Ships the 5 per-org rule files (rules/{lux,hanzo,zoo,pars,liquidity}.yml)
  * Exports a programmatic loader (rulesFor / rulePath / SUPPORTED_ORGS)
  * Provides a node CLI (brand-check) that mirrors the bash validator
  * Provides the bash validator (scripts/brand-check.sh) for legacy use
  * Adds ZIP-0031 §6 academic-collab exemptions for zoo (model_card*,
    *.bib, papers/**, datasets/**/README*)

CI workflows (ci.yml) run lint + unit tests + CLI smoke against clean
and dirty fixtures. publish.yml fires on v* tags using the luxfi org
NPM_TOKEN secret.

Co-existing with hanzoai/.github's vendored copies until npm publish
is live; consumer-side swap PR follows.

Tests: 20/20 passing. CLI flags dirty fixture with 5 violations across
2 files, exit 1; clean fixture exits 0.
2026-05-30 01:23:02 -07:00

97 lines
2.6 KiB
YAML

# Brand sovereignty rule — hanzoai/* repos
#
# Hanzo is the AI infrastructure org. Hanzo repos must not carry the brand
# identity of Liquidity (downstream tenant) or sibling orgs (Lux, Zoo, Pars).
# Chain identifiers and OSS dep imports are allowed via exempt_paths /
# exempt_patterns.
#
# Policy: HIP-0303.
org: hanzo
forbidden_in_source:
- "Liquidity.io"
- "Liquidity LLC"
- "@liquidityio/"
- "Lux Industries"
- "Zoo Labs Foundation"
- "Pars Network Foundation"
# Globs of files where a forbidden string is permitted because the file
# represents tooling, not brand identity. fnmatch syntax (glob).
exempt_paths:
- "**/go.mod"
- "**/go.sum"
- "**/package.json"
- "**/package-lock.json"
- "**/yarn.lock"
- "**/pnpm-lock.yaml"
- "**/bun.lock"
- "**/bun.lockb"
- "**/Cargo.toml"
- "**/Cargo.lock"
- "**/pyproject.toml"
- "**/uv.lock"
- "**/requirements*.txt"
- "**/Dockerfile"
- "**/Dockerfile.*"
- "**/*.Dockerfile"
- "**/compose.yml"
- "**/compose.*.yml"
- "**/*.k8s.yaml"
- "**/*.k8s.yml"
- "**/kustomization.yaml"
- "**/kustomization.yml"
- "**/.github/**"
- "**/CHANGELOG.md"
- "**/CHANGELOG"
- "**/LICENSE"
- "**/LICENSE.*"
- "**/NOTICE"
- "**/NOTICE.*"
- "**/THIRD_PARTY*"
- "**/vendor/**"
- "**/node_modules/**"
# Multi-brand surfaces (not "this repo's brand", but white-label
# mechanism that legitimately carries other brands as data):
- "**/BRAND-AUDIT*"
- "**/BRAND_AUDIT*"
- "**/brand-audit*"
- "**/brand-sovereignty*"
- "**/.env.example*"
- "**/.env.sample*"
- "**/config/brands/**"
- "**/configs/brands/**"
- "**/brands/**/*.json"
- "**/brands/**/*.yaml"
- "**/brands/**/*.yml"
# Tests of the multi-tenant brand/white-label loader — by name
# convention, any test whose basename matches `brand*`, `*brand*`,
# `whitelabel*`, `white-label*`, or `tenant*` exercises the
# cross-brand mechanism and legitimately fixtures other brands.
# Tests that don't match this convention still get checked.
- "**/brand*.test.ts"
- "**/brand*.test.tsx"
- "**/brand*.test.js"
- "**/brand*.spec.ts"
- "**/brand*.spec.tsx"
- "**/brand*.spec.js"
- "**/*brand*.test.ts"
- "**/*brand*.test.tsx"
- "**/whitelabel*.test.*"
- "**/white-label*.test.*"
- "**/tenant*.test.*"
- "**/*_brand_test.go"
- "**/*_whitelabel_test.go"
# Line-level regex exemptions: if any line containing a forbidden string
# also matches one of these, the line is ignored.
exempt_patterns:
- 'github\.com/luxfi/'
- 'github\.com/hanzoai/'
- 'github\.com/zooai/'
- 'github\.com/parsdao/'
- 'github\.com/liquidityio/'
- 'ghcr\.io/'
- 'us-docker\.pkg\.dev/'