# Extraction Manifest — freshvibe-cms pre-FWV v8 alignment shadow

**Frozen:** 2026-08-04 07:11 BST
**Origin commit:** `68410d4` (v0.8.0 base, `feat(content-types): Phase 8 v2 — content admin in chrome, per-site store, gallery-source widgets`)
**Branch:** `feature/working-v0.8.0-fvre-clean`
**Shadow path:** `app-pact/shadow/v0.8.0-pre-fwv-v8-alignment/`
**Plan:** a452 (FWV v8.3 alignment of freshvibe-cms)
**Operator signoff:** 5 questions resolved 2026-08-04 07:08 BST (see plan §7)

## What this is

A read-only snapshot of the package's current state, frozen before any FWV v8 alignment work. Every file here is preserved at the SHA it had at freeze time. The original top-level dirs (`app-fragments/`, `runtime/`, `modules/`, etc.) continue to be the live working copies — this shadow is the safety net for `git revert` of any alignment commit.

## What was frozen

11 top-level directories, copied verbatim. 525 files, 142 directories, 3.3 MB.

| Directory | File count | Purpose | FWV v8 target |
|---|---|---|---|
| `app-fragments/` | many | Editor chrome (panels per §1.7a) | Stays; tracked under panels/ in alignment |
| `runtime/` | 45+ | Engine: store, scope, renderers, region, panel-manager | Stays; engine layer |
| `modules/` | 17 | Content chunks (blocks per §1.7a) | Stays; blocks/ |
| `schemas/` | 1+ | Content-type schemas | Stays; schemas/ |
| `scripts/` | many | Build/test/deploy scripts | Stays; scripts/ |
| `stubs/` | 4 | Stub docs (content-types, queries, templates, post-types, renderer-adapters) | Stays; some become real in later phases |
| `detectors/` | 1 | Framework adapter (Elementor only) | Stays; detectors/ |
| `skins/` | 2 | Visual skins (reign, buddyx) | Stays; skins/ |
| `tests/` | many | Test suite | Stays; tests/ |
| `demo/` | 1+ | Demo page | Stays; demo/ |
| `docs/` | many | Documentation | Stays; docs/ |

**File types in the shadow:**
- `.js` — 171 files (engine + panels + blocks)
- `.md` — 229 files (pacts, READMEs, doctrine, mining docs)
- `.json` — 56 files (configs, schemas, package metadata)
- `.css` — 38 files (chrome + block styles)
- other (`.html`, `.py`, `.sh`, `.txt`, etc.) — 31 files

## What was NOT frozen (intentional)

- `app-pact/` itself — this is where the FWV v8 alignment artefacts live, including this shadow and the vendored FWV v8.3 at `app-pact/vendored/fvw-v8/`.
- `node_modules/`, `.git/`, `_work/`, `.mavis/` — build artifacts, VCS metadata, session state.
- Uncommitted changes are NOT in the shadow — the shadow reflects the state at commit `68410d4` + the current uncommitted edits on top. If the operator wants the shadow to reflect the EXACT committed state, run `git stash` first.

## Provenance

| File path | SHA at freeze | Notes |
|---|---|---|
| `app-pact/app-pact.md` | commit `68410d4` | The Constitution (legacy, partial FWV v8) |
| `app-pact/invariants.md` | commit `68410d4` | 10 testable invariants |
| `app-pact/vendored/fvw-v8/VERSION` | commit `68410d4` | 8.3.0 (55 files from canonical `avidtech6/fv-module-gallery/gallery-pact/fvw/freshvibe-way-v8/`) |

## How to verify the shadow

