# FVW v8 Canonical-Home Rollout — Master Manifest > **What this is**: complete list of every file produced for the canonical-home rollout (D-2026-07-22). Each file is at a specific path, in a specific repo, with a specific purpose. This is the operator's checklist. > > **Date**: 2026-07-22 > **Authority**: D-2026-07-22-fvw-canonical-home-is-gallery.md --- ## The 5 steps and the files they produce ### ✅ Step 0: Documentation (this manifest's files) | # | File (in `/workspace/`) | Target repo path | Purpose | Status | |---|---|---|---|---| | 0.1 | `pact/decisions/2026-07-22-fvw-canonical-home-is-gallery.md` | `avidtech6/freshvibestudio/pact/decisions/` | The decision record (DR) | ✅ drafted | | 0.2 | `gallery-pact/STATUS.md` | `avidtech6/fv-module-gallery/STATUS.md` | Updated gallery status (D-2026-07-17-03 superseded) | ✅ drafted | | 0.3 | `gallery-pact/fvw/v8/FVW-SYNC-PROTOCOL.md` | `avidtech6/fv-module-gallery/gallery-pact/fvw/v8/` (per-version subfolder) | The operational doctrine (in-doctrine "how to check + refresh" doc) | ✅ drafted | | 0.4 | `gallery-pact/fvw/v8/CHANGELOG.md` | `avidtech6/fv-module-gallery/gallery-pact/fvw/v8/` (per-version subfolder) | Versioning changelog (NEW — required by the canonical-home decision) | ✅ drafted | | 0.5 | `gallery-pact/fvw/v8/VERSION` | `avidtech6/fv-module-gallery/gallery-pact/fvw/v8/` (per-version subfolder) | The canonical version string (NEW — `8.1.0`) | ✅ drafted | | 0.6 | `gallery-pact/fvw/v8/README.md` | `avidtech6/fv-module-gallery/gallery-pact/fvw/v8/` (per-version subfolder) | Updated with canonical-home banner + Layer 9 | ✅ drafted | | 0.7 | `gallery-pact/fvw/v8/38-two-recipe-model.md` | `avidtech6/fv-module-gallery/gallery-pact/fvw/v8/` (per-version subfolder) | The missing v8.1 file (catches up the 1-file drift) | ✅ drafted | | 0.8 | `gallery-pact/fvw-versioning-rules.md` | `avidtech6/fv-module-gallery/gallery-pact/` | Updated meta-rules with §0 (canonical home + sync model) | ✅ drafted | | 0.9 | `freshvibestudio/pact/freshvibe-way-v8/SYNC-NOTE.md` | `avidtech6/freshvibestudio/pact/freshvibe-way-v8/` | Mirror note (auto-added by the mirror workflow) | ✅ drafted | ### 🔄 Step 1: Catch up the gallery (apply diffs) The gallery's `gallery-pact/fvw/` currently has 41 files. After this rollout, it should have 43 files (the existing 41 + `CHANGELOG.md` + `VERSION` + `FVW-SYNC-PROTOCOL.md` + `38-two-recipe-model.md` = 44, but `38-two-recipe-model.md` is the file that catches up the 1-file drift from v8.0 → v8.1, so net 42). Plus the 3 new files (`CHANGELOG.md`, `VERSION`, `FVW-SYNC-PROTOCOL.md`). **PR to open**: `avidtech6/fv-module-gallery` → branch `feat/canonical-home-v8.1` | File | Action | |---|---| | `gallery-pact/fvw/v8/CHANGELOG.md` | CREATE (from manifest 0.4) | | `gallery-pact/fvw/v8/VERSION` | CREATE (from manifest 0.5) | | `gallery-pact/fvw/v8/FVW-SYNC-PROTOCOL.md` | CREATE (from manifest 0.3) | | `gallery-pact/fvw/v8/38-two-recipe-model.md` | CREATE (from manifest 0.7, catches up v8.1 drift) | | `gallery-pact/fvw/v8/README.md` | UPDATE (from manifest 0.6) | | `gallery-pact/STATUS.md` | UPDATE (from manifest 0.2) | | `gallery-pact/fvw-versioning-rules.md` | UPDATE (from manifest 0.8) | ### 🔄 Step 2: Set up the sync mechanism | # | File (in `/workspace/`) | Target repo path | Purpose | Status | |---|---|---|---|---| | 2.1 | `fv-module-gallery/.github/workflows/mirror-fvw.yml` | `avidtech6/fv-module-gallery/.github/workflows/` | The mirror workflow (gallery → consumers on push) | ✅ drafted | | 2.2 | `freshvibestudio/.github/workflows/fvw-freshness-check.yml` | `avidtech6/freshvibestudio/.github/workflows/` | The freshness check (consumer self-checks) | ✅ drafted | | 2.3 | `freshvibestudio/scripts/fvw-refresh.sh` | `avidtech6/freshvibestudio/scripts/` | The bash refresh script (manual fallback) | ✅ drafted | | 2.4 | `mavis-templates/fv-gallery/fv-gallery.py` | `avidtech6/mavis-templates/fv-gallery/` | The AI-session CLI tool | ✅ drafted | | 2.5 | `mavis-templates/fv-gallery/README.md` | `avidtech6/mavis-templates/fv-gallery/` | CLI documentation | ✅ drafted | **Optional but recommended** (for full Mavis integration): - Update `avidtech6/mavis-templates/MIND-QUOTA-CONSTITUTION.md` to add **Mavis Rule 8: doctrine freshness** (the AI-session bootstrap protocol from FVW-SYNC-PROTOCOL.md §9). ### 🔄 Step 3: Archive the deprecated top-level repo | # | File (in `/workspace/`) | Target repo path | Purpose | Status | |---|---|---|---|---| | 3.1 | `avidtech6/freshvibe-way-v8/AGENTS.md` | `avidtech6/freshvibe-way-v8/AGENTS.md` | Updated to point at gallery | ✅ drafted | | 3.2 | `avidtech6/freshvibe-way-v8/ARCHIVE-NOTICE.md` | `avidtech6/freshvibe-way-v8/` | Archive procedure checklist | ✅ drafted | **Manual web-UI step** (operator action): 1. Push the updated `AGENTS.md` to the repo 2. Go to https://github.com/avidtech6/freshvibe-way-v8/settings 3. Danger Zone → Archive this repository → confirm 4. Verify the banner shows "This repository has been archived. It is now read-only." ### 🔄 Step 4: Update consumers This is the "soft" step — add source-attribution lines to consumer docs. Lower-priority than the mechanical Steps 1-3. | # | File (in `/workspace/`) | Target repo path | Purpose | Status | |---|---|---|---|---| | 4.1 | (none drafted) | `avidtech6/freshvibe-dochub/dev/doctrine/fvw-v8.md` | Update `pact_refs` to point at gallery paths | TODO | | 4.2 | (none drafted) | `avidtech6/oscar-platform/pact/` | Add "Mirrored from FVW v8 (canonical: gallery). Last sync: " | TODO | | 4.3 | (none drafted) | `avidtech6/freshvibe-reconstruction-engine/pact/01-fvre-doctrine.md` | Same | TODO | | 4.4 | (none drafted) | `avidtech6/oscar-web/` | App-pact note (light) | TODO | These can be done in a single PR or as separate ones. ### Step 5: Verification (4 things) | # | Check | How | |---|---|---| | 5.1 | Doctrine in gallery matches fvs mirror byte-for-byte | `diff -r gallery-pact/fvw/ /pact/freshvibe-way-v8/` (excluding `SYNC-NOTE.md` which is mirror-only) | | 5.2 | Freshness check runs and passes in a consumer repo | Open a test PR in fvs, verify the workflow runs and exits 0 | | 5.3 | Deprecated top-level repo is archived | Web UI: confirm the "This repository has been archived" banner | | 5.4 | End-to-end smoke test: AI session bootstrap | Run `python3 fv-gallery.py freshness --doctrine` in a consumer repo, see it pass | --- ## The 3 deliverables, in plain English ### 1. The in-doctrine sync protocol (`FVW-SYNC-PROTOCOL.md`) A 350-line operational doctrine that lives INSIDE the FVW v8 distribution (at `gallery-pact/fvw/v8/FVW-SYNC-PROTOCOL.md`). It documents: - The freshness contract (what "fresh" means) - How to run a freshness check (GitHub Action, CLI, or cron) - How to refresh from the canonical - The state machine (UNINITIALIZED → FRESH → STALE → DRIFTED) - The AI session bootstrap protocol **Why it lives inside the doctrine**: every AI session working under FVW v8 reads this file. The protocol is part of the contract. ### 2. The sync mechanism (3 files) - `mirror-fvw.yml` — the gallery's workflow that pushes to consumers - `fvw-freshness-check.yml` — the consumer's workflow that verifies the mirror - `fvw-refresh.sh` — a bash script for manual refresh - `fv-gallery.py` — a Python CLI for AI sessions **Why all 4**: the bash script is the manual fallback (operator can run it), the GitHub Actions are the automated guard, and the CLI is the AI-session-facing tool. Three audiences, three tools. ### 3. The versioning discipline (3 files) - `VERSION` — the canonical version string (`8.1.0`) - `CHANGELOG.md` — every FVW v8 change - Updated `fvw-versioning-rules.md` — adds §0 about canonical home + sync model **Why**: FVW v8 already had versioning rules (the 7 rules in `VERSIONING-RULES.md`), but it didn't have a canonical home + a sync contract. The meta-rules document is the place to declare those, and VERSION + CHANGELOG are the operational artefacts. --- ## The 4 NOT-drafted items For completeness, here are the items that I considered but didn't draft (they're optional or out-of-scope): 1. **Updates to consumer docs** (Step 4.1-4.4): low-priority, can be one-line PRs. 2. **The Mavis Rule 8 addition to MIND-QUOTA-CONSTITUTION.md**: optional but recommended. Would add the AI-session bootstrap protocol as a Mavis rule. 3. **A cron job in fva-control-panel** for system-level monitoring: optional (the GitHub Action is sufficient). 4. **A v9 planning doc**: out of scope (D-2026-07-22 is about v8, not v9). --- ## The 4 things to verify before declaring done 1. ✅ All files in `/workspace/` are committed to the right repos 2. ✅ The mirror workflow runs on push (test with a no-op commit) 3. ✅ The freshness check runs on PR (test with a fake PR) 4. ✅ An AI session can `python3 fv-gallery.py info` and `freshness --doctrine` successfully --- *This manifest is the operator's checklist for the canonical-home rollout. Follow the steps in order. The result: FVW v8 is canonical in the gallery, mirrored to consumers with freshness checks, and the deprecated top-level repo is archived.* ### 🔄 Step 6: Mirror the canonical into fvs (fvs-side files) Per the operator's "do the same in fvs" directive, the fvs mirror at `pact/freshvibe-way-v8/` was updated to match the gallery canonical's per-version subfolder structure. | # | File (in `/workspace/`) | Target repo path | Purpose | Status | |---|---|---|---|---| | 6.1 | `freshvibestudio/pact/freshvibe-way-v8/README.md` | `avidtech6/freshvibestudio/pact/freshvibe-way-v8/` | Updated README with canonical-home banner + v8.1 status + Layer 9 | ✅ drafted | | 6.2 | `freshvibestudio/pact/freshvibe-way-v8/CHANGELOG.md` | `avidtech6/freshvibestudio/pact/freshvibe-way-v8/` | The fvs mirror's CHANGELOG (identical to gallery canonical) | ✅ drafted | | 6.3 | `freshvibestudio/pact/freshvibe-way-v8/VERSION` | `avidtech6/freshvibestudio/pact/freshvibe-way-v8/` | The fvs mirror's VERSION (identical to gallery canonical, `8.1.0`) | ✅ drafted | | 6.4 | `freshvibestudio/pact/freshvibe-way-v8/FVW-SYNC-PROTOCOL.md` | `avidtech6/freshvibestudio/pact/freshvibe-way-v8/` | The fvs mirror's sync protocol (identical to gallery canonical) | ✅ drafted | | 6.5 | (all 41 doctrine files copied) | `avidtech6/freshvibestudio/pact/freshvibe-way-v8/` | All 41 doctrine files (00-35 + 3-file-model + rules-md + 38 + meta) | ✅ copied | **Final state** (verified 2026-07-22): - Gallery canonical `gallery-pact/fw8/v8/`: 52 files - FVS mirror `pact/freshvibe-way-v8/`: 52 files - Byte-equal: ✅ all 52 files match The fvs mirror is now **in sync with the gallery canonical**. The auto-mirror workflow (in `fv-module-gallery/.github/workflows/mirror-fvw.yml`) will keep them in sync from now on.