**Date**: 2026-08-26 22:05 UTC
**Author**: Mavis (helper-mavis, id 10, session 412100071272671)
**For**: Operator
**Status**: HOLDING. No work proceeds until you respond.
This card packages **10 decisions** into one place. The 7 are carryover from the Task A spec §9 (operator never answered). The 3 are new, surfaced by the FES audit + world-class module plan. Each is a binary or 3-way pick. Pick one per row, or just the rows you care about.
---
| Option | What | Cost | Benefit |
|---|---|---|---|
| **A** | Trust my audit (16/16). Update the m-prefix-convention.md (when id 8 writes it) to say "all 16 widget.js files have M- prefix, runtime-only." | None | Convention doc is accurate |
| **B** | Trust id 8's audit (11/16). Re-verify my regex; the 5 are probably a different shape (e.g. `id: 'M-button'` literal vs `id: button.id` dynamic). | 1hr audit | Id 8's audit was against a different state, so we discover what changed |
| **C** | Defer until id 8 responds. Don't write the convention doc. | 0 | Avoid a wrong convention doc |
| **D** | Just look at the 5 files together and see if id 8's regex is checking the right thing. | 30min | Cheapest path to truth |
**Recommended: D.** The 5 files (contact-form, cta-box, icon-list, info-box, social-icons) take 5 minutes to grep. If id 8 used `grep -E "^id:"` and I used `grep -E "id:"`, the difference is one anchor.
**My pick if you don't have a preference**: D, escalate to A based on what we find.
| Option | What | Cost | Benefit |
|---|---|---|---|
| **A** | The feed is canonical. fvw_version 8.2.0 is correct. Update memory. | 0 | Truth |
| **B** | The doctrine is canonical. fvw is at 8.3.0. The feed is stale; cron will refresh. | 0 | Truth |
| **C** | They're both right (8.2.0 is the released version, 8.3.0 is the in-development version on a different branch). Document both. | 30min | Both states tracked |
| **D** | Defer. Not blocking anything. | 0 | No work |
**Recommended: C.** The fes-fvw-updates/ folder has 6 files dated for "FVW v8.4", so v8.3.0 might be a staging version. The clean answer is "feed=released, doctrine=in-dev" and we track both.
**My pick if you don't have a preference**: C.
| Option | What | Cost | Benefit |
|---|---|---|---|
| **A** | Intentional config-only. Document in module-meta.json. | 30min | Truth |
| **B** | Gap. Write the recipe/codex/rules. | 4hr | Complete pack |
| **C** | Defer. It's not blocking anything. | 0 | No work |
**Recommended: A.** Every other full-shape module has recipe-book, but menu is a config-driven chrome surface (eael-simple-menu) — it has no real RMD because the runtime IS the recipe. Document and move on.
**My pick if you don't have a preference**: A.
| Option | What | Cost | Benefit |
|---|---|---|---|
| **A** | Relocate. Move to `fv-cms-vendored/app-fragments/` (chrome-side). | 1hr | cms-widgets/ is clean FES content |
| **B** | Document as exceptions. Add a README.md to each explaining why. | 30min | Quick |
| **C** | Defer. They work, just misclassified. | 0 | No work |
**Recommended: A.** The cms-widgets/ directory is supposed to be FES content-bound renderers. theme-presets and tools are CSS bundles and tool atoms. They don't belong. The fix is mechanical.
**My pick if you don't have a preference**: A.
| Option | What | Cost | Benefit |
|---|---|---|---|
| **A** | Relocate to `fv-cms-vendored/app-fragments/fv-*` or a new `chrome/` dir. | 1hr | FES doctrine is clean |
| **B** | Document as exceptions. They're FVS chrome, not FES modules. | 30min | Quick |
| **C** | Defer. | 0 | No work |
**Recommended: A.** Same logic as Q4. The fv-* prefix already means "FVS chrome", and they're literally FVS chrome app-fragments. Move them where the FES gallery doesn't try to dispatch them.
**My pick if you don't have a preference**: A.
| Option | What | Cost | Benefit |
|---|---|---|---|
| **A** | Clean up. Update the 9 module names to lowercase (breadcrumb, cta-box, etc.). | 30min | Doctrine is consistent |
| **B** | Annotate as historical. Add a note "the M- prefix in this section is from a pre-d529c91 context." | 15min | Truth preserved |
| **C** | Defer until id 8 writes `m-prefix-convention.md`, then this is a one-line cleanup. | 0 | Bundles with Q7 |
**Recommended: C.** The convention doc (Q7) is the natural place to address this. Don't touch the file until the doc is written.
**My pick if you don't have a preference**: C.
| Option | What | Cost | Benefit |
|---|---|---|---|
| **A** | Wait for id 8. They're committed to writing it. | 0 | Id 8 owns it |
| **B** | I write a draft, id 8 reviews. | 2hr | Faster |
| **C** | Forget the doc, just keep the dual-layer rule implicit. | 0 | No work |
**Recommended: A.** Id 8 said "writing when C-2 close" — C-2 is closed. If they don't push by next operator review, escalate to B.
**My pick if you don't have a preference**: A.
---
These are the build decisions. Picking these unblocks the 4-week Tier 1 build.
| Option | Modules | Time | Coverage after | Lines |
|---|---|---|---|---|
| **A** | 10 (icon, divider, spacer, tabs, modal, map, pricing-table, gallery, form, query-loop) | 4 weeks | 26 modules, 15/15 canonical | 5,000-7,500 |
| **B** | 8 (skip form + query-loop) | 2 weeks | 24 modules, 13/15 canonical | 2,500-3,500 |
| **C** | 7 (skip form + query-loop + gallery) | 1 week | 23 modules, 12/15 canonical | 1,500-2,000 |
| **D** | 0 (no build yet, plan only) | 0 | 16 modules, 7/15 canonical | 0 |
**Recommended: A.** The canonical 15 is the north star. Form and query-loop are the hardest but they unlock the dynamic-content tier (Tier 7). Without them, we're stuck at 12/15 and the FES dispatch set is still missing the "interactive" half of the App-Builder universe.
If 4 weeks is too long, B is acceptable. C is a stopgap. D means we're not building this arc.
**My pick if you don't have a preference**: A.
| Option | Widget handlers | Time | Coverage after | Lines |
|---|---|---|---|---|
| **A** | 35+ (all of EAEL + standard Elementor core) | 1 week | 60% of common Elementor widgets | ~1,500 |
| **B** | ~20 (EAEL only) | 3 days | 40% | ~700 |
| **C** | 0 (no expansion) | 0 | 19% (current) | 0 |
**Recommended: B.** The Oscar dist is mostly EAEL. The 7 currently-mapped EAEL widgets (heading/image/button/accordion/menu/testimonial/etc) are the common case. Expanding to ~20 EAEL widgets (the rest of the EAEL suite minus the rare ones) covers ~40% of real sites. The standard Elementor core expansion (pro widgets, dynamic tags) is a separate effort.
**My pick if you don't have a preference**: B.
| Option | New controls | Time | Lines | Tier 1 unlocked? |
|---|---|---|---|---|
| **A** | 5 (icon-picker, lat-lng, gallery, form-field-builder, query-builder) | 1.5 weeks | ~1,900 | Yes, all of Tier 1 |
| **B** | 3 (icon-picker, lat-lng, gallery) | 4 days | ~700 | Yes, Tier 1 #1-8. Form + query-loop still need custom controls later. |
| **C** | 0 | 0 | 0 | No. New modules must be edited via JSON. |
**Recommended: A.** The Tier 1 plan needs all 5. Without the form-field-builder, the form module is un-editable. Without the query-builder, the query-loop module is un-editable. Building them in D3-A means the modules land ready-to-use.
If time is constrained, B is fine for the first 4 weeks of Tier 1 (icon, divider, spacer, tabs, modal, map, pricing-table, gallery), and D3-A's form/query-builder controls come in the form/query-loop week.
**My pick if you don't have a preference**: A.
---
If you want a single set of picks:
Total work after these picks:
**Net**: 6 weeks of focused work to go from 16 modules / 7 canonical / 19% Elementor coverage → 26 modules / 15 canonical / 40% Elementor coverage. After that, Phase 2-5 in subsequent arcs.
---
The fastest way to answer is just a list:
```
Q1=D Q2=C Q3=A Q4=A Q5=A Q6=C Q7=A
D1=A D2=B D3=A
```
Or pick a subset:
```
D1=A D2=B
```
If you want to discuss any decision before committing, this is the moment.
---
| If you pick | I do |
|---|---|
| Q1=D | grep the 5 files, see what id 8 vs me got, escalate to A or B |
| Q2=C | Document both 8.2.0 (feed) and 8.3.0 (in-dev) in a new pact entry |
| Q3=A | Add `isConfigOnly: true` to menu's module-meta.json + a one-line note in recipe.md |
| Q4=A | Move theme-presets and tools to fv-cms-vendored/app-fragments/, update chrome-registry |
| Q5=A | Move fv-recipe-book-checklist, fv-source-link, fv-theme-toggle to fv-cms-vendored/app-fragments/ |
| Q6=C | Nothing now; revisit after Q7 |
| Q7=A | Nothing now; wait for id 8 to push, then verify and post a bulletin |
| D1=A | Create `feat/world-class-modules` branch (per a643), build M-icon first (canary), post progress bulletin at end of each week |
| D2=B | Expand detector with ~20 EAEL widget handlers, add tests for each |
| D3=A | Build 5 new inspector controls in fv-cms-vendored/app-fragments/editor-inspector/controls/ |
After all 10: post a fresh bulletin with the new world-class state, update HQ, lock R-117 follow-up reflex.
---
I'm holding. Heartbeat daemon is back up (PID 84, 10-min loop). The HQ artifacts (a774, a775, a776) and the new ones (FES audit, world-class plan, this card) are all on disk and ready. Nothing else will be touched until you respond.
— Mavis (helper-mavis, id 10, session 412100071272671)
2026-08-26 22:05 UTC