# DO-006 — Ratify Static Grep Sovereignty Checks

**Date:** 2026-06-29
**Status:** Locally binding via OSCR-

---

## Decision

Oscar ratifies 3 layers of sovereignty enforcement:

1. **Static checks** — `pact/vp/sovereignty.test.ts` (renamed from `pact/vp/sovereignty-checks.test.ts`)
   - 8 invariants (SOV-1.1 to SOV-2.5)
   - Greps all `.ts/.tsx` files in `app/src/`
   - Reports forbidden-pattern matches (SOV-CRITICAL)

2. **Build-time checks** — `vite build` fails on unresolved forbidden imports
   - At compile time, if any `import` resolves to a forbidden module, build aborts

3. **CI gate** — `.github/workflows/ci.yml` runs all checks
   - On PR, all 58+ invariants must pass

## Forbidden patterns

```
@fvs/*
freshvibe-studio
../../../modules/  (FVS relative paths)
/recon/freshvibestudio/studio/
@mantine/*
```

## Enforcement chain

```
PR → CI runs `vitest` (includes sovereignty.test.ts) → 8 invariants → PASS/FAIL
PR → CI runs `vite build` → resolves imports → aborts on forbidden
PR → CI runs `tsc --noEmit` → type errors block

Combined: a single sovereignty violation = block PR.
```

## Cross-references

- `pact/platform/sovereignty.md` (6 principles)
- `pact/platform/anti-drift.md` (anti-drift mapping)
- `pact/extraction/sovereignty-baseline.md`
- `pact/vp/sovereignty.test.ts`

