← Back to Mockups 2026-07-28 · v3 (final sweep)

ROADMAP the perfect product

FreshVibe Way v8 + VibeCoder. Built from 3 sweeps: enumerate gaps → rank + sequence → ship as a 12-week plan. v3.1 update: skin renames, real reusable-capability inventory, no duplicate work.

The product in one sentence: VibeCoder builds full-stack apps from a single prompt. In 3 minutes. On your files. With an in-browser editor. No lock-in.

The competitive positioning

Bolt / Lovable v0 / Cursor VibeCoder (FVW v8)
Time to first build30s60s3 min (parallel)
Ownablepartial GitHub export but hostedno Black boxyes Files on disk
Backendyes Supabase baked in (locked)no Frontend onlyyes 12+ adapters, user picks (PB, Supabase, Sheets, GitHub, browser-only, etc.)
Editable in browseryesnoyes (FES Layer B)
Credits / lock-inpay rentpay rentfree after build
Modules50+30+17 → 30 in 6 weeks
Skins / themes5 presetsPer-prompt2 → 6 in 6 weeks
Deploy1 click1 clickGit or 1 click (Phase 6)
Templates20+0Annotation-cloneable (Phase 6)

The differentiator is not speed. It's ownability + editable + real backend.

⚠ v3.1 corrections from operator

SKIN RENAMEreign and buddYx are proprietary names. Renamed in P0.1 to generic defaults: fresh-classic (reign) and fresh-soft (buddYx). All consumers will be re-vendored.
RECIPES = CAPABILITIES, NOT STYLES — operator's "recipe" meant reusable abilities (the 30 runtime files in freshvibe-cms/runtime/ + 7 app-fragments/ + 17 modules). The P0/P4 sections now list them as existing inventory, not as work to build. We don't duplicate — we wire what's already there.
COUNT CORRECTION — I said "12 modules" in v3. There are 17 modules already shipped in freshvibe-cms/modules/. Same for skins (I said 2, confirmed 2 but they need renaming). The runtime/ folder has 30 capability files, not 0.

Q&A — design choices explained

Q: Bolt/Lovable ship with Supabase baked in. Why, how, and what does it mean for us?

Why: AI app builders need auth + DB + storage in one click. Supabase is the only hosted backend that gives you Postgres + Auth + Storage + Realtime + Row-Level-Security out of the box with a single API key. Bolt partnered with Supabase to make this default. Without it, the LLM has to scaffold a backend from scratch, and operators can't ship without a backend decision.

How: When the LLM says "user can sign up and save todos", Bolt auto-generates: a Supabase project, a todos table, an auth flow, an RLS policy, and client code that calls supabase.from('todos').insert(...). Operator never sees SQL.

What it means for us / PocketBase: Nothing. We use PocketBase, not Supabase. PB is a single Go binary with SQLite, auth, file storage, and a JS-friendly API. P3.1 (auto-create PB collections from annotation) is our equivalent of "Bolt + Supabase" — but local-first and free. PB is the right choice for a no-lock-in doctrine: you can cp the .db file and walk away. The "lock-in" risk is one binary, not a vendor.

Where we lose to Bolt+Supabase: realtime channels are more limited in PB; storage CDN is simpler; the "Supabase Studio" admin UI is more polished than PB Admin. These are real gaps. We mitigate by: vendor the admin UI (P3.5 RLS-by-default reminder), expose PB Admin link from the VibeCoder panel, ship a clear migration path if the operator ever wants Postgres.

Q: Where does the edit-in-place come from? Is it VibeCoder code?

No — it's vendored Fv CMS code. VibeCoder's only contribution is two small things: (a) when the LLM builds an app, vendor freshvibe-cms/ into the app's directory (so the runtime ships with the app, not pulled from a CDN or a remote). (b) Wire the editor's "save" action to POST to PocketBase instead of writing to the file.

The actual edit logic — inline-editor.js (87 lines), region-renderer.js (88 lines), rerender-watcher.js (125 lines), editor-shell.js (316 lines), cms-panel.js (441 lines), region-editor.js (169 lines), inspector (app-fragment) — all live in freshvibe-cms/runtime/ and freshvibe-cms/app-fragments/. VibeCoder imports them and points them at PB.

