{
 "generated": "2026-10-18",
 "brand": "brand-006-rj-laravel-admin",
 "rule": "Every proposal beyond today's admin, deduped across the run, tagged UI-only | needs-backend | needs-a-decision with a recommended default and source (learning PL-065). Needs-backend items become api-request issues in RJmtm/newadmin-api-kit (HANDOFF §5); none filed yet.",
 "counts": {
  "total": 82,
  "by_tag": {
   "UI-only": 11,
   "needs-a-decision": 22,
   "needs-backend": 49
  }
 },
 "decisions_made": [
  {
   "title": "Frontend stack decided",
   "detail": "Next.js (App Router) + React 19 + TypeScript + shadcn/Radix + Tailwind tokens, same as the DTC admin. Frank 2026-10-18: \"I have absolutely no problem with that stack whatsoever.\"",
   "source": "phase-0/STACK-AND-PACKAGES.md §1"
  },
  {
   "title": "Dedicated mobile rule",
   "detail": "Every page with a phone answer gets its own /m/… route and view file; only the view layer forks; pages without a phone view fall back to /m/not-on-phone. Frank 2026-10-18.",
   "source": "phase-0/STACK-AND-PACKAGES.md §2"
  },
  {
   "title": "Menu IA out of scope",
   "detail": "Menu regroup is a separate evidence-led exercise with backend (AdminMenu.php); design supports any depth ≤3 (T-d flyout, T-f breadcrumb dropdowns, accordion). Frank 2026-10-18.",
   "source": "phase-1/menu-techniques/MENU-TECHNIQUES.md"
  },
  {
   "title": "Power-ups: all 24 round-1 patterns adopted",
   "detail": "Frank in chat 2026-10-18. Their three needs-backend items are PR-001 (saved views), PR-003 (activity panel) and PR-004 (conflict banner, now backed).",
   "source": "phase-1/powerups/POWERUPS.md"
  },
  {
   "title": "DTC Midnight green shipped",
   "detail": "Recorded as shipped by the supervisor brief for this run (2026-10-18); no B6 design change follows from it.",
   "source": "supervisor brief, phase-3 waves"
  },
  {
   "title": "Gantt pick deferred to the end",
   "detail": "A07 folds into A05 as its timeline variant; the gantt direction (PR-056) is picked at the end of the run. /admin/gantt points at phase-3/flagships/gantt/.",
   "source": "phase-3/flagships/gantt/GANTT-R1.md"
  },
  {
   "title": "Archetypes approved for non-flagship pages; five flagships",
   "detail": "Orders index · Order detail · Support tickets · Pricing · Designs get bespoke rounds. A02·a and A11·a approved; A05 renamed 'Dashboard / report'.",
   "source": "phase-2/FEEDBACK-B-r1.md"
  },
  {
   "title": "Every designs-module page is flagship",
   "detail": "Frank 2026-10-18: \"everything with the designs we have to get perfect\". All 25 designs-module pages are flagship:true and point at phase-3/flagships/designs/. Round 1 drew the 4 /admin/designs* pages (index, create, edit, Bulk Hub); the other 21 (combinations, component default rules, design blockers, design components, PT colours, PT components) are queued for designs round 2 and must not be built off the generic archetype hero.",
   "source": "phase-3/flagships/designs/DESIGNS-R1.md"
  },
  {
   "title": "Layout picks",
   "detail": "A01·a full-width table · A02·a tabs · A03·a section nav left · A06·a table of runs · A11·a 3-pane.",
   "source": "phase-2/archetypes/ARCHETYPES.md"
  }
 ],
 "proposals": [
  {
   "id": "PR-001",
   "title": "Per-staff prefs store (saved views, column presets, density, recent/pinned across devices, My home, import mapping memory)",
   "tag": "needs-backend",
   "recommended_default": "Ship saved views on URL state + browser storage now (UI-only); add GET/PUT /admin/me/prefs/{key} (H01, S) for per-person sync.",
   "sources": [
    "phase-1/powerups/POWERUPS.md #05/#04/#15",
    "phase-1/powerups/advanced/ADVANCED.md #08/#18",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H01",
    "phase-0/COMPONENT-INVENTORY.md P2/saved-views",
    "phase-3/flagships/orders/ORDERS-R1.md I2/I3"
   ],
   "pages": [
    "/admin/orders",
    "/admin/tickets",
    "shell"
   ],
   "area": "shell",
   "helper": "H01",
   "detail": "PUT /admin/me/preferences stores only {locale, timezone}. Orders status-tab customisation (ORDERS-R1 I2) rides on the same store."
  },
  {
   "id": "PR-002",
   "title": "Shared team saved views (views shared with a team, not just personal)",
   "tag": "needs-a-decision",
   "recommended_default": "3b: personal views only in v1 (H01); shared team views later on a new team-views store.",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q3",
    "phase-0/COMPONENT-INVENTORY.md P2"
   ],
   "pages": [
    "/admin/orders"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-003",
   "title": "Record-wide history / activity / audit store (activity panel, time-travel, design + pricing undo, bulk-run before-values)",
   "tag": "needs-backend",
   "recommended_default": "Design nothing beyond existing scoped audits (payload audits, email-template versions, API-key audit, request logs) until GET /admin/records/{type}/{id}/history (H02, L) exists; start it day one.",
   "sources": [
    "phase-1/powerups/POWERUPS.md #13",
    "phase-1/powerups/advanced/ADVANCED.md #11",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H02",
    "phase-0/COMPONENT-INVENTORY.md P1 / audit-row / M05",
    "phase-2/truth/TRUTH-DESIGNS.md G7",
    "phase-2/truth/TRUTH-PRICING.md P-G2"
   ],
   "pages": [
    "shell",
    "/admin/orders/{order}",
    "/admin/designs",
    "/admin/designs/create",
    "/admin/designs/{design}/edit",
    "/admin/designs/bulk-hub",
    "/admin/pricing",
    "/admin/pricing/create"
   ],
   "area": "shell",
   "helper": "H02",
   "detail": "GET /admin/audit-logs is 404. Pricing change log (before/after, actor) and design undo both need it."
  },
  {
   "id": "PR-004",
   "title": "Version check on measurement writes ('someone else changed this')",
   "tag": "UI-only",
   "recommended_default": "Build against the spec: admin.orders.measurement-check returns version + ETag, admin.orders.measurements.update takes If-Match / expected_version -> 409 version_conflict. Verify the 409 on staging before build (H03).",
   "sources": [
    "phase-1/powerups/POWERUPS.md #17",
    "PROPOSALS.md (pre-consolidation) decision-B correction",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H03",
    "phase-0/COMPONENT-INVENTORY.md VC"
   ],
   "pages": [
    "/admin/orders/{order}",
    "/admin/orders/{order}/edit",
    "/admin/orders/measurement/edit/{order}"
   ],
   "area": "orders",
   "helper": "H03",
   "detail": null
  },
  {
   "id": "PR-005",
   "title": "One search across orders, accounts, fabric codes, tickets, designs (⌘K beyond orders)",
   "tag": "needs-backend",
   "recommended_default": "⌘K ships on admin.me.menu + admin.dashboard.quick-search (orders) now; add GET /admin/search (H04, M).",
   "sources": [
    "phase-1/powerups/POWERUPS.md #01",
    "phase-1/powerups/advanced/ADVANCED.md #05",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H04",
    "phase-2/archetypes/ARCHETYPES.md A05 ghost"
   ],
   "pages": [
    "shell",
    "/admin/dashboard"
   ],
   "area": "shell",
   "helper": "H04",
   "detail": null
  },
  {
   "id": "PR-006",
   "title": "Say it in ⌘K (sentence -> filter or action)",
   "tag": "needs-backend",
   "recommended_default": "Later wave; POST /admin/search/parse (H05, M) after H04 + H09; never writes.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #06",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H05"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": "H05",
   "detail": null
  },
  {
   "id": "PR-007",
   "title": "Counts for the filtered set (totals strip)",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/orders/counts?<list filters> (H06, S); until then show tab counts only where the status catalogue gives them.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #21",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H06"
   ],
   "pages": [
    "/admin/orders"
   ],
   "area": "orders",
   "helper": "H06",
   "detail": null
  },
  {
   "id": "PR-008",
   "title": "Who else is here (presence + soft edit lock)",
   "tag": "needs-backend",
   "recommended_default": "POST/DELETE /admin/presence (H07, S, Redis TTL 30 s, poll 10 s); hard guard stays the If-Match check (PR-004).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #01",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H07"
   ],
   "pages": [
    "/admin/orders/{order}",
    "/admin/designs/{design}/edit"
   ],
   "area": "shell",
   "helper": "H07",
   "detail": null
  },
  {
   "id": "PR-009",
   "title": "Names-only admin picker (for @mentions and ticket assignee)",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/pickers/admins?q= (H08, S).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #02",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H08"
   ],
   "pages": [
    "shell",
    "/admin/tickets",
    "/admin/tickets/{ticket}"
   ],
   "area": "shell",
   "helper": "H08",
   "detail": null
  },
  {
   "id": "PR-010",
   "title": "Comments and @mentions on any record",
   "tag": "needs-backend",
   "recommended_default": "GET/POST /admin/records/{type}/{id}/comments (H10, M); order notes and ticket comments stay as they are.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #02",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H10"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": "H10",
   "detail": null
  },
  {
   "id": "PR-011",
   "title": "Watch a record -> notification inbox",
   "tag": "needs-backend",
   "recommended_default": "POST/DELETE/GET /admin/watches (H11, M); the bell already reads admin.notifications.*.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #03",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H11"
   ],
   "pages": [
    "shell",
    "/admin/orders/{order}",
    "/admin/tickets",
    "/admin/tickets/{ticket}"
   ],
   "area": "shell",
   "helper": "H11",
   "detail": null
  },
  {
   "id": "PR-012",
   "title": "While you were away (shift hand-over digest)",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/me/digest?since= (H12, M) after H11 + H02.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #04",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H12"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": "H12",
   "detail": null
  },
  {
   "id": "PR-013",
   "title": "Stuck-in-phase timers (phase ages + targets)",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/orders/phase-ages?ids= + GET/PUT /admin/settings/phase-targets (H09, M).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #09",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H09"
   ],
   "pages": [
    "/admin/orders",
    "/admin/gantt"
   ],
   "area": "orders",
   "helper": "H09",
   "detail": null
  },
  {
   "id": "PR-014",
   "title": "Why is this order here? (one composed explain read)",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/orders/{order}/explain (H13, M).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #10",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H13"
   ],
   "pages": [
    "/admin/orders/{order}"
   ],
   "area": "orders",
   "helper": "H13",
   "detail": null
  },
  {
   "id": "PR-015",
   "title": "Restore one value from history",
   "tag": "needs-backend",
   "recommended_default": "POST /admin/records/{type}/{id}/history/{change}/restore (H14, M) after H02.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #11",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H14"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": "H14",
   "detail": null
  },
  {
   "id": "PR-016",
   "title": "Do it later (scheduled actions; allow-listed, never money)",
   "tag": "needs-backend",
   "recommended_default": "POST/GET/DELETE /admin/scheduled-actions (H15, M).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #12",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H15"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": "H15",
   "detail": null
  },
  {
   "id": "PR-017",
   "title": "Dry-run impact preview on the four bulk writes",
   "tag": "needs-backend",
   "recommended_default": "dry_run=1 on accounts bulk-features / bulk-permissions, accessory-codes/bulk, api-keys/bulk-revoke (H16, S).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #13",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H16"
   ],
   "pages": [
    "/admin/users",
    "/admin/users/bulk-permissions",
    "/admin/accessory-codes",
    "/admin/access"
   ],
   "area": "users",
   "helper": "H16",
   "detail": null
  },
  {
   "id": "PR-018",
   "title": "Undo a whole bulk run (10-minute window)",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/bulk-runs/{id} + POST .../revert (H17, M).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #14",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H17"
   ],
   "pages": [
    "/admin/designs/bulk-hub",
    "/admin/users"
   ],
   "area": "shell",
   "helper": "H17",
   "detail": null
  },
  {
   "id": "PR-019",
   "title": "Second approver for money (maker-checker)",
   "tag": "needs-a-decision",
   "recommended_default": "Not in v1; needs a policy on per-currency thresholds first, then H18 (L). Money writes keep the typed confirmation ladder.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #15",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H18"
   ],
   "pages": [
    "/admin/tickets/{ticket}",
    "/admin/wallet/{user}"
   ],
   "area": "billing",
   "helper": "H18",
   "detail": null
  },
  {
   "id": "PR-020",
   "title": "See the admin as someone else's role",
   "tag": "needs-backend",
   "recommended_default": "as_admin={id} on GET /admin/me and /admin/me/menu, super admin only, writes refused (H20, S).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #16",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H20"
   ],
   "pages": [
    "shell"
   ],
   "area": "access",
   "helper": "H20",
   "detail": null
  },
  {
   "id": "PR-021",
   "title": "Paste from Excel into an import (JSON rows on import preview)",
   "tag": "needs-backend",
   "recommended_default": "Accept {rows, columns} on the existing import preview endpoints (H21, S).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #17",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H21"
   ],
   "pages": [
    "/admin/fabric-codes/import",
    "/admin/pt-colors/import",
    "/admin/accessory-codes"
   ],
   "area": "materials",
   "helper": "H21",
   "detail": null
  },
  {
   "id": "PR-022",
   "title": "Trends inside the table (metric series sparklines)",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/metrics/series (H22, M), read-only, nightly cache.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #19",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H22"
   ],
   "pages": [
    "/admin/users",
    "/admin/factories"
   ],
   "area": "users",
   "helper": "H22",
   "detail": null
  },
  {
   "id": "PR-023",
   "title": "Scan a QR to open the record",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/qr/resolve?code= (H23, S).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #22",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H23"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": "H23",
   "detail": null
  },
  {
   "id": "PR-024",
   "title": "Keeps working when Wi-Fi drops (Idempotency-Key honoured on floor writes)",
   "tag": "needs-backend",
   "recommended_default": "24 h Idempotency-Key middleware on vision-check resolve, QC checks, order checkpoints (H24, M).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #23",
    "phase-1/powerups/POWERUPS.md #20",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H24"
   ],
   "pages": [
    "/admin/vision-checks/results"
   ],
   "area": "vision-checks",
   "helper": "H24",
   "detail": null
  },
  {
   "id": "PR-025",
   "title": "Ping me when it's done (Web Push)",
   "tag": "needs-backend",
   "recommended_default": "Upgrade only; polling + in-tab notification off admin.notifications.unread-count works today (H25, M).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #25",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H25"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": "H25",
   "detail": null
  },
  {
   "id": "PR-026",
   "title": "Ticket summary + suggested next step (AI summary mode, explicit button)",
   "tag": "needs-backend",
   "recommended_default": "mode:'summary' on admin.tickets.ai.suggest (H26, S); explicit button only, never automatic (AI costs money).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #26",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H26",
    "phase-2/FEEDBACK-B-r1.md A11"
   ],
   "pages": [
    "/admin/tickets/{ticket}"
   ],
   "area": "tickets",
   "helper": "H26",
   "detail": null
  },
  {
   "id": "PR-027",
   "title": "Anomaly flags on orders",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/orders/flags?ids= (H19, M), read-only rules.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #27",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H19"
   ],
   "pages": [
    "/admin/orders"
   ],
   "area": "orders",
   "helper": "H19",
   "detail": null
  },
  {
   "id": "PR-028",
   "title": "Health strip for super admins",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/health/summary (H27, S), top administrator only (T003 #45).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #28",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H27"
   ],
   "pages": [
    "/admin/failed-jobs",
    "/admin/job/batches",
    "/admin/schedule-monitor"
   ],
   "area": "ops",
   "helper": "H27",
   "detail": null
  },
  {
   "id": "PR-029",
   "title": "Out of stock? closest cloths in stock",
   "tag": "needs-backend",
   "recommended_default": "GET /admin/fabric-intelligence/similar (H28, M).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #29",
    "phase-1/powerups/advanced/BACKEND-HELPERS.md H28"
   ],
   "pages": [
    "/admin/fabric-codes"
   ],
   "area": "fabrics",
   "helper": "H28",
   "detail": null
  },
  {
   "id": "PR-030",
   "title": "Do that again (⌘.)",
   "tag": "UI-only",
   "recommended_default": "Adopt; last action kept in this tab only.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #07"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-031",
   "title": "Compare two records side by side",
   "tag": "UI-only",
   "recommended_default": "Adopt as a later UI pattern; two normal GETs diffed in the browser (M05).",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md #20"
   ],
   "pages": [
    "/admin/designs/{design}/edit",
    "/admin/pricing"
   ],
   "area": "shell",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-032",
   "title": "Round-2 advanced power-ups adoption (29 patterns)",
   "tag": "needs-a-decision",
   "recommended_default": "Adopt the 10 ★ (presence, one search, do-that-again, phase timers, explain, dry-run, paste-from-Excel, QR, ticket summary, health) in backend-helper build order; the other 19 later.",
   "sources": [
    "phase-1/powerups/advanced/ADVANCED.md Recommendation"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-033",
   "title": "Cancel a queued print job (G1)",
   "tag": "needs-backend",
   "recommended_default": "Hide cancel until POST /admin/orders/print-jobs/{job}/cancel exists (dispatch_status=queued only).",
   "sources": [
    "PROPOSALS.md (pre-consolidation) G1",
    "phase-2/archetypes/ARCHETYPES.md A06"
   ],
   "pages": [
    "/admin/orders/print-jobs"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-034",
   "title": "Resolve several vision results at once (G2)",
   "tag": "needs-backend",
   "recommended_default": "Bulk bar stays hidden on A08 until a bulk resolve (≤100 ids, PASS/FAIL) exists.",
   "sources": [
    "PROPOSALS.md (pre-consolidation) G2",
    "phase-2/archetypes/ARCHETYPES.md A08",
    "phase-1/powerups/advanced/ADVANCED.md #24"
   ],
   "pages": [
    "/admin/vision-checks/results"
   ],
   "area": "vision-checks",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-035",
   "title": "Ticket assignee + 'Mine' view + routed notifications (G3)",
   "tag": "needs-backend",
   "recommended_default": "Rename today's 'Owner' to Shop (retailer account); assignee needs assignee_id, a filter and notification routing.",
   "sources": [
    "PROPOSALS.md (pre-consolidation) G3",
    "phase-2/truth/TRUTH-TICKETS.md §7 / §10.1",
    "phase-1/menu/MENU-OPTIONS.md badge"
   ],
   "pages": [
    "/admin/tickets",
    "/admin/tickets/{ticket}"
   ],
   "area": "tickets",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-036",
   "title": "Internal (staff-only) ticket note (G4)",
   "tag": "needs-backend",
   "recommended_default": "is_internal on tickets_comments, excluded from email and the retailer view.",
   "sources": [
    "PROPOSALS.md (pre-consolidation) G4",
    "phase-2/truth/TRUTH-TICKETS.md §10.2"
   ],
   "pages": [
    "/admin/tickets/{ticket}"
   ],
   "area": "tickets",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-037",
   "title": "Persist the last AI suggestion per ticket (no re-billing on reopen)",
   "tag": "needs-backend",
   "recommended_default": "Cache the last suggestion with a timestamp; the 'Get AI suggestion' button stays explicit.",
   "sources": [
    "phase-2/truth/TRUTH-TICKETS.md §10.3",
    "phase-2/FEEDBACK-B-r1.md A11"
   ],
   "pages": [
    "/admin/tickets/{ticket}"
   ],
   "area": "tickets",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-038",
   "title": "Link / change the order on an existing ticket",
   "tag": "needs-a-decision",
   "recommended_default": "First check whether admin.tickets.update accepts order_id; if not, add it. Tickets may have no order (design the no-order layout regardless).",
   "sources": [
    "phase-2/truth/TRUTH-TICKETS.md §10.4"
   ],
   "pages": [
    "/admin/tickets/{ticket}"
   ],
   "area": "tickets",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-039",
   "title": "CN labels for ticket statuses, severities and categories",
   "tag": "needs-backend",
   "recommended_default": "DB data backfill (EN only today); show EN until present.",
   "sources": [
    "phase-2/truth/TRUTH-TICKETS.md §10.5"
   ],
   "pages": [
    "/admin/tickets",
    "/admin/tickets/{ticket}",
    "/admin/tickets/status",
    "/admin/tickets/severity",
    "/admin/tickets/categories"
   ],
   "area": "tickets",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-040",
   "title": "Attachment count on ticket list/show payloads",
   "tag": "needs-backend",
   "recommended_default": "Add attachments_count; no paperclip in the list until then.",
   "sources": [
    "phase-2/truth/TRUTH-TICKETS.md §10.6"
   ],
   "pages": [
    "/admin/tickets",
    "/admin/tickets/{ticket}"
   ],
   "area": "tickets",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-041",
   "title": "Show the ticket creator",
   "tag": "UI-only",
   "recommended_default": "Adopt; the API already returns creator.",
   "sources": [
    "phase-2/truth/TRUTH-TICKETS.md §10.7"
   ],
   "pages": [
    "/admin/tickets/{ticket}"
   ],
   "area": "tickets",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-042",
   "title": "Order filter on the tickets index",
   "tag": "needs-backend",
   "recommended_default": "Only has_order + search exist; add order_id filter (also feeds the order Issues tab).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md could-not-verify / D13"
   ],
   "pages": [
    "/admin/tickets",
    "/admin/orders/{order}"
   ],
   "area": "tickets",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-043",
   "title": "Order status-history read (Activity tab)",
   "tag": "needs-backend",
   "recommended_default": "Add an order_status history read; until then Activity shows payload audits, fitting-validation logs and print/agent jobs only.",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md D14"
   ],
   "pages": [
    "/admin/orders/{order}"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-044",
   "title": "Orders Q1: what a click on the print button does",
   "tag": "needs-a-decision",
   "recommended_default": "1a: opens the Cloud print dialog (drawn).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q1"
   ],
   "pages": [
    "/admin/orders/{order}"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-045",
   "title": "Orders Q2: Resolve hold on the order page",
   "tag": "needs-a-decision",
   "recommended_default": "2a: yes, dark next-step when On Hold (API remove-hold exists).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q2"
   ],
   "pages": [
    "/admin/orders/{order}"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-046",
   "title": "Orders Q4: customer details on the order",
   "tag": "needs-a-decision",
   "recommended_default": "4a: no Customer tab; name + city in the front matter (4b needs a PII-scoped endpoint).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q4"
   ],
   "pages": [
    "/admin/orders/{order}"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-047",
   "title": "Orders Q5: tab set on the order page",
   "tag": "needs-a-decision",
   "recommended_default": "5a: 10 tabs, one sub-resource each (drawn).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q5",
    "phase-2/truth/TRUTH-ORDERS.md §8 #16"
   ],
   "pages": [
    "/admin/orders/{order}"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-048",
   "title": "Orders Q6: where measurement-check values live",
   "tag": "needs-a-decision",
   "recommended_default": "6a: stay in the measurement-check popup (drawn).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q6",
    "phase-2/truth/TRUTH-ORDERS.md §8 #17"
   ],
   "pages": [
    "/admin/orders/{order}"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-049",
   "title": "Orders Q7: Complete on Delivered across pages",
   "tag": "needs-a-decision",
   "recommended_default": "7a: select all matching, sent in batches of 100 with Stop, on the existing POST orders/completed (T003 #13).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q7 / I11",
    "phase-2/truth/TRUTH-ORDERS.md §3.5"
   ],
   "pages": [
    "/admin/orders"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-050",
   "title": "Orders Q8: put on hold without a ticket (API POST hold)",
   "tag": "needs-a-decision",
   "recommended_default": "8b: never; every hold keeps its Raise Issue ticket (Frank: no Hold button).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q8",
    "phase-2/FEEDBACK-B-r1.md global truth rule"
   ],
   "pages": [
    "/admin/orders/{order}"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-051",
   "title": "Orders Q9: default view when Orders opens",
   "tag": "needs-a-decision",
   "recommended_default": "9a: Active (drawn).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q9"
   ],
   "pages": [
    "/admin/orders"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-052",
   "title": "Orders Q10: sort",
   "tag": "needs-a-decision",
   "recommended_default": "10a: keep order # descending (drawn).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q10"
   ],
   "pages": [
    "/admin/orders"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-053",
   "title": "Orders Q11: Void on the order page",
   "tag": "needs-a-decision",
   "recommended_default": "11b: keep Void on the index row only (drawn), draft / awaiting payment / RFF.",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q11",
    "phase-2/truth/TRUTH-ORDERS.md §8 #9"
   ],
   "pages": [
    "/admin/orders/{order}",
    "/admin/orders"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-054",
   "title": "Orders Q12: Product type column content",
   "tag": "needs-a-decision",
   "recommended_default": "12a: main product per group, e.g. '2-Piece + Shirt' (drawn).",
   "sources": [
    "phase-3/flagships/orders/ORDERS-R1.md Q12",
    "phase-2/FEEDBACK-B-r1.md orders index"
   ],
   "pages": [
    "/admin/orders"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-055",
   "title": "Rename 'Fabric Purchase Jobs' to 'Agent jobs'",
   "tag": "needs-a-decision",
   "recommended_default": "Rename to Agent jobs (covers Order, Notification, Factory Message, Scheduled Message, Event Message).",
   "sources": [
    "phase-2/FEEDBACK-B-r1.md A06",
    "phase-2/archetypes/ARCHETYPES.md A06",
    "phase-2/truth/TRUTH-ORDERS.md §7.2"
   ],
   "pages": [
    "/admin/orders/fabric-jobs"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-056",
   "title": "Gantt direction pick (G1 Ledger / G2 Floor / G3 Countdown)",
   "tag": "needs-a-decision",
   "recommended_default": "G1 Ledger, with G2 as its Factories toggle and G3 as the dashboard widget. Pick deferred to the end of the run (Frank).",
   "sources": [
    "phase-3/flagships/gantt/GANTT-R1.md §3"
   ],
   "pages": [
    "/admin/gantt",
    "/admin/dashboard"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-057",
   "title": "gantt-grid rows: factory_due_at + current_step",
   "tag": "needs-backend",
   "recommended_default": "Add both to gantt-grid rows; otherwise one phase-summary call per row.",
   "sources": [
    "phase-3/flagships/gantt/GANTT-R1.md §4.1"
   ],
   "pages": [
    "/admin/gantt"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-058",
   "title": "gantt-grid rolling window (from/to across months)",
   "tag": "needs-backend",
   "recommended_default": "Add from/to; fallback stitches two month calls client-side.",
   "sources": [
    "phase-3/flagships/gantt/GANTT-R1.md §4.2"
   ],
   "pages": [
    "/admin/gantt"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-059",
   "title": "Express flag on gantt rows",
   "tag": "needs-backend",
   "recommended_default": "Add express to gantt-grid rows (it exists on the index).",
   "sources": [
    "phase-3/flagships/gantt/GANTT-R1.md §4.3"
   ],
   "pages": [
    "/admin/gantt"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-060",
   "title": "Factory capacity per day",
   "tag": "needs-backend",
   "recommended_default": "Until it exists, load heat is relative to each factory's own peak.",
   "sources": [
    "phase-3/flagships/gantt/GANTT-R1.md §4.4"
   ],
   "pages": [
    "/admin/gantt",
    "/admin/factories"
   ],
   "area": "factory",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-061",
   "title": "/orders/due horizon beyond 3 days",
   "tag": "needs-backend",
   "recommended_default": "Raise horizon_days cap to 14 (or derive from factory due) for +7/+14 views.",
   "sources": [
    "phase-3/flagships/gantt/GANTT-R1.md §4.5"
   ],
   "pages": [
    "/admin/orders/due",
    "/admin/dashboard"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-062",
   "title": "Design create silently drops the surcharge (extra_meter)",
   "tag": "needs-backend",
   "recommended_default": "Persist extra_meter (design + popup rows) on create (web + API store), or remove the inputs from create.",
   "sources": [
    "phase-2/truth/TRUTH-DESIGNS.md §8 G1"
   ],
   "pages": [
    "/admin/designs/create"
   ],
   "area": "designs",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-063",
   "title": "Camera frame and Supplier on the design create form",
   "tag": "needs-backend",
   "recommended_default": "Add both to create (StoreDesignRequest already accepts camera_frame; supplier needs the store to accept it).",
   "sources": [
    "phase-2/truth/TRUTH-DESIGNS.md §8 G2"
   ],
   "pages": [
    "/admin/designs/create"
   ],
   "area": "designs",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-064",
   "title": "'Retailers carrying this design / priced?' panel on the design page",
   "tag": "needs-backend",
   "recommended_default": "Read endpoint over user_main_product_design by design_id; read-only panel.",
   "sources": [
    "phase-2/truth/TRUTH-DESIGNS.md §8 G3"
   ],
   "pages": [
    "/admin/designs/{design}/edit"
   ],
   "area": "designs",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-065",
   "title": "Blockers active toggle on the design edit form",
   "tag": "UI-only",
   "recommended_default": "Use the API field blockers.*.is_active (UpdateDesignRequest accepts it); confirm web parity.",
   "sources": [
    "phase-2/truth/TRUTH-DESIGNS.md §8 G4"
   ],
   "pages": [
    "/admin/designs/{design}/edit"
   ],
   "area": "designs",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-066",
   "title": "Align design 'info' validation (max:1000 on the edit path)",
   "tag": "needs-backend",
   "recommended_default": "Align the web edit path with store/API.",
   "sources": [
    "phase-2/truth/TRUTH-DESIGNS.md §8 G5"
   ],
   "pages": [
    "/admin/designs/{design}/edit"
   ],
   "area": "designs",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-067",
   "title": "Per-design popup bulk routes still registered though UI retired",
   "tag": "needs-a-decision",
   "recommended_default": "Retire the routes; the Bulk Hub covers bulk work. Do not show them half-wired.",
   "sources": [
    "phase-2/truth/TRUTH-DESIGNS.md §8 G6"
   ],
   "pages": [
    "/admin/designs/{design}/edit",
    "/admin/designs/bulk-hub"
   ],
   "area": "designs",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-068",
   "title": "Ungated web pricing writes",
   "tag": "needs-backend",
   "recommended_default": "New UI calls the API only (update pricing + pricing:write); retire the ungated web writes.",
   "sources": [
    "phase-2/truth/TRUTH-PRICING.md P-G1"
   ],
   "pages": [
    "/admin/pricing",
    "/admin/pricing/create"
   ],
   "area": "pricing",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-069",
   "title": "CSV import/export for design pricing",
   "tag": "needs-a-decision",
   "recommended_default": "Not in v1; add pricing/designs/export|import per retailer × main product only if Frank wants it.",
   "sources": [
    "phase-2/truth/TRUTH-PRICING.md P-G3"
   ],
   "pages": [
    "/admin/pricing",
    "/admin/pricing/create"
   ],
   "area": "pricing",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-070",
   "title": "Retailer pricing cell write by ids, not localized display name",
   "tag": "needs-backend",
   "recommended_default": "Accept fabric_code_id / combination_id on the cell write so the grid never depends on locale.",
   "sources": [
    "phase-2/truth/TRUTH-PRICING.md P-G4"
   ],
   "pages": [
    "/admin/pricing/create"
   ],
   "area": "pricing",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-071",
   "title": "No master-pricing screen anywhere; retire /admin/pricing/master",
   "tag": "UI-only",
   "recommended_default": "Do not design; propose retiring the route (403, L1033/L1034).",
   "sources": [
    "phase-2/truth/TRUTH-PRICING.md P-G5",
    "PROPOSALS.md (pre-consolidation) P0"
   ],
   "pages": [
    "/admin/pricing/master"
   ],
   "area": "pricing",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-072",
   "title": "Menu badge counts (optional integer badge per link)",
   "tag": "needs-backend",
   "recommended_default": "Optional permission-scoped badge (tickets open, vision results awaiting review, failed print jobs), cached or via /me/menu/badges; nothing drawn when absent.",
   "sources": [
    "phase-1/menu/MENU-OPTIONS.md needs-backend 2",
    "phase-1/powerups/POWERUPS.md note"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-073",
   "title": "Backfill cn labels for the menu (90 missing) ",
   "tag": "needs-backend",
   "recommended_default": "Add cn keys in resources/lang/cn.json; EN fallback until then.",
   "sources": [
    "phase-1/menu/MENU-OPTIONS.md needs-backend 1"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-074",
   "title": "Menu regroup by job (M2), job names EN/中文, leaf relabels, HQ corner = Home",
   "tag": "needs-a-decision",
   "recommended_default": "Parked: menu IA is out of design scope (Frank 2026-10-18); separate evidence-led exercise with backend (AdminMenu.php). The shell renders any server tree of depth ≤3.",
   "sources": [
    "phase-1/menu/MENU-OPTIONS.md recommendation / proposals raised",
    "PROPOSALS.md (pre-consolidation) P0"
   ],
   "pages": [
    "shell"
   ],
   "area": "shell",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-075",
   "title": "Where the shared kit package lives",
   "tag": "needs-a-decision",
   "recommended_default": "B: its own repo RJmtm/admin-kit (neither admin owns it).",
   "sources": [
    "phase-0/STACK-AND-PACKAGES.md §5.2",
    "PROPOSALS.md (pre-consolidation) stack"
   ],
   "pages": [
    "shell"
   ],
   "area": "stack",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-076",
   "title": "One shared internal kit package @rj/admin-kit for DTC + Laravel admins",
   "tag": "UI-only",
   "recommended_default": "Adopt: tokens (theme layer per app), shadcn/Radix primitives, F1 composites; no home-built chart/grid/table libraries.",
   "sources": [
    "PROPOSALS.md (pre-consolidation) stack",
    "phase-0/STACK-AND-PACKAGES.md §5"
   ],
   "pages": [
    "shell"
   ],
   "area": "stack",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-077",
   "title": "Package picks (grid react-datasheet-grid after spike; Gantt on CSS grid + @tanstack/react-virtual; no paid licences)",
   "tag": "UI-only",
   "recommended_default": "Frontend team confirms; full map in STACK-AND-PACKAGES §3–§4.",
   "sources": [
    "phase-0/STACK-AND-PACKAGES.md §3–§4",
    "PROPOSALS.md (pre-consolidation) stack"
   ],
   "pages": [
    "shell"
   ],
   "area": "stack",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-078",
   "title": "Dev port: mock allows localhost:5173, Next defaults to :3000",
   "tag": "UI-only",
   "recommended_default": "Run next dev -p 5173 or add :3000 to the mock's allowed origins.",
   "sources": [
    "PROPOSALS.md (pre-consolidation) stack"
   ],
   "pages": [
    "shell"
   ],
   "area": "stack",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-079",
   "title": "Port or drop /admin/posts and /admin/watermark-text (T001 Q10 still open)",
   "tag": "needs-a-decision",
   "recommended_default": "Do not design either: /admin/posts is 403 for everyone (use news/trainings); /admin/watermark-text is a developer test page. Propose retiring both routes.",
   "sources": [
    "PROPOSALS.md (pre-consolidation) P0",
    "projects/laravel-admin/handoffs/2026-10-12-T001-workpackages.json meta.excluded"
   ],
   "pages": [
    "/admin/posts",
    "/admin/watermark-text"
   ],
   "area": "content",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-080",
   "title": "Materials onboarding draft stays browser-only (no server draft endpoints)",
   "tag": "UI-only",
   "recommended_default": "Keep wizard draft client-side (T001 Q24); unsaved-guard must warn on tab close.",
   "sources": [
    "phase-0/COMPONENT-INVENTORY.md unsaved-guard",
    "T001 Q24"
   ],
   "pages": [
    "/admin/materials/onboard"
   ],
   "area": "materials",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-081",
   "title": "Job batch live updates by polling, not websockets",
   "tag": "UI-only",
   "recommended_default": "Poll admin.dashboard.job-batches every few seconds (T001 Q2); no broadcasting auth endpoint.",
   "sources": [
    "T001 Q2",
    "phase-0/COMPONENT-INVENTORY.md M01"
   ],
   "pages": [
    "/admin/job/batches",
    "shell"
   ],
   "area": "ops",
   "helper": null,
   "detail": null
  },
  {
   "id": "PR-082",
   "title": "Spec permission metadata drift on orders/tickets lists",
   "tag": "needs-backend",
   "recommended_default": "x-permission / x-token-scope on GET /admin/orders and /admin/tickets list extra requirements the live API does not enforce; fix the spec so permission-shaped UI is not over-restrictive.",
   "sources": [
    "projects/laravel-admin/handoffs/2026-10-16-T012-RETURN.md §6"
   ],
   "pages": [
    "/admin/orders",
    "/admin/tickets"
   ],
   "area": "orders",
   "helper": null,
   "detail": null
  }
 ]
}
