# Diff: Menu — v7 → v9 GOLD migration

**Migration date:** 2026-08-14 (B4 update)
**Source of truth:** modules/menu/ (legacy 3-file structure)

## Files added (this migration)

| File | Purpose |
| --- | --- |
| `codex.md` | Event log + state flow contract |
| `rules.md` | Behavioural rules (schema, state, events, a11y) |
| `ingredients.json` | Dependency + input/output declaration |
| `diffs/CHANGELOG.md` | This file |
| `trace-atlas/index.json` | Component hierarchy + instance map |
| `dna/origin.json` | Provenance + canonical-source lineage |
| `plan.md` | Forward-looking roadmap (current → next → future) |
| `coverage-matrix.md` | Test/feature coverage status |
| `module.json` | v0.5.1 module manifest with inspector tabs |

## Files preserved (unchanged from legacy)

| File | Status |
| --- | --- |
| `index.js` | UNCHANGED (re-export from canonical gallery) |
| `module-meta.json` | UNCHANGED (locked 2026-08-04 a452 Phase 5) |
| `recipe.md` | UNCHANGED (canonical product description) |

## Breaking changes

**None.** This migration is purely additive — it adds 9 new files to bring the legacy 3-file structure up to the v9 GOLD 11-file structure. No widget code was modified, no schema was bumped on the existing files, no Oscar integration was touched.

## Migration steps taken

1. Read existing `module-meta.json` to extract canonical source, tier, dependencies, constitutional fragments.
2. Read existing `recipe.md` to extract product description, props, events, geometry, states.
3. Generated the 9 new files with content derived from the existing files (no invention, no extrapolation).
4. Did NOT modify `index.js`, `module-meta.json`, or `recipe.md` (per operator constraint: "Do not modify widget code").
