{
 "page": "mobile-home",
 "audited": "2026-11-05",
 "stamp": "20261105as1",
 "method": "Served the worktree and drove it in Chromium against the stubbed-Supabase harness (qc/d3-accept-social.spec.cjs asserts every automatable pass). 'na' = needs a table, RPC or data FedM8 does not have; the UI is left out (R9) and the entry names what it would need.",
 "criteria": [
  {
   "i": 1,
   "result": "pass",
   "evidence": "#/start at 390 shows H1 'Afternoon, Sam' (word follows the clock) with no breadcrumb; the text is not prefixed 'Good'."
  },
  {
   "i": 2,
   "result": "fail",
   "evidence": "No '<N> open notices' line on Home.",
   "needs": "an open-notices count for the home header (count of opportunities); then hide it when unavailable"
  },
  {
   "i": 3,
   "result": "pass",
   "evidence": "Your day is a 2-column grid of 4 links in order Due this week, New matches, Team invites, Replies to you (spec says 'Replies'), 144 to 156px tall."
  },
  {
   "i": 4,
   "result": "fail",
   "evidence": "Zero counts render as a large '0' on Due this week, Team invites and Replies to you.",
   "needs": "Home lane: hide the number at zero (R9/R6)"
  },
  {
   "i": 5,
   "result": "fail",
   "evidence": "No 'Set up profile' badge state on New matches.",
   "needs": "Home lane"
  },
  {
   "i": 6,
   "result": "fail",
   "evidence": "Due this week links to #/pipeline, not Contracts filtered to due within 7 days.",
   "needs": "Home lane: route to #/opportunities with a due filter"
  },
  {
   "i": 7,
   "result": "pass",
   "evidence": "No Your day card has the navy background; they are white."
  },
  {
   "i": 8,
   "result": "pass",
   "evidence": "No 'Sample members' text on the page."
  },
  {
   "i": 9,
   "result": "fail",
   "evidence": "There is no Due tomorrow card; Your deadlines lists tracked notices.",
   "needs": "Home lane"
  },
  {
   "i": 10,
   "result": "fail",
   "evidence": "No Due tomorrow card to replace, so no EmptyState linking to Contracts; Your deadlines shows 'Nothing coming up' and links to My pipeline.",
   "needs": "Home lane"
  },
  {
   "i": 11,
   "result": "fail",
   "evidence": "The one amber button is 'Find work', not 'Open'; no bookmark outline button.",
   "needs": "Home lane"
  },
  {
   "i": 12,
   "result": "fail",
   "evidence": "No Due tomorrow card, so no Open.",
   "needs": "Home lane"
  },
  {
   "i": 13,
   "result": "fail",
   "evidence": "No bookmark on Home.",
   "needs": "Home lane: track toggle with aria-pressed and the 'Tracking' toast"
  },
  {
   "i": 14,
   "result": "na",
   "evidence": "A per-notice teaming count and online count do not exist on Home's data.",
   "needs": "per-notice team and presence counts RPC"
  },
  {
   "i": 15,
   "result": "fail",
   "evidence": "From your network lists 3 alert events at 63 to 84px with 13px times, but no member name or bold name, and they are alerts, not people activity.",
   "needs": "Home lane or an activity feed RPC with actor names"
  },
  {
   "i": 16,
   "result": "pass",
   "evidence": "With no items, 'Nothing yet' is an EmptyState."
  },
  {
   "i": 17,
   "result": "pass",
   "evidence": "'Open Inbox' goes to the full activity list (#/inbox)."
  },
  {
   "i": 18,
   "result": "pass",
   "evidence": "While loading, 3 skeleton rows show."
  },
  {
   "i": 19,
   "result": "fail",
   "evidence": "Tab bar is Home, Find work, Chat, Veterans, More (Home has aria-current and 56px); spec wants Home, Contracts, Teaming, Community, Me.",
   "needs": "owner decision on the mobile tabs in assets/os-boot.js"
  },
  {
   "i": 20,
   "result": "fail",
   "evidence": "App bar has Inbox (44px, named, unread dot) and Private chats, Account; there is no Search button.",
   "needs": "shell: a Search icon button in the mobile app bar"
  },
  {
   "i": 21,
   "result": "pass",
   "evidence": "Bottom padding 104px is at least the 73px tab bar."
  },
  {
   "i": 22,
   "result": "pass",
   "evidence": "At text scale 1.3 there is no horizontal scroll or clipped element."
  },
  {
   "i": 23,
   "result": "pass",
   "evidence": "Each module has its own errorBox with Retry (assets/os-home.js errorBox)."
  }
 ]
}