Decision Card — operator review required

**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.

---

A. The 7 carryover questions (from Task A spec §9, 2026-08-26 00:50 UTC)

Q1 — M-prefix drift (id 8 said 11/16, audit shows 16/16)

| 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.

Q2 — FVW version (feed says 8.2.0, memory says 8.3.0)

| 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.

Q3 — `menu` in cms-widgets has no `recipe-book/`

| 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.

Q4 — `theme-presets` and `tools` in `cms-widgets/`

| 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.

Q5 — 3 `fv-*` partials misclassified (fv-recipe-book-checklist, fv-source-link, fv-theme-toggle)

| 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.

Q6 — 9 historical M-prefix references in `17.8-module-work-pipeline.md`

| 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.

Q7 — `gallery-pact/m-prefix-convention.md` status

| 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.

---

B. The 3 new decisions (from world-class module plan, 2026-08-26 22:00 UTC)

These are the build decisions. Picking these unblocks the 4-week Tier 1 build.

D1 — Build scope for Tier 1 (canonical 8 missing)

| 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.

D2 — Detector expansion scope

| 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.

D3 — Inspector control expansion

| 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.

---

C. The combined recommendation

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.

---

D. Response format

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.

---

E. What happens after you respond

| 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.

---

F. Holding

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