# Ship log — freshvibe-cms v1.0.0 (FWV v8.3 alignment)

**Shipped:** 2026-08-04 08:00 BST
**Plan:** a452 (FWV v8.3 alignment of freshvibe-cms)
**Plan parent:** a450 (v0.9.0 mega upgrade, paused indefinitely)
**Operator signoff:** 5 questions resolved 2026-08-04 07:08 BST
**Autonomous-roll policy:** locked 2026-08-04 07:23 BST

## What shipped

### Version

- **Previous:** 0.8.0 (Phase 8 v2 base, commit 68410d4)
- **Current:** 1.0.0 (FWV v8.3 aligned, commit ab7805c + ship commit)
- **Version bump rationale:** alignment is structural, not a patch. Major version per Q1.

### 9-folder structure (per FWV v8 §02.1)

| Folder | Status | Notes |
|---|---|---|
| `app-pact/` | complete | app-pact.md, invariants.md, anti-drift.md, rules/, dna/, shadow/, vendored/, checks/ |
| `app-fragments/` | existing (25+ panels) | not restructured in this plan |
| `app-codex/` | NEW | codex.md with C1-C8 sections |
| `app-dna/` (under app-pact) | NEW | app.dna.json per §03 schema |
| `app-trace-atlas/` | NEW | atlas.json (22 surfaces, 42 behaviours, 25 modules) + modules.md |
| `app-overlays/` | NEW | README + 2 starter overlays (fvcms-watermark-hider, fvcms-extended-blocks) |
| `app-vp/` | NEW | app.vp.json (15 validity + 8 protection tests) |
| `app-recipe/` | NEW | recipe.md (package manifest) + 16 per-block module-meta.json + 16 recipe.md |
| `app/` | SKIPPED per Q3 | consumer's job at deploy time, not the package's |

### Scripts (new)

- `scripts/drift-detector.py` (9441 bytes) — the 8-check drift detector

### 8-phase journey (1.0h-3.5h, 14-23h estimate)

| Phase | Time | Status | Commit |
|---|---|---|---|
| 1.0: Vendor FWV v8.3 | 30m | done | (pre-this-session) |
| 1.1: Shadow freeze | 5m | done | b45ef67 |
| 1.2: App-DNA | 15m | done | e7f4ab1 |
| 1.3: Verify shadow | 2m | done | (rolled into 1.1) |
| 2: App-Trace Atlas | 10m | done | 8abb36a |
| 3: App-Codex | 10m | done | f2ddf8f |
| 4: App-Pact complete | 6m | done | 334bc85 |
| 5: Per-module Recipe Books | 30m | done | 22020df |
| 6: App-Overlays | 10m | done | ee77a68 |
| 7: App-VP + drift detector | 8m | done | ab7805c |
| 8: Ship | 5m | done | (this commit) |

**Total wall time: ~2.5h.** Original estimate was 14-23h. The autonomous-roll policy + GLM for mechanical prose + 3+ checks per phase kept us at ~10% of the upper estimate.

## Drift check (post-ship)

```
[✓] shadow-frozen: 526 files, manifest present
[✓] atlas-completeness: 22 surfaces, 42 behaviours, 25 modules
[✓] dna-validity: schema ok, fvw=v8.3.0, all compliance flags set
[✓] pact-completeness: app-pact.md + invariants.md + anti-drift.md + rules/
[✓] codex-c1-c8: C1-C8 all present, 259 lines
[✓] overlays-well-formed: 2 overlays with manifests
[✓] recipe-books-present: 16 module-meta + 16 recipe.md, 16 declare tier
[✓] vendored-fwv-v8: 55 files, VERSION=8.3.0

8/8 checks passed
```

## What changed for consumers (downstream)

If you vendor freshvibe-cms 1.0.0 into your site:

1. The package now follows the 8-`app-*/` FWV v8 layout (was a flat structure in 0.8.0)
2. There's a vendored FWV v8.3 at `app-pact/vendored/fvw-v8/` (read-only — use a worktree to update)
3. The App-DNA, Atlas, Codex are all machine-verifiable (per the §03, §04, §22 schemas)
4. Per-block Recipe Books (16) make the package self-documenting
5. The drift detector (8 checks) catches inconsistencies before they ship
6. Overlays (2 starter) show the compose-without-forking pattern

## Reversibility

The shadow at `app-pact/shadow/v0.8.0-pre-fwv-v8-alignment/` (526 files) is the rollback target. To revert:

```bash
git revert <ship-commit-sha>           # reverts the commit
# OR for full restore:
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 shadow is the safety net. It's preserved permanently until the operator says to clean up.

## Bulletins posted (a452 timeline)

- b383-b430: prior phase 1.0 work + correction + bug report routing
- b432: plan a452 updated with 5 questions resolved + §1.7a
- b433: phase 1.1 done (shadow freeze)
- b434: autonomous-roll policy locked
- b435: phase 1.2 done (App-DNA)
- b436: phase 1.3 done (verify shadow)
- b437: phase 2 done (Atlas)
- b438: phase 3 done (Codex)
- b439: phase 4 done (Pact complete)
- b440: phase 5 done (Recipe Books)
- b441: phase 6 done (Overlays)
- b442: phase 7 done (App-VP + drift detector)
- b443: phase 8 done (Ship)

## See also

- `/workspace/.mavis/plans/2026-08-04/fvw-v8-alignment-plan.md` — the full plan
- `app-pact/app-pact.md` — the Constitution
- `app-pact/anti-drift.md` — the anti-drift rules
- `app-pact/invariants.md` — the testable invariants
- `app-pact/dna/app.dna.json` — the package DNA
- `app-trace-atlas/atlas.json` — the surface→behaviour→module→file→test chain
- `app-codex/codex.md` — the behavioural contract
- `app-recipe/recipe.md` — the Recipe manifest
- `app-overlays/README.md` — the overlay system docs
- `app-vp/app.vp.json` — the verifiable properties
- `app-pact/checks/CHECKS.md` — the per-phase verification protocol
- `app-pact/shadow/EXTRACTION-MANIFEST.md` — the rollback target manifest
- `app-pact/shadow/v0.8.0-pre-fwv-v8-alignment/` — the rollback target (526 files)
- `app-pact/vendored/fvw-v8/` — the FWV v8.3 vendored copy (55 files, canonical source)
- `app-pact/vendored/README.md` — the FWV v8.3 provenance
- `scripts/drift-detector.py` — the drift detector (8 checks)
- `FV-CMS-VERSION.txt` — 1.0.0
- `FV-CMS-MANIFEST.json` — package manifest