```bash
# 1. Confirm shadow exists and has all 11 dirs
ls /workspace/freshvibe-cms/app-pact/shadow/v0.8.0-pre-fwv-v8-alignment/ | sort

# 2. Confirm file count matches the manifest (525 files, 142 dirs)
find /workspace/freshvibe-cms/app-pact/shadow/v0.8.0-pre-fwv-v8-alignment -type f | wc -l  # expect 525
find /workspace/freshvibe-cms/app-pact/shadow/v0.8.0-pre-fwv-v8-alignment -type d | wc -l  # expect 142

# 3. Spot-check a known file: the editor palette JS
head -5 /workspace/freshvibe-cms/app-pact/shadow/v0.8.0-pre-fwv-v8-alignment/app-fragments/editor-palette/index.js
# Should show: a panel module (chrome, not a block) per §1.7a

# 4. Compare shadow vs live — should be byte-identical for unchanged files
diff -rq app-fragments/ app-pact/shadow/v0.8.0-pre-fwv-v8-alignment/app-fragments/ | head
# Empty = identical. Any output = a file changed in working tree after the shadow freeze (expected for the uncommitted edits in §status)
```

## Status of live working tree at freeze

Uncommitted changes (not in the shadow, will need a separate commit if preserved):
- `M app-fragments/oscar-trace/oscar-trace.js`
- `M runtime/content-admin.js`
- `M runtime/content-items-bootstrap.js`
- `M runtime/content-items/store.js`
- `M runtime/content-store-bootstrap.js`
- `M runtime/content-types/{cache,descriptors,field-comparison,intent-mapping,store}.js`
- `M schemas/content-types-default.json`
- `?? _redirects`
- `?? app-fragments/{cms-data,content-admin-launcher,oscar-cms-panel,oscar-dev-btn,oscar-dev-panel,oscar-floating-buttons,oscar-module-editor,oscar-region-editor,oscar-watermark-hider}/`
- `?? app-pact/vendored/` (the FWV v8.3 vendor — 55 files, byte-identical to canonical)
- `?? runtime/oscar-content-seed.js`
- `?? scripts/{cms-smoke,phase5-acceptance,screenshot-diff}.py`
- `?? stubs/{content-types,post-types,queries}.md`

The vendor (`app-pact/vendored/fvw-v8/`) and the new untracked files (e.g. `oscar-cms-panel/`, `oscar-dev-btn/`) are part of Phase 1.0 work and the v0.8.0 era — they live in the live tree, not the shadow. The shadow captures the **origin commit state**, which is the safe baseline.

## Reversibility

This shadow makes every Phase 2-8 change reversible via:

```bash
# To revert any FWV v8 alignment commit:
git revert <commit-sha>

# To restore the pre-alignment state entirely:
rm -rf app-fragments runtime modules schemas scripts stubs detectors skins tests demo docs
cp -r app-pact/shadow/v0.8.0-pre-fwv-v8-alignment/{app-fragments,runtime,modules,schemas,scripts,stubs,detectors,skins,tests,demo,docs} .
```

The first reverts the git history; the second restores the file tree to the pre-alignment snapshot. Use either or both.

## Next steps (per plan a452)

- **Phase 1.2:** Write `app-pact/dna/app.dna.json` per vendored FWV v8 §03 schema (3-4h)
- **Phase 1.3:** Verify shadow + commit (this file ships in 1.3)
- **Phase 2:** App-Trace Atlas shell (2-3h)
- **Phase 3-8:** Codex, Pact complete, Recipe Books, Overlays, App-VP+drift, Ship

Per phase sign-off gated. Next step waits for operator's "go" on Phase 1.2.

## Why this is in the shadow AND vendored FWV v8 is in the tree

Two different artefacts, both living under `app-pact/`:
- `app-pact/vendored/fvw-v8/` — the DOCTRINE, byte-identical to canonical FWV v8.3 (55 files). This is what we're aligning TO.
- `app-pact/shadow/v0.8.0-pre-fwv-v8-alignment/` — the CURRENT STATE, the thing we're aligning FROM. This is the rollback target.

Together they form the "before" and "after" of the FWV v8 alignment work. Neither gets deleted by later phases. The shadow is permanent (until the operator says to clean up post-v1.0.0 ship).
