# DO-003 — Ratify `oscar.*` fragment naming convention

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

---

## Decision

Oscar ratifies the `oscar.*` fragment naming convention as a constitutional invariant.

## Naming format

```
oscar.<domain>.<sub-domain>.<name>.<version>

Domains:
- platform: runtime contracts (IDB, sovereignty)
- assistant: AI assistant (dock, adapter, anchors)
- brain: rules engine + manifest
- intelligence: LLM adapters + standards
- data: IDB schema + typed models
- writing: blog writing service
- views: 6 views
- shell: chrome (TopBar, Dock, Shell)
- ux: UX components
- export: PDF + DOCX
- search: Cmd+K
- onboarding: tour
- branding: theme + palette
- settings: Settings view

Example:
- oscar.assistant.dock.4-state.001 (Dock has 4 states, version .001)
- oscar.data.persistence.idb.001 (IDB schema, version .001)
- oscar.intelligence.standards.bs5837.001 (BS5837 standard, version .001)
```

## Per-version rules

- Bump version when the fragment changes semantics (e.g., 4-state → 5-state)
- Do NOT bump version for typo fixes; fix and increment patch (`.001` → `.002`)
- Bump major (`.100`) only for breaking changes

## Cross-references

- `pact/fragments/oscar.*.md` (every declared fragment)
- `pact/recipes/<module>/module-meta.json` `constitutional_fragments` list
- `pact/dna/app.dna.json` identity

## Enforcement

Per §35 Module-Pact Registration:
- Every `module.json` `constitutional_fragments` MUST contain only `oscar.*` ids
- Drift-check MP-1 (forward check: module → pact) verifies each id exists in `pact/fragments/`