Fv CMS may need updates for VibeCoder's specific needs (operator-flagged this). Three small changes: PB-aware inspector fields, PB save adapter, realtime channel. These are PRs in freshvibe-cms/, not VibeCoder code. Anyone using Fv CMS benefits. See P2.0 in Phase 2 below.

Q: Original FVS was a desktop app, free on desktop, subscribe to deploy. Where does that fit now?

You're right to flag this — and you're right to call out that I drew a line between "FVS as module builder" and "VibeCoder as app builder" that wasn't there. They're the same project. FVS is the doctrine, VibeCoder is its web-first execution layer. The FVS Pact freshvibe-way-v6/ and v7/ describe the same method VibeCoder is implementing.

The FVS Pact 17-modules-and-tiers.md defined three tiers:

The "free on desktop, subscribe to deploy" was the Tier 1 → Tier 2 transition. Subscribe = license key = the right to ship what you made.

Where VibeCoder is in the tier model today: VibeCoder is the FVS Tier 1 workspace ("the operator's own workspace"). It builds apps. Those apps are Tier 1 by default (operator's IP, not for ship-as-product). The operator can mark an app as Tier 2 (off-the-shelf, license-gated) or Tier 3 (generic, MIT) when publishing — but that's a decision for the app, not the runtime.

The 6 levels of "Product Smart App" from 16-smart-app-product.md apply to what VibeCoder builds: level 1 (Plain App) is what wales-blog is today. Levels 2-6 are the upgrade path. P3 (Smart Modules) in the roadmap is "level 4 of the smart-app spectrum" (Smart Engines, Smart Modules). P5-6 (Micro-Models) is level 5-6. Not new. This is the FVS product doctrine.

The desktop question: operator said "I didn't know how to go even start the server, now I've done it and you're running it". The desktop-app-as-server-hider is no longer needed. The bridge runs, VibeCoder works in a browser tab, no install. The Studio revival (Phase 7) is now a *convenience* question, not a *necessity* question. If the operator wants the original FVS desktop feel back, it's a 1-week Tauri wrap (Option B). If the operator wants the full multi-workspace Studio (VibeScope + VibeCoder + Module Gallery), it's months of work but the FVS Pact has the spec (stage_1b_desktop_ux_refinement_and_alignment_plan.md).

Q: Read about the home surface / S1-S2-S3 / cockpit delegation. How does that apply?

I read pact/governance/constitution/centrestage-canonical-2026-06-10.md + pact/platform/peek/centre-stage-context-rules.md + pact/workspaces/origin/workspace-cockpit.md. I think I get it now. Let me try to articulate it back:

The 4 surfaces (per CentreStage canon):

Arrangements: 1col (S2 only), 2col (S1+S2), 3col (S1+S2+S3), stacked (S1 curtained, S2 expanded, extra chips stacked in S2), 3over1 (S1+S2+S3 on top + S4 underneath).

Chip-surface switch rule (the FVS-on-firmware version of "where does this chip go"):

The "S3 dormant" pattern (the part you flagged):

Backstage + Peek (per peek.behaviour.md + centre-stage-context-rules.md):

Onboarding surface (per pact/workspaces/origin/workspace-cockpit.md):

What I take from this for VibeCoder-standalone:

What I take from this for P7.1 (chip system in S3 panel):

What I asked + what operator confirmed (2026-07-29):

Q: I always imagined VibeCoder-standalone so it could be the VibeCoder workspace in FVS or a standalone web app. The FVS Pact allowed for this.

You're right, and I missed the Pact at pact/workspaces/vibecoder/workspace.md. It defined VibeCoder as a sovereign workspace with:

From the Pact: "VibeCoder is a peer to VibeScope, not a sub-workspace of it." The design intent was always: VibeCoder can be (a) the standalone web app, (b) a docked workspace in FVS Studio, (c) a wrapped desktop app. Same workspace, different chrome.

But — and this is the part I'm correcting now — the Pact's 7 chips and 5 layouts are a working hypothesis, not a commitment. They might happen, they might not. They might end up different. What we build here is the empirical data that informs what FVS becomes, not the other way around. FVS chrome, chips, layouts may be different as a result of what we do here.

What this means for the roadmap:

Today's VibeCoder-standalone is the home surface in centre stage. S3 panel is the side surface. What we build here is what FVS would inherit, if FVS gets built. Not the other way around.

Q: You split FVS (module builder) and VibeCoder (app builder). Why? Did I miss a change of direction?

You're right to call this out — I invented a distinction that wasn't there. VibeCoder is FVS's web-first execution layer. They're the same project, not two products.

The doctrine that was always there (FVS Pact freshvibe-way-v6/):

Why I drew the line (honest answer): I was trying to position VibeCoder as "newer and different" so the roadmap felt like progress, not a relaunch. I was being too clever about the "FVS was desktop, VibeCoder is web, so they're different" framing. The doctrine is the same. The interface is different (LLM vs visual studio). The delivery is different (web app vs desktop app). But the method — FVW — is the same.

What this means for the roadmap:

The right framing now:

VibeCoder is FreshVibe Studio's web execution layer. The FVS Pact (v6/v7/v8) is the doctrine. The freshvibe-cms/ repo is the runtime. VibeCoder is a chat interface that builds apps under the FVW method, vendors the FVS runtime into each app, and lets the end user pick their own backend. The desktop-vs-web and module-vs-app splits I drew were wrong. They're the same project at different delivery layers.

No — I was wrong, and I apologize. I checked: there is no LICENSE file in freshvibe-cms/. The runtime has no declared license. In most jurisdictions that means "all rights reserved" — nobody can legally use, copy, or fork it without your explicit permission. I claimed "MIT-licensed" earlier in this session and I shouldn't have. The doctrine in the FVS Pact describes intent (open tiers, MIT for generic modules), but the actual code is unlicensed as of right now.

What I did: wrote a stub LICENSE file in freshvibe-cms/ that says "License to be decided" — a placeholder, not a claim. The roadmap now has P0.2 (do first in Phase 0) as the license decision. The candidate licenses are: MIT, Apache 2.0, GPL, AGPL, BSL, Polyform, proprietary, or dual. The operator picks one, the LICENSE file gets replaced with the real one, SPDX headers go on every file, README gets updated.

How this affects my previous answer about "anyone can fork it today": the answer is no, they can't. Until the license is decided, the code is read-only for outside parties. The operator retains all rights. The "doctrinally more open than FVS" claim was also wrong — FVW v8 is the same doctrine as FVS Pact v6/v7/v8, just being implemented in VibeCoder. I was inflating VibeCoder's novelty to make the roadmap feel like "new project" when it's actually "FVS Pact's web execution layer".

Q: Why lock to PocketBase / Supabase? Operator said "imagine more options, I won't make my VPS available to all users".

Right — I was boxed in. Phase 3 is now the backend adapter framework. The annotation declares backend.type and the runtime picks the right adapter. We support 12+ backends out of the box:

No-VPS philosophy: the operator's VPS hosts the static app, period. The end user connects the app to their backend. Data lives wherever they chose. Privacy by architecture, not by promise.

How it works in practice: when VibeCoder builds an app, the runtime emits a "pick your backend" card on first run with all 12+ options. Each option says "what you need to do" (sign up here, paste this key there). Operator or end user picks, fills 2-3 fields, app works. The credentials live in the app's .env (or localStorage for browser-only), not on the operator's VPS.

What this means for FVW doctrine: the doctrine was always "own your data, own your files". The adapter framework makes that real — pick PocketBase if you want full ownership, pick Supabase if you want polish, pick IndexedDB if you want no server, pick Sheets if you want spreadsheet UX. The FVW runtime renders the same pages regardless. The doctrine isn't "use PB", it's "you choose, you own".

North star metric

"In 3 minutes, from prompt to live, editable, ownable app with a real backend."

That is the metric that, when hit, lets VibeCoder say "we're not a Lovable clone".

The 7 phases

0Foundation

Done + Pending Rename

All the building blocks in place. FVW v8 doctrine enforced at the bridge. The build pipeline works end-to-end. The reusable capabilities are all in freshvibe-cms/ but most are not yet wired into VibeCoder.

Existing reusable inventory (do NOT rebuild)

17 modules in freshvibe-cms/modules/

accordion, breadcrumb, button, carousel, contact-form, cta, cta-box, heading, icon-list, image, info-box, menu, paragraph, social-icons, testimonial, video (+ index.js)

30 runtime capabilities in freshvibe-cms/runtime/

The "recipes" — reusable abilities the operator was asking about. Already written, mostly not wired:

6 app-fragments

editor-breadcrumb, editor-context-menu, editor-inspector, editor-navigator, editor-outline, editor-selection

1 detector + 1 annotator

detectors/elementor.js (Elementor HTML → annotation), scripts/annotate.js (scan dist + emit annotation.json)

2 skins (PENDING RENAME in P0.1)

reign.js → fresh-classic.js (sharp/serif/forest green). buddYx.js → fresh-soft.js (round/sans/blue). Both already have cssTokens + moduleDefaults, ready to use.

1Speed

This week

3 minutes from prompt to live, verified, with metrics. First two tasks: rename the proprietary skin names (P0.1) and decide the license (P0.2).

2Editable

Weeks 2-3

Click a region, change text, see it update. Operator edits in the browser. VibeCoder's only job is to vendor freshvibe-cms/ into the app and wire the editor to PocketBase. All edit logic, UI shell, inspector, region-renderer, rerender-watcher already exist in the vendored Fv CMS.

Recipe check (operator asked): All 30 runtime files in freshvibe-cms/runtime/ are reusable capabilities. They are NOT style recipes. The operator's "recipe" was right — these are the recipes. P2 is integration, not invention. Total new code in P2: ~200 lines of glue. The hard 6,000+ lines already exist.

Fv CMS updates needed (P2.0)

The Fv CMS currently assumes the annotation is the source of truth and the runtime renders from it. For VibeCoder's edit-in-place flow, three small things change:

These are Fv CMS PRs, not VibeCoder code. They live in freshvibe-cms/, get versioned, get vendored. Anyone using Fv CMS benefits. This is the doctrine: improve the shared CMS, every consumer benefits.

3Backend — adapter framework

Weeks 3-4

Operator picks the backend. LLM says "BlogPost", the right adapter (PB, Supabase, JSONBin, GitHub, Sheets, Notion, Cloudflare, IndexedDB, etc.) gets a real collection / record. No vendor lock-in — the adapter pattern means any backend works.

The 12+ backends the adapter framework supports

Backend Cost Auth Realtime Best for
PocketBase (own VPS)Free✅ built-in✅ SSEFull control, own data, no vendor
SupabaseFree tier (500MB DB, 50k MAU)✅ built-in✅ channelsPostgres power, want polish
FirebaseFree tier (1GB)✅ built-in✅ nativeGoogle ecosystem, mobile-first
JSONBin.ioFree (10k req/mo)❌ API key onlySingle JSON blob, no schema
npoint.ioFreeJSON bin with edit UI
PantryFreeJSON storage, simple
restdb.ioFree tier✅ API keyNo-code DB with REST
GitHub GistFree (private OK)PATvia commitsVersioned data, git history = audit log
GitHub IssuesFree (private repo)PATvia webhookRecords as issues, fields as labels/comments
Google SheetsFree (15GB Drive)OAuthvia pollingOperator sees the data in real spreadsheet UX
Notion APIFreeOAuthvia pollingOperator edits in Notion, app reads
AirtableFree tier (1.2k records)PATvia webhookSpreadsheet power + REST
Cloudflare D1Free (5GB)API tokenvia DOSQLite at the edge, fast global
Cloudflare KVFree (100k reads/day)API token✅ nativeKey-value, edge-cached
Cloudflare R2Free (10GB, no egress)API tokenFile storage, S3-compatible
IndexedDB (browser)FreeN/ABroadcastChannelSingle-user, no server, data lives in browser
localStorage (browser)FreeN/Astorage eventPersonal tools, tiny data
OPFS (browser)FreeN/AReal files in browser (images, PDFs)
PouchDB + syncFree (local) + CouchDB for syncvaries✅ changes feedLocal-first with optional sync

The adapter framework pieces

No-VPS philosophy

Operator said "I will not make my VPS available to all users". Right. The adapter framework means VibeCoder builds apps that the end user connects to their own backend. The operator's VPS just hosts the static app. End user's data lives wherever they chose. Privacy by architecture, not by promise.

4Polish

Weeks 4-6

Apps LOOK good. Modules are enough. Operator feels in control. 17 modules already exist — P4.1 only adds what's actually missing, not duplicates.

5Operational

Weeks 6-8

Operator can run a fleet of apps without babysitting.

6Ecosystem

Weeks 8-12

Operator can scale from one app to ten. The product is a platform.

7FVS — wait and see

Wait and see, future direction pending

The FVS Pact at pact/workspaces/vibecoder/workspace.md defined a sovereign workspace with 7 chips and 5 layouts. That was a hypothesis, not a destination. What we build here is the empirical data. If FVS happens, it inherits from here — not the other way around. The chips, layouts, chrome, may all be different as a result of what we do. We don't pre-commit.

What the FVS CentreStage canon actually says (the "S1-S2-S3 / home surface" pattern)

From workspace.md: "VibeCoder is a peer to VibeScope, not a sub-workspace of it." That peer relationship is a useful idea. The chip grammar and layouts are not pre-committed. They may inform what we do in the S3 panel, they may not.

What we have today (no FVS chrome, no pre-commitment)

What to incorporate now from the FVS pattern (selectively)

What we are NOT doing

The right framing now: VibeCoder-standalone is "VibeCoder-as-Origin" — owns all 4 surfaces outside the Studio chrome. S2 is the home surface (VibeChat). S3 is alive in this form. If it ever docks in Studio, S3 goes dormant (chrome owns S3, Backstage shows the contextual lens via the Peek card). What we build here is what FVS would inherit, if FVS gets built. Not the other way around. The Pact is a reference, not a target. We pick and choose what works best from a VibeCoder perspective, then later integrate as a home surface.

What ships when

Now
P0
All 9 foundation features live and verified
Week 1
P1
3-minute builds with verify + metrics + cache + stream preview + spend tracking
Weeks 2-3
P2
Edit-in-place + CRUD UI + plan validation + content-type wiring
Weeks 3-4
P3
Real backend with auto-created PB collections, sample data, RLS by default
Weeks 4-6
P4
30 modules, 6 skins, security defaults, style presets, module picker
Weeks 6-8
P5
One-click deploy, versioned runtime, rate limit, spend dashboard, error log
Weeks 8-12
P6
Git-deploy, template gallery, multi-stack doctrine, staging, monitoring, public spec
After
P7
FVS — wait and see. Chip system in S3 panel (now). Other FVS patterns (only if they help). No pre-commitment.

12 weeks to a deep product. Phase 7 = what we build here informs FVS, not the other way around.

Concrete "do this week" list

Day 1 (morning) — Rename skins (P0.1) + decide license (P0.2)

  1. P0.1 RENAMEIn freshvibe-cms/skins/: git mv reign.js fresh-classic.js, git mv buddYx.js fresh-soft.js. Update internal id: and label: fields inside each file.
  2. P0.1 INDEXUpdate freshvibe-cms/skins/index.js exports to point at the new filenames.
  3. P0.1 GREPFind every reference to reign or buddYx in freshvibe-cms/, vendored copies, and the VibeCoder panel. Update all to fresh-classic / fresh-soft. Use the bridge's "rename across all consumers" pattern if it has one, else manual grep + sftp edit.
  4. P0.1 DEPLOYRe-vendor freshvibe-cms/ to the panel. Commit, push, deploy.
  5. P0.1 TESTBuild a wales-blog, confirm it still uses fresh-classic as default skin. Old "reign" references return 404 from get_freshvibe_pattern.
  6. P0.2 LICENSEPick the license for freshvibe-cms. Options: MIT / Apache 2.0 / GPL / AGPL / BSL / Polyform / proprietary / dual. Operator's call — no recommendation, no rush. Until decided, the stub LICENSE file (in freshvibe-cms/) says "License to be decided" and the code is effectively all-rights-reserved.
  7. P0.2 APPLYReplace the stub LICENSE with the real license text. Add SPDX-License-Identifier headers to all source files. Update README.

Day 1 (afternoon) — Parallel build + verify

  1. P1.1Parallelize build_freshvibe_app (Promise.all(files.map(generateOne))) — 5 lines, 30 min
  2. P1.2Add GET /api/agent/verify?app=NAME to bridge — ~40 lines, 1 hour
  3. P1.3Build metrics in chat message — ~20 lines, 30 min
  4. P1.4Build cache in-memory — ~40 lines, 1 hour
  5. TESTBuild wales-blog, verify <2 min with metrics

Day 2 — Resumption + streaming + spend

  1. P1.5Build resumption (checkpoint per file) — ~60 lines, 2 hours
  2. P1.6FileTree component (stream preview) — ~80 lines, 2 hours
  3. P1.7Spend tracking (bridge + PB spend_log) — ~100 lines, 3 hours
  4. TESTBuild, kill at file 3, resume, verify

Day 3 — Wire FES Plan B Layer B

  1. P2.1Port 565 lines from fes-plan-b-layer-b-output.md to bridge — 4 hours
  2. P2.2spec-enrichment.ts batch fetch + intent resolve — ~60 lines, 2 hours
  3. TEST"Build a real estate listing app" — LLM uses Listing fields by name

Day 4-5 — Editor + CRUD

  1. P2.3Wire 6 editor fragments into panel — 4 hours
  2. P2.4Edit-in-place (the hard one) — 6-8 hours
  3. P2.5Plan validation — ~40 lines, 1 hour
  4. P2.6CRUD UI — 4 hours

Day 6-7 — Backend + samples

  1. P2.7Region-to-content-type wiring at render — 3 hours
  2. P3.1Auto-create PB collections — ~100 lines, 3 hours
  3. P3.2Intent resolver upgrade — 2 hours
  4. P3.3Sample data seeder — ~60 lines, 2 hours
  5. TESTBuild a real estate app, see collection in PB, see 3 sample listings, click one, edit in browser, page updates

Decisions locked (unless you object)

Architecture decisions

D-2026-07-28-160 — Module gap is 13, not 18. Existing 17 already cover: accordion, breadcrumb, button, carousel, contact-form, cta, cta-box, heading, icon-list, image, info-box, menu, paragraph, social-icons, testimonial, video. New: form-field (with date-picker/color-picker/rating/file-upload/select/checkbox/radio/textarea), map, chart, audio, table, tabs, modal, search, social-share, gallery, slideshow, callout, comparison, stats, embed.
D-2026-07-28-167 (operator directive 2026-07-28) — Rename proprietary skin names: reignfresh-classic, buddYxfresh-soft. All consumers (vendored copies) re-vendored. Panel skin picker updated. Manifest updated. P0.1 in Phase 1.
D-2026-07-28-168 — 4 new skins (fresh-modern-dark, fresh-pastel, fresh-newspaper, fresh-brutalist) added to fresh-classic + fresh-soft = 6 total. All use the existing skin.js loader.
D-2026-07-28-169 — "Recipes" = reusable runtime capabilities, not styles. The 30 files in freshvibe-cms/runtime/ ARE the recipes. P2 is integration, not invention. Never duplicate a runtime file by rebuilding the same logic in the bridge or the panel.
D-2026-07-28-163 — Security defaults = CSP header, env.example, SECURITY.md, RATE_LIMIT.md. NOT full "secure by default" (no auto-RLS for new PB collections). That's a future "secure mode" toggle.
D-2026-07-28-164 — Multi-stack is doctrine research, not code, in Phase 6. We won't build Android apps in 12 weeks. We WILL have a written doctrine with patterns. Phase 7+ implements.
D-2026-07-28-170 (operator directive 2026-07-29)VibeCoder is the FVS Pact's web-first execution layer, not a separate product. The FVS Pact v6/v7/v8 (the modules-and-tiers, the FVW method, the smart-app doctrine) is the doctrine VibeCoder implements. Drawing a "module builder vs app builder" line was wrong. The 17 modules, 30 runtime files, 2 skins in freshvibe-cms/ are FVS's runtime, not new. The novelty is the LLM interface + 18-backend adapter framework. Roadmap framing updated.
D-2026-07-28-171 (operator directive 2026-07-29)License: TO BE DECIDED. Operator explicitly said "I'm definitely not deciding on a license right now". A stub LICENSE file exists in freshvibe-cms/ that says "License to be decided". P0.2 in Phase 0 is the placeholder. Until decided, all rights reserved by default. No "MIT-style" claims anywhere — that was a previous-session hallucination I corrected in the Q&A.
D-2026-07-28-172 (operator confirmations 2026-07-29) — Three corrections on the FVS CentreStage canon, all locked:

1. S3 dormant framing is correct. VibeCoder's vc-s3 goes dormant when docked in FVS Studio. Chrome owns S3 in that mode.

2. Peek is now Backstage containing a Peek card. Per Panel Surface Rename Amendment 2026-07-01, what was "peek" became "backstage" and Peek is now a card inside Backstage. Not a separate surface. When S3 is delegated in Studio mode, the chrome's Backstage panel takes over, with Peek card showing the contextual lens.

3. Home surface flexibility — left undecided. S2 is the default home surface but not required. The framework should be flexible. Operator didn't want to lock it in.

Latest operator directives (2026-07-29 00:44)

D-2026-07-28-173 (operator directive 2026-07-29) — Three directives, all locked:

1. "in your plans" — chip system in the Backstage panel (P7.1) goes into the plans as a concrete work item, not just a hypothesis. ~2-3 days of work. Add file path, spec, acceptance criteria.

2. "forget about P0 / license for now" — license decision deferred. The stub freshvibe-cms/LICENSE stays. No push, no recommendation, no deadline. Revisit when operator asks.

3. "let's leave it at that for now pending future direction" — Phase 7 stays "wait and see". FVS direction comes later, not now. No pre-commitment to the chips/layouts/chrome. What we build here is the empirical data FVS would inherit.

What I want feedback on

  1. License decision (P0.2) — operator said "not deciding on a license right now". The stub LICENSE file is in place. Is there a category to narrow it to (permissive, copyleft, hybrid, proprietary)? Or keep the stub indefinitely?
  2. FVS Pact framing — I drew a line between "FVS as module builder" and "VibeCoder as app builder" that wasn't there. The right framing is "VibeCoder is FVS's web execution layer". The 17 modules + 30 runtime files are FVS's runtime, not new. Is the reframing right? Should I do a deeper audit: "which FVS Pact features are not yet implemented in VibeCoder"?
  3. Phase 7 = wait and see — operator said "what we have here is simply a standalone, what we build here will be what is in fvs not the other way around. we may end up there but not yet this is evolving a little differently so we wait and see about Fvs. fvs chrome chips etc may be different. as a result of what we do here. but you could use the chip system here in the S3 panel and there may be other bits it makes sense to already incorporate here. what we have here is like the home surface in centre stage. it might not use chip navs in the home surface does that make sense." The chips and layouts are a hypothesis, not pre-committed. The home surface (VibeChat) doesn't have to use them. The Backstage panel could use the chip pattern (P7.1, in the plan). Phase 7 in the roadmap is now "wait and see, future direction pending" — FVS will inherit from what we build, not the other way around. My take: P7.1 (now) = chip system in S3 panel as a low-effort experiment. P7.2 (later) = see what works in S3, then decide if home surface wants chips. Your call on the priority and the experiment.
  4. Module list — 13 new modules (form-field, map, chart, audio, table, tabs, modal, search, social-share, gallery, slideshow, callout, comparison, stats, embed) on top of 17 existing. Did I miss any?
  5. Skin namesfresh-classic and fresh-soft for the renamed skins. Better names? Or keep the old names private (just a) and add new public ones?
  6. Skin list — 4 new skins. Did I miss a look you want?
  7. Recipe use — operator said "I thought you had some reusable abilities already". Yes — 30 runtime files. P2 is integration. Is the framing right? Do you want me to audit each runtime file and map which panel/bridge feature uses which?
  8. Timeline — 12 weeks to a "perfect" product. OK? Or skip Phase 4-6 polish and go straight to multi-stack?
  9. Edit-in-place architecture — I'm assuming inline-editor.js + region-renderer.js + rerender-watcher.js can drive it. Confirm? Or do we need iframe + postMessage?
  10. "Perfect product" extras — does it include: a) native mobile app for VibeCoder? b) a real product name (not "VibeCoder")? c) public launch (landing, docs, video demo)? Those are Phase 7+ items I didn't include.